aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/pci/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/pci/common.c')
-rw-r--r--arch/x86/pci/common.c32
1 files changed, 28 insertions, 4 deletions
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index b67732bbb85a..82d22fc601ae 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -14,8 +14,7 @@
14#include <asm/segment.h> 14#include <asm/segment.h>
15#include <asm/io.h> 15#include <asm/io.h>
16#include <asm/smp.h> 16#include <asm/smp.h>
17 17#include <asm/pci_x86.h>
18#include "pci.h"
19 18
20unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 | 19unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 |
21 PCI_PROBE_MMCONF; 20 PCI_PROBE_MMCONF;
@@ -23,6 +22,12 @@ unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 |
23unsigned int pci_early_dump_regs; 22unsigned int pci_early_dump_regs;
24static int pci_bf_sort; 23static int pci_bf_sort;
25int pci_routeirq; 24int pci_routeirq;
25int noioapicquirk;
26#ifdef CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS
27int noioapicreroute = 0;
28#else
29int noioapicreroute = 1;
30#endif
26int pcibios_last_bus = -1; 31int pcibios_last_bus = -1;
27unsigned long pirq_table_addr; 32unsigned long pirq_table_addr;
28struct pci_bus *pci_root_bus; 33struct pci_bus *pci_root_bus;
@@ -519,6 +524,17 @@ char * __devinit pcibios_setup(char *str)
519 } else if (!strcmp(str, "skip_isa_align")) { 524 } else if (!strcmp(str, "skip_isa_align")) {
520 pci_probe |= PCI_CAN_SKIP_ISA_ALIGN; 525 pci_probe |= PCI_CAN_SKIP_ISA_ALIGN;
521 return NULL; 526 return NULL;
527 } else if (!strcmp(str, "noioapicquirk")) {
528 noioapicquirk = 1;
529 return NULL;
530 } else if (!strcmp(str, "ioapicreroute")) {
531 if (noioapicreroute != -1)
532 noioapicreroute = 0;
533 return NULL;
534 } else if (!strcmp(str, "noioapicreroute")) {
535 if (noioapicreroute != -1)
536 noioapicreroute = 1;
537 return NULL;
522 } 538 }
523 return str; 539 return str;
524} 540}
@@ -535,17 +551,25 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
535 if ((err = pci_enable_resources(dev, mask)) < 0) 551 if ((err = pci_enable_resources(dev, mask)) < 0)
536 return err; 552 return err;
537 553
538 if (!dev->msi_enabled) 554 if (!pci_dev_msi_enabled(dev))
539 return pcibios_enable_irq(dev); 555 return pcibios_enable_irq(dev);
540 return 0; 556 return 0;
541} 557}
542 558
543void pcibios_disable_device (struct pci_dev *dev) 559void pcibios_disable_device (struct pci_dev *dev)
544{ 560{
545 if (!dev->msi_enabled && pcibios_disable_irq) 561 if (!pci_dev_msi_enabled(dev) && pcibios_disable_irq)
546 pcibios_disable_irq(dev); 562 pcibios_disable_irq(dev);
547} 563}
548 564
565int pci_ext_cfg_avail(struct pci_dev *dev)
566{
567 if (raw_pci_ext_ops)
568 return 1;
569 else
570 return 0;
571}
572
549struct pci_bus * __devinit pci_scan_bus_on_node(int busno, struct pci_ops *ops, int node) 573struct pci_bus * __devinit pci_scan_bus_on_node(int busno, struct pci_ops *ops, int node)
550{ 574{
551 struct pci_bus *bus = NULL; 575 struct pci_bus *bus = NULL;