diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2010-02-16 18:16:28 +1100 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2010-02-16 18:16:28 +1100 |
commit | b766a27a403e5961d27febf13347bbf8ebed2b8d (patch) | |
tree | 020562303f3f2b62d10d08c904735eaec735d3af | |
parent | 52a9977058aa338cdbc35ad20b5e820813f4045d (diff) |
Revert "x86/PCI: use host bridge _CRS info by default on 2008 and newer machines"
This reverts commit 6b673390ae99fbaeeafc40a6e42ba97e1beada0b.
-rw-r--r-- | Documentation/kernel-parameters.txt | 8 | ||||
-rw-r--r-- | arch/ia64/include/asm/acpi.h | 1 | ||||
-rw-r--r-- | arch/x86/include/asm/pci_x86.h | 1 | ||||
-rw-r--r-- | arch/x86/pci/acpi.c | 53 | ||||
-rw-r--r-- | arch/x86/pci/common.c | 3 | ||||
-rw-r--r-- | drivers/acpi/pci_root.c | 1 | ||||
-rw-r--r-- | include/acpi/acpi_drivers.h | 1 |
7 files changed, 8 insertions, 60 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 5056c4662a5d..c496dfafb819 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -1988,12 +1988,8 @@ and is between 256 and 4096 characters. It is defined in the file IRQ routing is enabled. noacpi [X86] Do not use ACPI for IRQ routing or for PCI scanning. - use_crs [X86] Use PCI host bridge window information - from ACPI. On BIOSes from 2008 or later, this - is enabled by default. If you need to use this, - please report a bug. - nocrs [X86] Ignore PCI host bridge windows from ACPI. - If you need to use this, please report a bug. + use_crs [X86] Use _CRS for PCI resource + allocation. routeirq Do IRQ routing for all PCI devices. This is normally done in pci_enable_device(), so this option is a temporary workaround diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h index 7f2d7f2d3e2a..7ae58892ba8d 100644 --- a/arch/ia64/include/asm/acpi.h +++ b/arch/ia64/include/asm/acpi.h @@ -97,7 +97,6 @@ ia64_acpi_release_global_lock (unsigned int *lock) #endif #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */ static inline void disable_acpi(void) { } -static inline void pci_acpi_crs_quirks(void) { } const char *acpi_get_sysname (void); int acpi_request_vector (u32 int_type); diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h index 2692cdcc7068..cb39be7416d4 100644 --- a/arch/x86/include/asm/pci_x86.h +++ b/arch/x86/include/asm/pci_x86.h @@ -29,7 +29,6 @@ #define PCI_CHECK_ENABLE_AMD_MMCONF 0x20000 #define PCI_HAS_IO_ECS 0x40000 #define PCI_NOASSIGN_ROMS 0x80000 -#define PCI_ROOT_NO_CRS 0x100000 extern unsigned int pci_probe; extern unsigned long pirq_table_addr; diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c index 5f11ff6f5389..a2f8cdb8c1d5 100644 --- a/arch/x86/pci/acpi.c +++ b/arch/x86/pci/acpi.c @@ -15,51 +15,6 @@ struct pci_root_info { int busnum; }; -static bool pci_use_crs = true; - -static int __init set_use_crs(const struct dmi_system_id *id) -{ - pci_use_crs = true; - return 0; -} - -static const struct dmi_system_id pci_use_crs_table[] __initconst = { - /* http://bugzilla.kernel.org/show_bug.cgi?id=14183 */ - { - .callback = set_use_crs, - .ident = "IBM System x3800", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "IBM"), - DMI_MATCH(DMI_PRODUCT_NAME, "x3800"), - }, - }, - {} -}; - -void __init pci_acpi_crs_quirks(void) -{ - int year; - - if (dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL) && year < 2008) - pci_use_crs = false; - - dmi_check_system(pci_use_crs_table); - - /* - * If the user specifies "pci=use_crs" or "pci=nocrs" explicitly, that - * takes precedence over anything we figured out above. - */ - if (pci_probe & PCI_ROOT_NO_CRS) - pci_use_crs = false; - else if (pci_probe & PCI_USE__CRS) - pci_use_crs = true; - - printk(KERN_INFO "PCI: %s host bridge windows from ACPI; " - "if necessary, use \"pci=%s\" and report a bug\n", - pci_use_crs ? "Using" : "Ignoring", - pci_use_crs ? "nocrs" : "use_crs"); -} - static acpi_status resource_to_addr(struct acpi_resource *resource, struct acpi_resource_address64 *addr) @@ -151,7 +106,7 @@ setup_resource(struct acpi_resource *acpi_res, void *data) res->child = NULL; align_resource(info->bridge, res); - if (!pci_use_crs) { + if (!(pci_probe & PCI_USE__CRS)) { dev_printk(KERN_DEBUG, &info->bridge->dev, "host bridge window %pR (ignored)\n", res); return AE_OK; @@ -182,8 +137,12 @@ get_current_resources(struct acpi_device *device, int busnum, struct pci_root_info info; size_t size; - if (pci_use_crs) + if (pci_probe & PCI_USE__CRS) pci_bus_remove_resources(bus); + else + dev_info(&device->dev, + "ignoring host bridge windows from ACPI; " + "boot with \"pci=use_crs\" to use them\n"); info.bridge = device; info.bus = bus; diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index 3736176acaab..d2552c68e94d 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c @@ -520,9 +520,6 @@ char * __devinit pcibios_setup(char *str) } else if (!strcmp(str, "use_crs")) { pci_probe |= PCI_USE__CRS; return NULL; - } else if (!strcmp(str, "nocrs")) { - pci_probe |= PCI_ROOT_NO_CRS; - return NULL; } else if (!strcmp(str, "earlydump")) { pci_early_dump_regs = 1; return NULL; diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index 4a46051a831e..64ae2f2a209a 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c @@ -566,7 +566,6 @@ static int __init acpi_pci_root_init(void) if (acpi_pci_disabled) return 0; - pci_acpi_crs_quirks(); if (acpi_bus_register_driver(&acpi_pci_root_driver) < 0) return -ENODEV; diff --git a/include/acpi/acpi_drivers.h b/include/acpi/acpi_drivers.h index 3a4767c01c5f..f4906f6568d4 100644 --- a/include/acpi/acpi_drivers.h +++ b/include/acpi/acpi_drivers.h @@ -104,7 +104,6 @@ int acpi_pci_bind_root(struct acpi_device *device); struct pci_bus *pci_acpi_scan_root(struct acpi_device *device, int domain, int bus); -void pci_acpi_crs_quirks(void); /* -------------------------------------------------------------------------- Processor |