diff mbox

[BUG] Bisected Problem with LSI PCI FC Adapter

Message ID 1410691491-18000-1-git-send-email-andreas.noever@gmail.com (mailing list archive)
State New, archived
Delegated to: Bjorn Helgaas
Headers show

Commit Message

Andreas Noever Sept. 14, 2014, 10:44 a.m. UTC
This is an implementation of fix 1 (Add a quirk to fix the _CRS information
based on what amd_bus.c read from the hardware) which makes pci=nocrs ignore bus numbers from crs.

If this works then we can add the board to the crs blacklist (Dirk can you attach the output of dmidecode to the bugzilla report?).



---
 arch/x86/pci/acpi.c     |  7 +++----
 arch/x86/pci/bus_numa.c | 12 +-----------
 2 files changed, 4 insertions(+), 15 deletions(-)

Comments

Dirk Gouders Sept. 14, 2014, 11:40 a.m. UTC | #1
Andreas Noever <andreas.noever@gmail.com> writes:

> This is an implementation of fix 1 (Add a quirk to fix the _CRS information
> based on what amd_bus.c read from the hardware) which makes pci=nocrs ignore bus numbers from crs.
>
> If this works then we can add the board to the crs blacklist (Dirk can you attach the output of dmidecode to the bugzilla report?).

I attached the information to the bugzilla report.

Do you want me to test this fix as is or should I wait (e.g. for an
updated crs blacklist)?

Dirk

>
>
>
> ---
>  arch/x86/pci/acpi.c     |  7 +++----
>  arch/x86/pci/bus_numa.c | 12 +-----------
>  2 files changed, 4 insertions(+), 15 deletions(-)
>
> diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
> index cfd1b13..b073948 100644
> --- a/arch/x86/pci/acpi.c
> +++ b/arch/x86/pci/acpi.c
> @@ -522,15 +522,14 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
>  	} else {
>  		probe_pci_root_info(info, device, busnum, domain);
>  
> -		/* insert busn res at first */
> -		pci_add_resource(&resources,  &root->secondary);
>  		/*
>  		 * _CRS with no apertures is normal, so only fall back to
>  		 * defaults or native bridge info if we're ignoring _CRS.
>  		 */
> -		if (pci_use_crs)
> +		if (pci_use_crs) {
> +			pci_add_resource(&resources,  &root->secondary);
>  			add_resources(info, &resources);
> -		else {
> +		} else {
>  			free_pci_root_info_res(info);
>  			x86_pci_root_bus_resources(busnum, &resources);
>  		}
> diff --git a/arch/x86/pci/bus_numa.c b/arch/x86/pci/bus_numa.c
> index f3a2cfc..b735d0e 100644
> --- a/arch/x86/pci/bus_numa.c
> +++ b/arch/x86/pci/bus_numa.c
> @@ -31,8 +31,6 @@ void x86_pci_root_bus_resources(int bus, struct list_head *resources)
>  {
>  	struct pci_root_info *info = x86_find_pci_root_info(bus);
>  	struct pci_root_res *root_res;
> -	struct pci_host_bridge_window *window;
> -	bool found = false;
>  
>  	if (!info)
>  		goto default_resources;
> @@ -40,15 +38,7 @@ void x86_pci_root_bus_resources(int bus, struct list_head *resources)
>  	printk(KERN_DEBUG "PCI: root bus %02x: hardware-probed resources\n",
>  	       bus);
>  
> -	/* already added by acpi ? */
> -	list_for_each_entry(window, resources, list)
> -		if (window->res->flags & IORESOURCE_BUS) {
> -			found = true;
> -			break;
> -		}
> -
> -	if (!found)
> -		pci_add_resource(resources, &info->busn);
> +	pci_add_resource(resources, &info->busn);
>  
>  	list_for_each_entry(root_res, &info->resources, list) {
>  		struct resource *res;
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
index cfd1b13..b073948 100644
--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -522,15 +522,14 @@  struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
 	} else {
 		probe_pci_root_info(info, device, busnum, domain);
 
-		/* insert busn res at first */
-		pci_add_resource(&resources,  &root->secondary);
 		/*
 		 * _CRS with no apertures is normal, so only fall back to
 		 * defaults or native bridge info if we're ignoring _CRS.
 		 */
-		if (pci_use_crs)
+		if (pci_use_crs) {
+			pci_add_resource(&resources,  &root->secondary);
 			add_resources(info, &resources);
-		else {
+		} else {
 			free_pci_root_info_res(info);
 			x86_pci_root_bus_resources(busnum, &resources);
 		}
diff --git a/arch/x86/pci/bus_numa.c b/arch/x86/pci/bus_numa.c
index f3a2cfc..b735d0e 100644
--- a/arch/x86/pci/bus_numa.c
+++ b/arch/x86/pci/bus_numa.c
@@ -31,8 +31,6 @@  void x86_pci_root_bus_resources(int bus, struct list_head *resources)
 {
 	struct pci_root_info *info = x86_find_pci_root_info(bus);
 	struct pci_root_res *root_res;
-	struct pci_host_bridge_window *window;
-	bool found = false;
 
 	if (!info)
 		goto default_resources;
@@ -40,15 +38,7 @@  void x86_pci_root_bus_resources(int bus, struct list_head *resources)
 	printk(KERN_DEBUG "PCI: root bus %02x: hardware-probed resources\n",
 	       bus);
 
-	/* already added by acpi ? */
-	list_for_each_entry(window, resources, list)
-		if (window->res->flags & IORESOURCE_BUS) {
-			found = true;
-			break;
-		}
-
-	if (!found)
-		pci_add_resource(resources, &info->busn);
+	pci_add_resource(resources, &info->busn);
 
 	list_for_each_entry(root_res, &info->resources, list) {
 		struct resource *res;