From: Mathias Kresin Date: Sat, 25 Mar 2017 11:18:56 +0000 (+0100) Subject: kernel: update MIPS pci fix to the accepted version X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=136718a3d91bb392de8bc04d9fd59d86b4f460c0;p=openwrt%2Fstaging%2Frobimarko.git 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 --- diff --git a/target/linux/generic/patches-4.9/170-MIPS-PCI-add-controllers-before-the-specified-head.patch b/target/linux/generic/patches-4.9/170-MIPS-PCI-add-controllers-before-the-specified-head.patch new file mode 100644 index 0000000000..b6db663fc2 --- /dev/null +++ b/target/linux/generic/patches-4.9/170-MIPS-PCI-add-controllers-before-the-specified-head.patch @@ -0,0 +1,31 @@ +From: Mathias Kresin +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 +--- + 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. diff --git a/target/linux/generic/patches-4.9/170-MIPS-PCI-scan-PCI-controllers-in-reverse-order.patch b/target/linux/generic/patches-4.9/170-MIPS-PCI-scan-PCI-controllers-in-reverse-order.patch deleted file mode 100644 index 74b54e93aa..0000000000 --- a/target/linux/generic/patches-4.9/170-MIPS-PCI-scan-PCI-controllers-in-reverse-order.patch +++ /dev/null @@ -1,31 +0,0 @@ -From: Mathias Kresin -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 ---- - 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); diff --git a/target/linux/lantiq/patches-4.9/0001-MIPS-lantiq-add-pcie-driver.patch b/target/linux/lantiq/patches-4.9/0001-MIPS-lantiq-add-pcie-driver.patch index 16d3f558bc..59d29d838b 100644 --- a/target/linux/lantiq/patches-4.9/0001-MIPS-lantiq-add-pcie-driver.patch +++ b/target/linux/lantiq/patches-4.9/0001-MIPS-lantiq-add-pcie-driver.patch @@ -4143,7 +4143,7 @@ Signed-off-by: John Crispin + --- 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 + 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) {