[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[win-pv-devel] [PATCH 13/14] Fix BUG on hibernate/shutdown



From: Owen Smith <owen.smith@xxxxxxxxxx>

It seems that raw PDOs do not get a set device power IRP on hibernate.
Force a PdoD3ToD0 transition, if its not already been done, when the
Fdo transitions to D3

Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
 src/xencons/pdo.c | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/xencons/pdo.c b/src/xencons/pdo.c
index b7a90ca..877b21a 100755
--- a/src/xencons/pdo.c
+++ b/src/xencons/pdo.c
@@ -433,6 +433,8 @@ PdoD3ToD0(
     KIRQL               Irql;
     NTSTATUS            status;
 
+    Trace("=====>\n");
+
     ASSERT3U(KeGetCurrentIrql(), == , PASSIVE_LEVEL);
 
     KeRaiseIrql(DISPATCH_LEVEL, &Irql);
@@ -459,6 +461,8 @@ PdoD3ToD0(
 #pragma prefast(suppress:28123)
     (VOID) IoSetDeviceInterfaceState(&Pdo->Dx->Link, TRUE);
 
+    Trace("<=====\n");
+
     return STATUS_SUCCESS;
 
 fail3:
@@ -487,6 +491,8 @@ PdoD0ToD3(
 {
     KIRQL               Irql;
 
+    Trace("=====>\n");
+
     ASSERT3U(KeGetCurrentIrql(), == , PASSIVE_LEVEL);
 
 #pragma prefast(suppress:28123)
@@ -504,6 +510,8 @@ PdoD0ToD3(
     XENBUS_SUSPEND(Release, &Pdo->SuspendInterface);
 
     KeLowerIrql(Irql);
+
+    Trace("<=====\n");
 }
 
 // This function must not touch pageable code or data
@@ -1838,7 +1846,15 @@ PdoResume(
     IN  PXENCONS_PDO    Pdo
     )
 {
-    return FrontendResume(Pdo->Frontend);
+    NTSTATUS            status;
+
+    Trace("=====>\n");
+
+    status = FrontendResume(Pdo->Frontend);
+
+    Trace("<=====\n");
+
+    return status;
 }
 
 VOID
@@ -1846,7 +1862,13 @@ PdoSuspend(
     IN  PXENCONS_PDO    Pdo
     )
 {
+    Trace("=====>\n");
+
+    if (__PdoGetDevicePowerState(Pdo) == PowerDeviceD0)
+        PdoD0ToD3(Pdo);
     FrontendSuspend(Pdo->Frontend);
+
+    Trace("<=====\n");
 }
 
 NTSTATUS
-- 
2.8.3


_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/win-pv-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.