From 438ad6c5482fc39130c8c4667b4ce89a97210690 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 30 Mar 2020 17:10:42 +0200 Subject: [PATCH] 5.5-stable patches added patches: r8169-fix-phy-driver-check-on-platforms-w-o-module-softdeps.patch --- ...eck-on-platforms-w-o-module-softdeps.patch | 57 +++++++++++++++++++ queue-5.5/series | 1 + 2 files changed, 58 insertions(+) create mode 100644 queue-5.5/r8169-fix-phy-driver-check-on-platforms-w-o-module-softdeps.patch diff --git a/queue-5.5/r8169-fix-phy-driver-check-on-platforms-w-o-module-softdeps.patch b/queue-5.5/r8169-fix-phy-driver-check-on-platforms-w-o-module-softdeps.patch new file mode 100644 index 00000000000..b951c843fd2 --- /dev/null +++ b/queue-5.5/r8169-fix-phy-driver-check-on-platforms-w-o-module-softdeps.patch @@ -0,0 +1,57 @@ +From 2e8c339b4946490a922a21aa8cd869c6cfad2023 Mon Sep 17 00:00:00 2001 +From: Heiner Kallweit +Date: Fri, 27 Mar 2020 17:33:32 +0100 +Subject: r8169: fix PHY driver check on platforms w/o module softdeps + +From: Heiner Kallweit + +commit 2e8c339b4946490a922a21aa8cd869c6cfad2023 upstream. + +On Android/x86 the module loading infrastructure can't deal with +softdeps. Therefore the check for presence of the Realtek PHY driver +module fails. mdiobus_register() will try to load the PHY driver +module, therefore move the check to after this call and explicitly +check that a dedicated PHY driver is bound to the PHY device. + +Fixes: f32593773549 ("r8169: check that Realtek PHY driver module is loaded") +Reported-by: Chih-Wei Huang +Signed-off-by: Heiner Kallweit +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/ethernet/realtek/r8169_main.c | 16 +++++++--------- + 1 file changed, 7 insertions(+), 9 deletions(-) + +--- a/drivers/net/ethernet/realtek/r8169_main.c ++++ b/drivers/net/ethernet/realtek/r8169_main.c +@@ -6670,6 +6670,13 @@ static int r8169_mdio_register(struct rt + if (!tp->phydev) { + mdiobus_unregister(new_bus); + return -ENODEV; ++ } else if (!tp->phydev->drv) { ++ /* Most chip versions fail with the genphy driver. ++ * Therefore ensure that the dedicated PHY driver is loaded. ++ */ ++ dev_err(&pdev->dev, "realtek.ko not loaded, maybe it needs to be added to initramfs?\n"); ++ mdiobus_unregister(new_bus); ++ return -EUNATCH; + } + + /* PHY will be woken up in rtl_open() */ +@@ -6831,15 +6838,6 @@ static int rtl_init_one(struct pci_dev * + int chipset, region; + int jumbo_max, rc; + +- /* Some tools for creating an initramfs don't consider softdeps, then +- * r8169.ko may be in initramfs, but realtek.ko not. Then the generic +- * PHY driver is used that doesn't work with most chip versions. +- */ +- if (!driver_find("RTL8201CP Ethernet", &mdio_bus_type)) { +- dev_err(&pdev->dev, "realtek.ko not loaded, maybe it needs to be added to initramfs?\n"); +- return -ENOENT; +- } +- + dev = devm_alloc_etherdev(&pdev->dev, sizeof (*tp)); + if (!dev) + return -ENOMEM; diff --git a/queue-5.5/series b/queue-5.5/series index c361214f2c3..33f00ed3684 100644 --- a/queue-5.5/series +++ b/queue-5.5/series @@ -143,3 +143,4 @@ bpf-btf-fix-btf-verification-of-enum-members-in-struct-union.patch bpf-sockmap-remove-bucket-lock-from-sock_-hash-map-_free.patch arm-dts-sun8i-a83t-tbs-a711-fix-usb-otg-mode-detection.patch vti6-fix-memory-leak-of-skb-if-input-policy-check-fails.patch +r8169-fix-phy-driver-check-on-platforms-w-o-module-softdeps.patch -- 2.47.3