Merge branches 'pci/msi', 'pci/iommu' and 'pci/cleanup' into next
* pci/msi: PCI/MSI: Fix memory leak in free_msi_irqs() * pci/iommu: PCI: Add function 1 DMA alias quirk for HighPoint RocketRaid 642L PCI: Add bridge DMA alias quirk for ITE bridge * pci/cleanup: PCI: Merge multi-line quoted strings PCI: Whitespace cleanup PCI: Move EXPORT_SYMBOL so it immediately follows function/variable
This commit is contained in:
@@ -48,8 +48,8 @@ static void quirk_mellanox_tavor(struct pci_dev *dev)
|
||||
{
|
||||
dev->broken_parity_status = 1; /* This device gives false positives */
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX,PCI_DEVICE_ID_MELLANOX_TAVOR,quirk_mellanox_tavor);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX,PCI_DEVICE_ID_MELLANOX_TAVOR_BRIDGE,quirk_mellanox_tavor);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX, PCI_DEVICE_ID_MELLANOX_TAVOR, quirk_mellanox_tavor);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX, PCI_DEVICE_ID_MELLANOX_TAVOR_BRIDGE, quirk_mellanox_tavor);
|
||||
|
||||
/* Deal with broken BIOSes that neglect to enable passive release,
|
||||
which can cause problems in combination with the 82441FX/PPro MTRRs */
|
||||
@@ -82,7 +82,7 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_p
|
||||
static void quirk_isa_dma_hangs(struct pci_dev *dev)
|
||||
{
|
||||
if (!isa_dma_bridge_buggy) {
|
||||
isa_dma_bridge_buggy=1;
|
||||
isa_dma_bridge_buggy = 1;
|
||||
dev_info(&dev->dev, "Activating ISA DMA hang workarounds\n");
|
||||
}
|
||||
}
|
||||
@@ -123,7 +123,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_TGP_LPC, quirk
|
||||
*/
|
||||
static void quirk_nopcipci(struct pci_dev *dev)
|
||||
{
|
||||
if ((pci_pci_problems & PCIPCI_FAIL)==0) {
|
||||
if ((pci_pci_problems & PCIPCI_FAIL) == 0) {
|
||||
dev_info(&dev->dev, "Disabling direct PCI/PCI transfers\n");
|
||||
pci_pci_problems |= PCIPCI_FAIL;
|
||||
}
|
||||
@@ -148,7 +148,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8151_0, quirk_nopci
|
||||
*/
|
||||
static void quirk_triton(struct pci_dev *dev)
|
||||
{
|
||||
if ((pci_pci_problems&PCIPCI_TRITON)==0) {
|
||||
if ((pci_pci_problems&PCIPCI_TRITON) == 0) {
|
||||
dev_info(&dev->dev, "Limiting direct PCI/PCI transfers\n");
|
||||
pci_pci_problems |= PCIPCI_TRITON;
|
||||
}
|
||||
@@ -163,8 +163,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82439TX, quirk_
|
||||
* Made according to a windows driver based patch by George E. Breese
|
||||
* see PCI Latency Adjust on http://www.viahardware.com/download/viatweak.shtm
|
||||
* and http://www.georgebreese.com/net/software/#PCI
|
||||
* Also see http://www.au-ja.org/review-kt133a-1-en.phtml for
|
||||
* the info on which Mr Breese based his work.
|
||||
* Also see http://www.au-ja.org/review-kt133a-1-en.phtml for
|
||||
* the info on which Mr Breese based his work.
|
||||
*
|
||||
* Updated based on further information from the site and also on
|
||||
* information provided by VIA
|
||||
@@ -177,14 +177,14 @@ static void quirk_vialatency(struct pci_dev *dev)
|
||||
a buggy southbridge */
|
||||
|
||||
p = pci_get_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, NULL);
|
||||
if (p!=NULL) {
|
||||
if (p != NULL) {
|
||||
/* 0x40 - 0x4f == 686B, 0x10 - 0x2f == 686A; thanks Dan Hollis */
|
||||
/* Check for buggy part revisions */
|
||||
if (p->revision < 0x40 || p->revision > 0x42)
|
||||
goto exit;
|
||||
} else {
|
||||
p = pci_get_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8231, NULL);
|
||||
if (p==NULL) /* No problem parts */
|
||||
if (p == NULL) /* No problem parts */
|
||||
goto exit;
|
||||
/* Check for buggy part revisions */
|
||||
if (p->revision < 0x10 || p->revision > 0x12)
|
||||
@@ -227,7 +227,7 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8361, quirk_viala
|
||||
*/
|
||||
static void quirk_viaetbf(struct pci_dev *dev)
|
||||
{
|
||||
if ((pci_pci_problems&PCIPCI_VIAETBF)==0) {
|
||||
if ((pci_pci_problems&PCIPCI_VIAETBF) == 0) {
|
||||
dev_info(&dev->dev, "Limiting direct PCI/PCI transfers\n");
|
||||
pci_pci_problems |= PCIPCI_VIAETBF;
|
||||
}
|
||||
@@ -236,7 +236,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C597_0, quirk_via
|
||||
|
||||
static void quirk_vsfx(struct pci_dev *dev)
|
||||
{
|
||||
if ((pci_pci_problems&PCIPCI_VSFX)==0) {
|
||||
if ((pci_pci_problems&PCIPCI_VSFX) == 0) {
|
||||
dev_info(&dev->dev, "Limiting direct PCI/PCI transfers\n");
|
||||
pci_pci_problems |= PCIPCI_VSFX;
|
||||
}
|
||||
@@ -251,7 +251,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576, quirk_vsfx)
|
||||
*/
|
||||
static void quirk_alimagik(struct pci_dev *dev)
|
||||
{
|
||||
if ((pci_pci_problems&PCIPCI_ALIMAGIK)==0) {
|
||||
if ((pci_pci_problems&PCIPCI_ALIMAGIK) == 0) {
|
||||
dev_info(&dev->dev, "Limiting direct PCI/PCI transfers\n");
|
||||
pci_pci_problems |= PCIPCI_ALIMAGIK|PCIPCI_TRITON;
|
||||
}
|
||||
@@ -265,7 +265,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1651, quirk_alimagi
|
||||
*/
|
||||
static void quirk_natoma(struct pci_dev *dev)
|
||||
{
|
||||
if ((pci_pci_problems&PCIPCI_NATOMA)==0) {
|
||||
if ((pci_pci_problems&PCIPCI_NATOMA) == 0) {
|
||||
dev_info(&dev->dev, "Limiting direct PCI/PCI transfers\n");
|
||||
pci_pci_problems |= PCIPCI_NATOMA;
|
||||
}
|
||||
@@ -315,8 +315,7 @@ static void quirk_cs5536_vsa(struct pci_dev *dev)
|
||||
if (pci_resource_len(dev, 0) != 8) {
|
||||
struct resource *res = &dev->resource[0];
|
||||
res->end = res->start + 8 - 1;
|
||||
dev_info(&dev->dev, "CS5536 ISA bridge bug detected "
|
||||
"(incorrect header); workaround applied.\n");
|
||||
dev_info(&dev->dev, "CS5536 ISA bridge bug detected (incorrect header); workaround applied\n");
|
||||
}
|
||||
}
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, quirk_cs5536_vsa);
|
||||
@@ -400,7 +399,8 @@ static void piix4_io_quirk(struct pci_dev *dev, const char *name, unsigned int p
|
||||
* let's get enough confirmation reports first.
|
||||
*/
|
||||
base &= -size;
|
||||
dev_info(&dev->dev, "%s PIO at %04x-%04x\n", name, base, base + size - 1);
|
||||
dev_info(&dev->dev, "%s PIO at %04x-%04x\n", name, base,
|
||||
base + size - 1);
|
||||
}
|
||||
|
||||
static void piix4_mem_quirk(struct pci_dev *dev, const char *name, unsigned int port, unsigned int enable)
|
||||
@@ -425,7 +425,8 @@ static void piix4_mem_quirk(struct pci_dev *dev, const char *name, unsigned int
|
||||
* reserve it, but let's get enough confirmation reports first.
|
||||
*/
|
||||
base &= -size;
|
||||
dev_info(&dev->dev, "%s MMIO at %04x-%04x\n", name, base, base + size - 1);
|
||||
dev_info(&dev->dev, "%s MMIO at %04x-%04x\n", name, base,
|
||||
base + size - 1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -668,8 +669,7 @@ static void quirk_xio2000a(struct pci_dev *dev)
|
||||
struct pci_dev *pdev;
|
||||
u16 command;
|
||||
|
||||
dev_warn(&dev->dev, "TI XIO2000a quirk detected; "
|
||||
"secondary bus fast back-to-back transfers disabled\n");
|
||||
dev_warn(&dev->dev, "TI XIO2000a quirk detected; secondary bus fast back-to-back transfers disabled\n");
|
||||
list_for_each_entry(pdev, &dev->subordinate->devices, bus_list) {
|
||||
pci_read_config_word(pdev, PCI_COMMAND, &command);
|
||||
if (command & PCI_COMMAND_FAST_BACK)
|
||||
@@ -703,7 +703,7 @@ static void quirk_via_ioapic(struct pci_dev *dev)
|
||||
tmp == 0 ? "Disa" : "Ena");
|
||||
|
||||
/* Offset 0x58: External APIC IRQ output control */
|
||||
pci_write_config_byte (dev, 0x58, tmp);
|
||||
pci_write_config_byte(dev, 0x58, tmp);
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_ioapic);
|
||||
DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_ioapic);
|
||||
@@ -761,8 +761,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, PCI_ANY_ID, quirk_ioapic_rmw);
|
||||
static void quirk_amd_8131_mmrbc(struct pci_dev *dev)
|
||||
{
|
||||
if (dev->subordinate && dev->revision <= 0x12) {
|
||||
dev_info(&dev->dev, "AMD8131 rev %x detected; "
|
||||
"disabling PCI-X MMRBC\n", dev->revision);
|
||||
dev_info(&dev->dev, "AMD8131 rev %x detected; disabling PCI-X MMRBC\n",
|
||||
dev->revision);
|
||||
dev->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MMRBC;
|
||||
}
|
||||
}
|
||||
@@ -916,12 +916,12 @@ static void quirk_amd_ordering(struct pci_dev *dev)
|
||||
{
|
||||
u32 pcic;
|
||||
pci_read_config_dword(dev, 0x4C, &pcic);
|
||||
if ((pcic&6)!=6) {
|
||||
if ((pcic & 6) != 6) {
|
||||
pcic |= 6;
|
||||
dev_warn(&dev->dev, "BIOS failed to enable PCI standards compliance; fixing this error\n");
|
||||
pci_write_config_dword(dev, 0x4C, pcic);
|
||||
pci_read_config_dword(dev, 0x84, &pcic);
|
||||
pcic |= (1<<23); /* Required in this mode */
|
||||
pcic |= (1 << 23); /* Required in this mode */
|
||||
pci_write_config_dword(dev, 0x84, pcic);
|
||||
}
|
||||
}
|
||||
@@ -937,7 +937,7 @@ DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_FE_GATE_700C
|
||||
*/
|
||||
static void quirk_dunord(struct pci_dev *dev)
|
||||
{
|
||||
struct resource *r = &dev->resource [1];
|
||||
struct resource *r = &dev->resource[1];
|
||||
|
||||
r->flags |= IORESOURCE_UNSET;
|
||||
r->start = 0;
|
||||
@@ -967,11 +967,13 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TOSHIBA, 0x605, quirk_transparent_bridge)
|
||||
static void quirk_mediagx_master(struct pci_dev *dev)
|
||||
{
|
||||
u8 reg;
|
||||
|
||||
pci_read_config_byte(dev, 0x41, ®);
|
||||
if (reg & 2) {
|
||||
reg &= ~2;
|
||||
dev_info(&dev->dev, "Fixup for MediaGX/Geode Slave Disconnect Boundary (0x41=0x%02x)\n", reg);
|
||||
pci_write_config_byte(dev, 0x41, reg);
|
||||
dev_info(&dev->dev, "Fixup for MediaGX/Geode Slave Disconnect Boundary (0x41=0x%02x)\n",
|
||||
reg);
|
||||
pci_write_config_byte(dev, 0x41, reg);
|
||||
}
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_PCI_MASTER, quirk_mediagx_master);
|
||||
@@ -1120,7 +1122,7 @@ static void asus_hides_smbus_hostbridge(struct pci_dev *dev)
|
||||
{
|
||||
if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_ASUSTEK)) {
|
||||
if (dev->device == PCI_DEVICE_ID_INTEL_82845_HB)
|
||||
switch(dev->subsystem_device) {
|
||||
switch (dev->subsystem_device) {
|
||||
case 0x8025: /* P4B-LX */
|
||||
case 0x8070: /* P4B */
|
||||
case 0x8088: /* P4B533 */
|
||||
@@ -1128,14 +1130,14 @@ static void asus_hides_smbus_hostbridge(struct pci_dev *dev)
|
||||
asus_hides_smbus = 1;
|
||||
}
|
||||
else if (dev->device == PCI_DEVICE_ID_INTEL_82845G_HB)
|
||||
switch(dev->subsystem_device) {
|
||||
switch (dev->subsystem_device) {
|
||||
case 0x80b1: /* P4GE-V */
|
||||
case 0x80b2: /* P4PE */
|
||||
case 0x8093: /* P4B533-V */
|
||||
asus_hides_smbus = 1;
|
||||
}
|
||||
else if (dev->device == PCI_DEVICE_ID_INTEL_82850_HB)
|
||||
switch(dev->subsystem_device) {
|
||||
switch (dev->subsystem_device) {
|
||||
case 0x8030: /* P4T533 */
|
||||
asus_hides_smbus = 1;
|
||||
}
|
||||
@@ -1175,7 +1177,7 @@ static void asus_hides_smbus_hostbridge(struct pci_dev *dev)
|
||||
}
|
||||
} else if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_HP)) {
|
||||
if (dev->device == PCI_DEVICE_ID_INTEL_82855PM_HB)
|
||||
switch(dev->subsystem_device) {
|
||||
switch (dev->subsystem_device) {
|
||||
case 0x088C: /* HP Compaq nc8000 */
|
||||
case 0x0890: /* HP Compaq nc6000 */
|
||||
asus_hides_smbus = 1;
|
||||
@@ -1192,20 +1194,20 @@ static void asus_hides_smbus_hostbridge(struct pci_dev *dev)
|
||||
case 0x12bf: /* HP xw4100 */
|
||||
asus_hides_smbus = 1;
|
||||
}
|
||||
} else if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG)) {
|
||||
if (dev->device == PCI_DEVICE_ID_INTEL_82855PM_HB)
|
||||
switch(dev->subsystem_device) {
|
||||
case 0xC00C: /* Samsung P35 notebook */
|
||||
asus_hides_smbus = 1;
|
||||
}
|
||||
} else if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG)) {
|
||||
if (dev->device == PCI_DEVICE_ID_INTEL_82855PM_HB)
|
||||
switch (dev->subsystem_device) {
|
||||
case 0xC00C: /* Samsung P35 notebook */
|
||||
asus_hides_smbus = 1;
|
||||
}
|
||||
} else if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_COMPAQ)) {
|
||||
if (dev->device == PCI_DEVICE_ID_INTEL_82855PM_HB)
|
||||
switch(dev->subsystem_device) {
|
||||
switch (dev->subsystem_device) {
|
||||
case 0x0058: /* Compaq Evo N620c */
|
||||
asus_hides_smbus = 1;
|
||||
}
|
||||
else if (dev->device == PCI_DEVICE_ID_INTEL_82810_IG3)
|
||||
switch(dev->subsystem_device) {
|
||||
switch (dev->subsystem_device) {
|
||||
case 0xB16C: /* Compaq Deskpro EP 401963-001 (PCA# 010174) */
|
||||
/* Motherboard doesn't have Host bridge
|
||||
* subvendor/subdevice IDs, therefore checking
|
||||
@@ -1213,7 +1215,7 @@ static void asus_hides_smbus_hostbridge(struct pci_dev *dev)
|
||||
asus_hides_smbus = 1;
|
||||
}
|
||||
else if (dev->device == PCI_DEVICE_ID_INTEL_82801DB_2)
|
||||
switch(dev->subsystem_device) {
|
||||
switch (dev->subsystem_device) {
|
||||
case 0x00b8: /* Compaq Evo D510 CMT */
|
||||
case 0x00b9: /* Compaq Evo D510 SFF */
|
||||
case 0x00ba: /* Compaq Evo D510 USDT */
|
||||
@@ -1261,7 +1263,8 @@ static void asus_hides_smbus_lpc(struct pci_dev *dev)
|
||||
pci_write_config_word(dev, 0xF2, val & (~0x8));
|
||||
pci_read_config_word(dev, 0xF2, &val);
|
||||
if (val & 0x8)
|
||||
dev_info(&dev->dev, "i801 SMBus device continues to play 'hide and seek'! 0x%x\n", val);
|
||||
dev_info(&dev->dev, "i801 SMBus device continues to play 'hide and seek'! 0x%x\n",
|
||||
val);
|
||||
else
|
||||
dev_info(&dev->dev, "Enabled i801 SMBus device\n");
|
||||
}
|
||||
@@ -1409,7 +1412,8 @@ static void asus_hides_ac97_lpc(struct pci_dev *dev)
|
||||
pci_write_config_byte(dev, 0x50, val & (~0xc0));
|
||||
pci_read_config_byte(dev, 0x50, &val);
|
||||
if (val & 0xc0)
|
||||
dev_info(&dev->dev, "Onboard AC97/MC97 devices continue to play 'hide and seek'! 0x%x\n", val);
|
||||
dev_info(&dev->dev, "Onboard AC97/MC97 devices continue to play 'hide and seek'! 0x%x\n",
|
||||
val);
|
||||
else
|
||||
dev_info(&dev->dev, "Enabled onboard AC97/MC97 devices\n");
|
||||
}
|
||||
@@ -1514,10 +1518,8 @@ static void quirk_alder_ioapic(struct pci_dev *pdev)
|
||||
|
||||
/* The next five BARs all seem to be rubbish, so just clean
|
||||
* them out */
|
||||
for (i=1; i < 6; i++) {
|
||||
for (i = 1; i < 6; i++)
|
||||
memset(&pdev->resource[i], 0, sizeof(pdev->resource[i]));
|
||||
}
|
||||
|
||||
}
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EESSC, quirk_alder_ioapic);
|
||||
#endif
|
||||
@@ -1552,7 +1554,7 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHV, quirk_pci
|
||||
* Some Intel PCI Express chipsets have trouble with downstream
|
||||
* device power management.
|
||||
*/
|
||||
static void quirk_intel_pcie_pm(struct pci_dev * dev)
|
||||
static void quirk_intel_pcie_pm(struct pci_dev *dev)
|
||||
{
|
||||
pci_pm_d3_delay = 120;
|
||||
dev->no_d1d2 = 1;
|
||||
@@ -1721,8 +1723,8 @@ static void quirk_disable_amd_8111_boot_interrupt(struct pci_dev *dev)
|
||||
|
||||
pci_read_config_word(dev, AMD_8111_PCI_IRQ_ROUTING, &pci_config_word);
|
||||
if (!pci_config_word) {
|
||||
dev_info(&dev->dev, "boot interrupts on device [%04x:%04x] "
|
||||
"already disabled\n", dev->vendor, dev->device);
|
||||
dev_info(&dev->dev, "boot interrupts on device [%04x:%04x] already disabled\n",
|
||||
dev->vendor, dev->device);
|
||||
return;
|
||||
}
|
||||
pci_write_config_word(dev, AMD_8111_PCI_IRQ_ROUTING, 0);
|
||||
@@ -1770,8 +1772,7 @@ static void quirk_plx_pci9050(struct pci_dev *dev)
|
||||
if (pci_resource_len(dev, bar) == 0x80 &&
|
||||
(pci_resource_start(dev, bar) & 0x80)) {
|
||||
struct resource *r = &dev->resource[bar];
|
||||
dev_info(&dev->dev,
|
||||
"Re-allocating PLX PCI 9050 BAR %u to length 256 to avoid bit 7 bug\n",
|
||||
dev_info(&dev->dev, "Re-allocating PLX PCI 9050 BAR %u to length 256 to avoid bit 7 bug\n",
|
||||
bar);
|
||||
r->flags |= IORESOURCE_UNSET;
|
||||
r->start = 0;
|
||||
@@ -1818,9 +1819,7 @@ static void quirk_netmos(struct pci_dev *dev)
|
||||
case PCI_DEVICE_ID_NETMOS_9845:
|
||||
case PCI_DEVICE_ID_NETMOS_9855:
|
||||
if (num_parallel) {
|
||||
dev_info(&dev->dev, "Netmos %04x (%u parallel, "
|
||||
"%u serial); changing class SERIAL to OTHER "
|
||||
"(use parport_serial)\n",
|
||||
dev_info(&dev->dev, "Netmos %04x (%u parallel, %u serial); changing class SERIAL to OTHER (use parport_serial)\n",
|
||||
dev->device, num_parallel, num_serial);
|
||||
dev->class = (PCI_CLASS_COMMUNICATION_OTHER << 8) |
|
||||
(dev->class & 0xff);
|
||||
@@ -1887,8 +1886,7 @@ static void quirk_e100_interrupt(struct pci_dev *dev)
|
||||
|
||||
cmd_hi = readb(csr + 3);
|
||||
if (cmd_hi == 0) {
|
||||
dev_warn(&dev->dev, "Firmware left e100 interrupts enabled; "
|
||||
"disabling\n");
|
||||
dev_warn(&dev->dev, "Firmware left e100 interrupts enabled; disabling\n");
|
||||
writeb(1, csr + 3);
|
||||
}
|
||||
|
||||
@@ -1958,8 +1956,7 @@ static void quirk_nvidia_ck804_pcie_aer_ext_cap(struct pci_dev *dev)
|
||||
if (pci_read_config_byte(dev, 0xf41, &b) == 0) {
|
||||
if (!(b & 0x20)) {
|
||||
pci_write_config_byte(dev, 0xf41, b | 0x20);
|
||||
dev_info(&dev->dev,
|
||||
"Linking AER extended capability\n");
|
||||
dev_info(&dev->dev, "Linking AER extended capability\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1997,8 +1994,7 @@ static void quirk_via_cx700_pci_parking_caching(struct pci_dev *dev)
|
||||
/* Turn off PCI Bus Parking */
|
||||
pci_write_config_byte(dev, 0x76, b ^ 0x40);
|
||||
|
||||
dev_info(&dev->dev,
|
||||
"Disabling VIA CX700 PCI parking\n");
|
||||
dev_info(&dev->dev, "Disabling VIA CX700 PCI parking\n");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2013,8 +2009,7 @@ static void quirk_via_cx700_pci_parking_caching(struct pci_dev *dev)
|
||||
/* Disable "Read FIFO Timer" */
|
||||
pci_write_config_byte(dev, 0x77, 0x0);
|
||||
|
||||
dev_info(&dev->dev,
|
||||
"Disabling VIA CX700 PCI caching\n");
|
||||
dev_info(&dev->dev, "Disabling VIA CX700 PCI caching\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2149,8 +2144,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8380_0, quirk_disab
|
||||
static void quirk_disable_msi(struct pci_dev *dev)
|
||||
{
|
||||
if (dev->subordinate) {
|
||||
dev_warn(&dev->dev, "MSI quirk detected; "
|
||||
"subordinate MSI disabled\n");
|
||||
dev_warn(&dev->dev, "MSI quirk detected; subordinate MSI disabled\n");
|
||||
dev->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MSI;
|
||||
}
|
||||
}
|
||||
@@ -2189,8 +2183,7 @@ static int msi_ht_cap_enabled(struct pci_dev *dev)
|
||||
u8 flags;
|
||||
|
||||
if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS,
|
||||
&flags) == 0)
|
||||
{
|
||||
&flags) == 0) {
|
||||
dev_info(&dev->dev, "Found %s HT MSI Mapping\n",
|
||||
flags & HT_MSI_FLAGS_ENABLE ?
|
||||
"enabled" : "disabled");
|
||||
@@ -2207,8 +2200,7 @@ static int msi_ht_cap_enabled(struct pci_dev *dev)
|
||||
static void quirk_msi_ht_cap(struct pci_dev *dev)
|
||||
{
|
||||
if (dev->subordinate && !msi_ht_cap_enabled(dev)) {
|
||||
dev_warn(&dev->dev, "MSI quirk detected; "
|
||||
"subordinate MSI disabled\n");
|
||||
dev_warn(&dev->dev, "MSI quirk detected; subordinate MSI disabled\n");
|
||||
dev->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MSI;
|
||||
}
|
||||
}
|
||||
@@ -2232,8 +2224,7 @@ static void quirk_nvidia_ck804_msi_ht_cap(struct pci_dev *dev)
|
||||
if (!pdev)
|
||||
return;
|
||||
if (!msi_ht_cap_enabled(dev) && !msi_ht_cap_enabled(pdev)) {
|
||||
dev_warn(&dev->dev, "MSI quirk detected; "
|
||||
"subordinate MSI disabled\n");
|
||||
dev_warn(&dev->dev, "MSI quirk detected; subordinate MSI disabled\n");
|
||||
dev->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MSI;
|
||||
}
|
||||
pci_dev_put(pdev);
|
||||
@@ -2279,8 +2270,7 @@ static void nvenet_msi_disable(struct pci_dev *dev)
|
||||
if (board_name &&
|
||||
(strstr(board_name, "P5N32-SLI PREMIUM") ||
|
||||
strstr(board_name, "P5N32-E SLI"))) {
|
||||
dev_info(&dev->dev,
|
||||
"Disabling msi for MCP55 NIC on P5N32-SLI\n");
|
||||
dev_info(&dev->dev, "Disabling msi for MCP55 NIC on P5N32-SLI\n");
|
||||
dev->no_msi = 1;
|
||||
}
|
||||
}
|
||||
@@ -2489,8 +2479,7 @@ static void __nv_msi_ht_cap_quirk(struct pci_dev *dev, int all)
|
||||
*/
|
||||
host_bridge = pci_get_bus_and_slot(0, PCI_DEVFN(0, 0));
|
||||
if (host_bridge == NULL) {
|
||||
dev_warn(&dev->dev,
|
||||
"nv_msi_ht_cap_quirk didn't locate host bridge\n");
|
||||
dev_warn(&dev->dev, "nv_msi_ht_cap_quirk didn't locate host bridge\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2817,8 +2806,7 @@ static void quirk_intel_mc_errata(struct pci_dev *dev)
|
||||
*/
|
||||
err = pci_read_config_word(dev, 0x48, &rcc);
|
||||
if (err) {
|
||||
dev_err(&dev->dev, "Error attempting to read the read "
|
||||
"completion coalescing register.\n");
|
||||
dev_err(&dev->dev, "Error attempting to read the read completion coalescing register\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2829,13 +2817,11 @@ static void quirk_intel_mc_errata(struct pci_dev *dev)
|
||||
|
||||
err = pci_write_config_word(dev, 0x48, rcc);
|
||||
if (err) {
|
||||
dev_err(&dev->dev, "Error attempting to write the read "
|
||||
"completion coalescing register.\n");
|
||||
dev_err(&dev->dev, "Error attempting to write the read completion coalescing register\n");
|
||||
return;
|
||||
}
|
||||
|
||||
pr_info_once("Read completion coalescing disabled due to hardware "
|
||||
"errata relating to 256B MPS.\n");
|
||||
pr_info_once("Read completion coalescing disabled due to hardware errata relating to 256B MPS\n");
|
||||
}
|
||||
/* Intel 5000 series memory controllers and ports 2-7 */
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x25c0, quirk_intel_mc_errata);
|
||||
@@ -2944,8 +2930,7 @@ static void disable_igfx_irq(struct pci_dev *dev)
|
||||
|
||||
/* Check if any interrupt line is still enabled */
|
||||
if (readl(regs + I915_DEIER_REG) != 0) {
|
||||
dev_warn(&dev->dev, "BIOS left Intel GPU interrupts enabled; "
|
||||
"disabling\n");
|
||||
dev_warn(&dev->dev, "BIOS left Intel GPU interrupts enabled; disabling\n");
|
||||
|
||||
writel(0, regs + I915_DEIER_REG);
|
||||
}
|
||||
@@ -3040,7 +3025,7 @@ void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev)
|
||||
{
|
||||
struct pci_fixup *start, *end;
|
||||
|
||||
switch(pass) {
|
||||
switch (pass) {
|
||||
case pci_fixup_early:
|
||||
start = __start_pci_fixups_early;
|
||||
end = __end_pci_fixups_early;
|
||||
@@ -3112,8 +3097,8 @@ static int __init pci_apply_final_quirks(void)
|
||||
if (!tmp || cls == tmp)
|
||||
continue;
|
||||
|
||||
printk(KERN_DEBUG "PCI: CLS mismatch (%u != %u), "
|
||||
"using %u bytes\n", cls << 2, tmp << 2,
|
||||
printk(KERN_DEBUG "PCI: CLS mismatch (%u != %u), using %u bytes\n",
|
||||
cls << 2, tmp << 2,
|
||||
pci_dfl_cache_line_size << 2);
|
||||
pci_cache_line_size = pci_dfl_cache_line_size;
|
||||
}
|
||||
@@ -3389,6 +3374,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x91a0,
|
||||
/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c49 */
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9230,
|
||||
quirk_dma_func1_alias);
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TTI, 0x0642,
|
||||
quirk_dma_func1_alias);
|
||||
/* https://bugs.gentoo.org/show_bug.cgi?id=497630 */
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_JMICRON,
|
||||
PCI_DEVICE_ID_JMICRON_JMB388_ESD,
|
||||
@@ -3416,6 +3403,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ASMEDIA, 0x1080,
|
||||
quirk_use_pcie_bridge_dma_alias);
|
||||
/* Tundra 8113, https://bugzilla.kernel.org/show_bug.cgi?id=44881#c43 */
|
||||
DECLARE_PCI_FIXUP_HEADER(0x10e3, 0x8113, quirk_use_pcie_bridge_dma_alias);
|
||||
/* ITE 8892, https://bugzilla.kernel.org/show_bug.cgi?id=73551 */
|
||||
DECLARE_PCI_FIXUP_HEADER(0x1283, 0x8892, quirk_use_pcie_bridge_dma_alias);
|
||||
|
||||
static struct pci_dev *pci_func_0_dma_source(struct pci_dev *dev)
|
||||
{
|
||||
|
Reference in New Issue
Block a user