mpc85xx: Drop pci aliases to avoid domain changes
authorMartin Kennedy <hurricos@gmail.com>
Tue, 30 Aug 2022 00:47:24 +0000 (20:47 -0400)
committerHauke Mehrtens <hauke@hauke-m.de>
Fri, 2 Sep 2022 19:42:52 +0000 (21:42 +0200)
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 <hurricos@gmail.com>
[Tested on the Aerohive HiveAP 330 and Extreme Networks WS-AP3825i]
Signed-off-by: Martin Kennedy <hurricos@gmail.com>
(cherry picked from commit 7f4b4c29f3489697dca7495216460d0ed5023e02)

target/linux/mpc85xx/files/arch/powerpc/boot/dts/hiveap-330.dts
target/linux/mpc85xx/files/arch/powerpc/boot/dts/panda.dts
target/linux/mpc85xx/files/arch/powerpc/boot/dts/red-15w-rev1.dts
target/linux/mpc85xx/files/arch/powerpc/boot/dts/tl-wdr4900-v1.dts
target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3710i.dts
target/linux/mpc85xx/files/arch/powerpc/boot/dts/ws-ap3825i.dts

index ccf60eaeed0e103456567840c7c135dec0d7b6a4..d6a8da84ef66d156b2d3a976d57b3d295e5cd708 100644 (file)
        };
 };
 /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;
+       };
+};
index baaa4a43fd559c6ba8c1cd9e73a7527fb0d0364d..9be822f7bb8acf80f24a09b95f2909fe379e5c3c 100644 (file)
        };
 };
 /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;
+       };
+};
+
index 1fd6a4aa497133a0ccec2bc74acb8164787b966d..db35602b94b5b7a77dc7c08fc830f80fba56522c 100644 (file)
 };
 
 /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;
+       };
+};
+
index fbe1c0ee705d205f3f33d0f4fb72acaaba224754..12281808aa5b6007813ed0a83e108677299326a2 100644 (file)
                /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;
+       };
+};
index c5588d80275e209f054ceb2de5871258b6ece977..5d81da4686413977606e04279e84739dab232f14 100644 (file)
 
 };
 /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;
+       };
+};
index 26f742b222c396a72ffdabef11135f907988e193..2ea671846810088a2dac0127dd489c8795293e5d 100644 (file)
 };
 
 /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;
+       };
+};