From 80fdb42cff83035cae15c0061abe2b9b73632c20 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 4 Apr 2012 17:33:30 -0700 Subject: [PATCH] 3.2-stable patches added patches: r8169-runtime-resume-before-shutdown.patch --- ...r8169-runtime-resume-before-shutdown.patch | 55 +++++++++++++++++++ queue-3.2/series | 1 + 2 files changed, 56 insertions(+) create mode 100644 queue-3.2/r8169-runtime-resume-before-shutdown.patch diff --git a/queue-3.2/r8169-runtime-resume-before-shutdown.patch b/queue-3.2/r8169-runtime-resume-before-shutdown.patch new file mode 100644 index 00000000000..54045a1664d --- /dev/null +++ b/queue-3.2/r8169-runtime-resume-before-shutdown.patch @@ -0,0 +1,55 @@ +From 2a15cd2ff488a9fdb55e5e34060f499853b27c77 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?fran=C3=A7ois=20romieu?= +Date: Tue, 6 Mar 2012 01:14:12 +0000 +Subject: r8169: runtime resume before shutdown. + +From: =?UTF-8?q?fran=C3=A7ois=20romieu?= + +commit 2a15cd2ff488a9fdb55e5e34060f499853b27c77 upstream. + +With runtime PM, if the ethernet cable is disconnected, the device is +transitioned to D3 state to conserve energy. If the system is shutdown +in this state, any register accesses in rtl_shutdown are dropped on +the floor. As the device was programmed by .runtime_suspend() to wake +on link changes, it is thus brought back up as soon as the link recovers. + +Resuming every suspended device through the driver core would slow things +down and it is not clear how many devices really need it now. + +Original report and D0 transition patch by Sameer Nanda. Patch has been +changed to comply with advices by Rafael J. Wysocki and the PM folks. + +Reported-by: Sameer Nanda +Signed-off-by: Francois Romieu +Cc: Rafael J. Wysocki +Cc: Hayes Wang +Cc: Alan Stern +Acked-by: Rafael J. Wysocki +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/ethernet/realtek/r8169.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/net/ethernet/realtek/r8169.c ++++ b/drivers/net/ethernet/realtek/r8169.c +@@ -6194,6 +6194,9 @@ static void rtl_shutdown(struct pci_dev + { + struct net_device *dev = pci_get_drvdata(pdev); + struct rtl8169_private *tp = netdev_priv(dev); ++ struct device *d = &pdev->dev; ++ ++ pm_runtime_get_sync(d); + + rtl8169_net_suspend(dev); + +@@ -6215,6 +6218,8 @@ static void rtl_shutdown(struct pci_dev + pci_wake_from_d3(pdev, true); + pci_set_power_state(pdev, PCI_D3hot); + } ++ ++ pm_runtime_put_noidle(d); + } + + static struct pci_driver rtl8169_pci_driver = { diff --git a/queue-3.2/series b/queue-3.2/series index 713d654ba38..8e50a17ff27 100644 --- a/queue-3.2/series +++ b/queue-3.2/series @@ -28,3 +28,4 @@ drm-i915-no-lvds-quirk-on-msi-dc500.patch drm-i915-sanitize-bios-debugging-bits-from-pipeconf.patch drm-i915-add-lock-on-drm_helper_resume_force_mode.patch drm-i915-quirk-away-broken-opregion-vbt.patch +r8169-runtime-resume-before-shutdown.patch -- 2.47.3