diff --git a/build_patches/openwrt/0200-mpc85xx-Drop-pci-aliases-to-avoid-domain-changes.patch b/build_patches/openwrt/0200-mpc85xx-Drop-pci-aliases-to-avoid-domain-changes.patch new file mode 100644 index 0000000..1e34b07 --- /dev/null +++ b/build_patches/openwrt/0200-mpc85xx-Drop-pci-aliases-to-avoid-domain-changes.patch @@ -0,0 +1,158 @@ +From 7f4b4c29f3489697dca7495216460d0ed5023e02 Mon Sep 17 00:00:00 2001 +From: Martin Kennedy +Date: Mon, 29 Aug 2022 20:47:24 -0400 +Subject: [PATCH] mpc85xx: Drop pci aliases to avoid domain changes + +As of upstream Linux commit 0fe1e96fef0a ("powerpc/pci: Prefer PCI +domain assignment via DT 'linux,pci-domain' and alias"), the PCIe +domain address is no longer numbered by the lowest 16 bits of the PCI +register address after a fallthrough. Instead of the fallthrough, the +enumeration process accepts the alias ID (as determined by +`of_alias_scan()`). This causes e.g.: + +9000:00:00.0 PCI bridge: Freescale Semiconductor Inc P1020E (rev 11) +9000:01:00.0 Network controller: Qualcomm Atheros AR958x 802.11abgn ... + +to become + +0000:00:00.0 PCI bridge: Freescale Semiconductor Inc P1020E (rev 11) +0000:01:00.0 Network controller: Qualcomm Atheros AR958x 802.11abgn ... + +... which then causes the sysfs path of the netdev to change, +invalidating the `wifi_device.path`s enumerated in +`/etc/config/wireless`. + +One other solution might be to migrate the uci configuration, as was +done for mvebu in commit 0bd5aa89fcf2 ("mvebu: Migrate uci config to +new PCIe path"). However, there are concerns that the sysfs path will +change once again once some upstream patches[^2][^3] are merged and +backported (and `CONFIG_PPC_PCI_BUS_NUM_DOMAIN_DEPENDENT` is enabled). + +Instead, remove the aliases and allow the fallthrough to continue for +now. We will provide a migration in a later release. + +This was first reported as a Github issue[^1]. + +[^1]: https://github.com/openwrt/openwrt/issues/10530 +[^2]: https://lore.kernel.org/linuxppc-dev/20220706104308.5390-1-pali@kernel.org/t/#u +[^3]: https://lore.kernel.org/linuxppc-dev/20220706101043.4867-1-pali@kernel.org/ + +Fixes: #10530 +Tested-by: Martin Kennedy +[Tested on the Aerohive HiveAP 330 and Extreme Networks WS-AP3825i] +Signed-off-by: Martin Kennedy +--- + .../files/arch/powerpc/boot/dts/hiveap-330.dts | 13 +++++++++++++ + .../mpc85xx/files/arch/powerpc/boot/dts/panda.dts | 14 ++++++++++++++ + .../files/arch/powerpc/boot/dts/red-15w-rev1.dts | 14 ++++++++++++++ + .../files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts | 13 +++++++++++++ + .../files/arch/powerpc/boot/dts/ws-ap3710i.dts | 13 +++++++++++++ + 6 files changed, 80 insertions(+) + +diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts +index ccf60eaeed0e1..d6a8da84ef66d 100644 +--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts ++++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts +@@ -300,3 +300,16 @@ + }; + }; + /include/ "fsl/p1020si-post.dtsi" ++ ++/* ++ * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses ++ * aliases to determine PCI domain numbers, drop aliases so as not to ++ * change the sysfs path of our wireless netdevs. ++ */ ++ ++/ { ++ aliases { ++ /delete-property/ pci0; ++ /delete-property/ pci1; ++ }; ++}; +diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/panda.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/panda.dts +index baaa4a43fd559..9be822f7bb8ac 100644 +--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/panda.dts ++++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/panda.dts +@@ -265,3 +265,17 @@ + }; + }; + /include/ "fsl/p1020si-post.dtsi" ++ ++/* ++ * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses ++ * aliases to determine PCI domain numbers, drop aliases so as not to ++ * change the sysfs path of our wireless netdevs. ++ */ ++ ++/ { ++ aliases { ++ /delete-property/ pci0; ++ /delete-property/ pci1; ++ }; ++}; ++ +diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts +index 1fd6a4aa49713..db35602b94b5b 100644 +--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts ++++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts +@@ -214,3 +214,17 @@ + }; + + /include/ "fsl/p1010si-post.dtsi" ++ ++/* ++ * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses ++ * aliases to determine PCI domain numbers, drop aliases so as not to ++ * change the sysfs path of our wireless netdevs. ++ */ ++ ++/ { ++ aliases { ++ /delete-property/ pci0; ++ /delete-property/ pci1; ++ }; ++}; ++ +diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts +index fbe1c0ee705d2..12281808aa5b6 100644 +--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts ++++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts +@@ -302,3 +302,16 @@ + /delete-node/ crypto@30000; /* Pulled in by p1010si-post */ + }; + }; ++ ++/* ++ * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses ++ * aliases to determine PCI domain numbers, drop aliases so as not to ++ * change the sysfs path of our wireless netdevs. ++ */ ++ ++/ { ++ aliases { ++ /delete-property/ pci0; ++ /delete-property/ pci1; ++ }; ++}; +diff --git a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3710i.dts b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3710i.dts +index c5588d80275e2..5d81da4686413 100644 +--- a/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3710i.dts ++++ b/target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3710i.dts +@@ -173,3 +173,16 @@ + + }; + /include/ "fsl/p1020si-post.dtsi" ++ ++/* ++ * For the OpenWrt 22.03 release, since Linux 5.10.138 now uses ++ * aliases to determine PCI domain numbers, drop aliases so as not to ++ * change the sysfs path of our wireless netdevs. ++ */ ++ ++/ { ++ aliases { ++ /delete-property/ pci0; ++ /delete-property/ pci1; ++ }; ++};