aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/pci/pci.c
diff options
context:
space:
mode:
authorMarius Strobl <marius@FreeBSD.org>2012-02-24 00:47:14 +0000
committerMarius Strobl <marius@FreeBSD.org>2012-02-24 00:47:14 +0000
commit3760d42a59b80da78c2bf0d330dada2da34a39ed (patch)
tree1c0e606292e5751af9554dd2324572ec364782a1 /sys/dev/pci/pci.c
parentf24ed78b182461807b544d75cd7124517fc9ce7d (diff)
Notes
Diffstat (limited to 'sys/dev/pci/pci.c')
-rw-r--r--sys/dev/pci/pci.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
index b4b67fb8969f..e120dbc67a28 100644
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -73,7 +73,6 @@ __FBSDID("$FreeBSD$");
#define PCIR_IS_BIOS(cfg, reg) \
(((cfg)->hdrtype == PCIM_HDRTYPE_NORMAL && reg == PCIR_BIOS) || \
((cfg)->hdrtype == PCIM_HDRTYPE_BRIDGE && reg == PCIR_BIOS_1))
-
static pci_addr_t pci_mapbase(uint64_t mapreg);
static const char *pci_maptype(uint64_t mapreg);
@@ -171,7 +170,7 @@ static device_method_t pci_methods[] = {
DEVMETHOD(pci_msi_count, pci_msi_count_method),
DEVMETHOD(pci_msix_count, pci_msix_count_method),
- { 0, 0 }
+ DEVMETHOD_END
};
DEFINE_CLASS_0(pci, pci_driver, pci_methods, 0);
@@ -183,7 +182,6 @@ MODULE_VERSION(pci, 1);
static char *pci_vendordata;
static size_t pci_vendordata_size;
-
struct pci_quirk {
uint32_t devid; /* Vendor/device of the card */
int type;
@@ -194,7 +192,7 @@ struct pci_quirk {
int arg2;
};
-struct pci_quirk pci_quirks[] = {
+static const struct pci_quirk const pci_quirks[] = {
/* The Intel 82371AB and 82443MX has a map register at offset 0x90. */
{ 0x71138086, PCI_QUIRK_MAP_REG, 0x90, 0 },
{ 0x719b8086, PCI_QUIRK_MAP_REG, 0x90, 0 },
@@ -227,6 +225,12 @@ struct pci_quirk pci_quirks[] = {
{ 0x74501022, PCI_QUIRK_DISABLE_MSI, 0, 0 },
/*
+ * MSI-X doesn't work with at least LSI SAS1068E passed through by
+ * VMware.
+ */
+ { 0x079015ad, PCI_QUIRK_DISABLE_MSI, 0, 0 },
+
+ /*
* Some virtualization environments emulate an older chipset
* but support MSI just fine. QEMU uses the Intel 82440.
*/
@@ -724,7 +728,6 @@ pci_read_cap(device_t pcib, pcicfgregs *cfg)
}
}
-
#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__)
/*
* Enable the MSI mapping window for all HyperTransport
@@ -1873,7 +1876,7 @@ pci_remap_intr_method(device_t bus, device_t dev, u_int irq)
int
pci_msi_device_blacklisted(device_t dev)
{
- struct pci_quirk *q;
+ const struct pci_quirk *q;
if (!pci_honor_msi_blacklist)
return (0);
@@ -1893,7 +1896,7 @@ pci_msi_device_blacklisted(device_t dev)
static int
pci_msi_vm_chipset(device_t dev)
{
- struct pci_quirk *q;
+ const struct pci_quirk *q;
for (q = &pci_quirks[0]; q->devid; q++) {
if (q->devid == pci_get_devid(dev) &&
@@ -3023,7 +3026,7 @@ pci_add_resources(device_t bus, device_t dev, int force, uint32_t prefetchmask)
struct pci_devinfo *dinfo = device_get_ivars(dev);
pcicfgregs *cfg = &dinfo->cfg;
struct resource_list *rl = &dinfo->resources;
- struct pci_quirk *q;
+ const struct pci_quirk *q;
int i;
/* ATA devices needs special map treatment */
@@ -3864,7 +3867,6 @@ pci_write_ivar(device_t dev, device_t child, int which, uintptr_t value)
}
}
-
#include "opt_ddb.h"
#ifdef DDB
#include <ddb/ddb.h>
@@ -4021,7 +4023,6 @@ out:;
return (res);
}
-
struct resource *
pci_alloc_resource(device_t dev, device_t child, int type, int *rid,
u_long start, u_long end, u_long count, u_int flags)