summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2011-03-18 14:06:12 +0000
committerjhb <jhb@FreeBSD.org>2011-03-18 14:06:12 +0000
commit0abc92bd66b106598b7d136b194a25bb9d1392df (patch)
tree4c1a0ddccbf80878c3151536d506f8e3a6a17faa
parentb7b4bdf554b412ccfa5038047edf1c35bdd07d1a (diff)
downloadFreeBSD-src-0abc92bd66b106598b7d136b194a25bb9d1392df.zip
FreeBSD-src-0abc92bd66b106598b7d136b194a25bb9d1392df.tar.gz
Partially revert previous change. Drop the quirk to disable MSI for HT
chipsets that do not have an HT slave at 0:0:0:0. The Linux quirk is actually specific to Nvidia chipsets and the check I had added was in the wrong place. Prodded by: nathanw
-rw-r--r--sys/dev/pci/pci.c21
1 files changed, 2 insertions, 19 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
index 17e3a42..bbbb91b 100644
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -236,7 +236,7 @@ struct pci_quirk pci_quirks[] = {
struct devlist pci_devq;
uint32_t pci_generation;
uint32_t pci_numdevs = 0;
-static int ht_chipset, pcie_chipset, pcix_chipset;
+static int pcie_chipset, pcix_chipset;
/* sysctl vars */
SYSCTL_NODE(_hw, OID_AUTO, pci, CTLFLAG_RD, 0, "PCI bus tuning parameters");
@@ -616,19 +616,9 @@ pci_read_extcap(device_t pcib, pcicfgregs *cfg)
/* Determine HT-specific capability type. */
val = REG(ptr + PCIR_HT_COMMAND, 2);
- if ((val & 0xe000) == PCIM_HTCAP_SLAVE) {
+ if ((val & 0xe000) == PCIM_HTCAP_SLAVE)
cfg->ht.ht_slave = ptr;
- /*
- * If device 0:0:0:0 is an HT slave,
- * then this is an HT chipset and MSI
- * should be enabled for HT devices.
- */
- if (cfg->domain == 0 && cfg->bus == 0 &&
- cfg->slot == 0 && cfg->func == 0)
- ht_chipset = 1;
- }
-
#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__)
switch (val & PCIM_HTCMD_CAP_MASK) {
case PCIM_HTCAP_MSI_MAPPING:
@@ -1869,13 +1859,6 @@ pci_msi_device_blacklisted(device_t dev)
q->type == PCI_QUIRK_DISABLE_MSI)
return (1);
}
-
- /*
- * Blacklist HyperTransport devices if the device at 0:0:0:0
- * is not a HyperTransport slave.
- */
- if (!ht_chipset && pci_find_extcap(dev, PCIY_HT, NULL) == 0)
- return (1);
return (0);
}
OpenPOWER on IntegriCloud