kernel: update MIPS pci fix to the accepted version

Fix the list order instead of adjusting the controller scan order.
Revert the former required changes to the lantiq PCIe driver.

Signed-off-by: Mathias Kresin <dev@kresin.me>
v19.07.3_mercusys_ac12_duma
Mathias Kresin 7 years ago
parent 813efe57e4
commit 136718a3d9

@ -0,0 +1,31 @@
From: Mathias Kresin <dev@kresin.me>
Date: Sun, 26 Mar 2017 19:05:36 +0200
Subject: MIPS: PCI: add controllers before the specified head
With commit 23dac14d058f ("MIPS: PCI: Use struct list_head lists") new
controllers are added after the specified head where they were added
before the specified head previously.
Use list_add_tail to restore the former order.
This patches fixes the following PCI error on lantiq:
pci 0000:01:00.0: BAR 0: error updating (0x1c000004 != 0x000000)
Fixes: 23dac14d058f ("MIPS: PCI: Use struct list_head lists")
Signed-off-by: Mathias Kresin <dev@kresin.me>
---
arch/mips/pci/pci-legacy.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/mips/pci/pci-legacy.c
+++ b/arch/mips/pci/pci-legacy.c
@@ -190,7 +190,7 @@ void register_pci_controller(struct pci_
}
INIT_LIST_HEAD(&hose->list);
- list_add(&hose->list, &controllers);
+ list_add_tail(&hose->list, &controllers);
/*
* Do not panic here but later - this might happen before console init.

@ -1,31 +0,0 @@
From: Mathias Kresin <dev@kresin.me>
Date: Tue, 14 Mar 2017 22:12:12 +0100
Subject: [PATCH v2] MIPS: PCI: scan PCI controllers in reverse order
Commit 23dac14d058f ("MIPS: PCI: Use struct list_head lists") changed
the controller list from reverse to straight order without taking care
of the changed order for the scan of the recorded PCI controllers.
Traverse the list in reverse order to restore the former behaviour.
This patches fixes the following PCI error on lantiq:
pci 0000:01:00.0: BAR 0: error updating (0x1c000004 != 0x000000)
Fixes: 23dac14d058f ("MIPS: PCI: Use struct list_head lists")
Signed-off-by: Mathias Kresin <dev@kresin.me>
---
arch/mips/pci/pci-legacy.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/mips/pci/pci-legacy.c
+++ b/arch/mips/pci/pci-legacy.c
@@ -222,7 +222,7 @@ static int __init pcibios_init(void)
struct pci_controller *hose;
/* Scan all of the recorded PCI controllers. */
- list_for_each_entry(hose, &controllers, list)
+ list_for_each_entry_reverse(hose, &controllers, list)
pcibios_scanbus(hose);
pci_fixup_irqs(pci_common_swizzle, pcibios_map_irq);

@ -4143,7 +4143,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+
--- a/arch/mips/pci/pci-legacy.c
+++ b/arch/mips/pci/pci-legacy.c
@@ -300,3 +300,31 @@ char *__init pcibios_setup(char *str)
@@ -300,3 +300,30 @@ char *__init pcibios_setup(char *str)
return pcibios_plat_setup(str);
return str;
}
@ -4164,8 +4164,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+ int bus_nr = 0;
+ struct pci_controller *hose;
+
+ if (!list_empty(&controllers))
+ hose = list_last_entry(&controllers, struct pci_controller, list);
+ hose = list_first_entry_or_null(&controllers, struct pci_controller, list);
+
+ if (hose != NULL) {
+ if (hose->bus != NULL) {

Loading…
Cancel
Save