]> xenbits.xensource.com Git - pvdrivers/win/xenvkbd.git/commitdiff
Fix the revision table
authorPaul Durrant <pdurrant@amazon.com>
Thu, 5 Dec 2019 17:05:39 +0000 (17:05 +0000)
committerPaul Durrant <pdurrant@amazon.com>
Thu, 5 Dec 2019 17:08:27 +0000 (17:08 +0000)
XENVKBD delegates interface queries for XENBUS_STORE and XENBUS_SUSPEND
and hence it should encode revisions for these and create PDOs with
appropriate CompatibleIDs.

Signed-off-by: Paul Durrant <pdurrant@amazon.com>
include/revision.h
src/coinst/coinst.c
src/xenvkbd/pdo.c

index 7e77a2ab6cd540935e5cde75d6d6c5f43debcc58..8aed6df5c3020b10346cc83f06feba081aad2a53 100644 (file)
 
 // Key:
 // H  - XENHID_HID_INTERFACE
+// ST - XENBUS_STORE_INTERFACE
+// SU - XENBUS_SUSPEND_INTERFACE
 
-//                    REVISION   H
-#define DEFINE_REVISION_TABLE           \
-    DEFINE_REVISION(0x09000000,  1)
+//                    REVISION   H  ST SU
+#define DEFINE_REVISION_TABLE              \
+    DEFINE_REVISION(0x09000000,  1, 0, 0), \
+    DEFINE_REVISION(0x09000001,  1, 1, 1), \
+    DEFINE_REVISION(0x09000002,  1, 2, 1)
 
 #endif  // _REVISION_H
index 780ffd1c90142cacad2da65bac2ccc9824ef18b7..da2c59e1c5488bdcde799dd1c0cc88d5d509c9a9 100644 (file)
@@ -724,7 +724,7 @@ fail1:
     return FALSE;
 }
 
-#define DEFINE_REVISION(_N, _H) \
+#define DEFINE_REVISION(_N, _H, _ST, _SU)   \
     (_N)
 
 static DWORD    DeviceRevision[] = {
index 00fee0ce58dd2546b06668d99dbd2109bf58a819..f0a383672d69828f9413c6ece9d3613c1fe17135 100644 (file)
@@ -343,10 +343,12 @@ PdoIsEjectRequested(
 typedef struct _XENVKBD_PDO_REVISION {
     ULONG   Number;
     ULONG   HidInterfaceVersion;
+    ULONG   StoreInterfaceVersion;
+    ULONG   SuspendInterfaceVersion;
 } XENVKBD_PDO_REVISION, *PXENVKBD_PDO_REVISION;
 
-#define DEFINE_REVISION(_N, _H) \
-    { (_N), (_H) }
+#define DEFINE_REVISION(_N, _H, _ST, _SU)   \
+    { (_N), (_H), (_ST), (_SU) }
 
 static XENVKBD_PDO_REVISION PdoRevision[] = {
     DEFINE_REVISION_TABLE
@@ -371,10 +373,28 @@ PdoDumpRevisions(
         ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
                      Revision->HidInterfaceVersion == XENHID_HID_INTERFACE_VERSION_MAX));
 
+        if (Revision->StoreInterfaceVersion != 0) {
+            ASSERT3U(Revision->StoreInterfaceVersion, >=, XENBUS_STORE_INTERFACE_VERSION_MIN);
+            ASSERT3U(Revision->StoreInterfaceVersion, <=, XENBUS_STORE_INTERFACE_VERSION_MAX);
+            ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
+                         Revision->StoreInterfaceVersion == XENBUS_STORE_INTERFACE_VERSION_MAX));
+        }
+
+        if (Revision->SuspendInterfaceVersion != 0) {
+            ASSERT3U(Revision->SuspendInterfaceVersion, >=, XENBUS_SUSPEND_INTERFACE_VERSION_MIN);
+            ASSERT3U(Revision->SuspendInterfaceVersion, <=, XENBUS_SUSPEND_INTERFACE_VERSION_MAX);
+            ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
+                         Revision->SuspendInterfaceVersion == XENBUS_SUSPEND_INTERFACE_VERSION_MAX));
+        }
+
         Info("%08X -> "
-             "HID v%u\n",
+             "HID v%u "
+             "STORE v%u "
+             "SUSPEND v%u\n",
              Revision->Number,
-             Revision->HidInterfaceVersion);
+             Revision->HidInterfaceVersion,
+             Revision->StoreInterfaceVersion,
+             Revision->SuspendInterfaceVersion);
     }
 }
 
@@ -1003,7 +1023,6 @@ struct _INTERFACE_ENTRY {
 struct _INTERFACE_ENTRY PdoInterfaceTable[] = {
     { &GUID_BUS_INTERFACE_STANDARD, "BUS_INTERFACE", PdoQueryBusInterface },
     { &GUID_XENHID_HID_INTERFACE, "HID_INTERFACE", PdoQueryHidInterface },
-    { &GUID_XENBUS_CACHE_INTERFACE, "CACHE_INTERFACE", PdoDelegateIrp },
     { &GUID_XENBUS_STORE_INTERFACE, "STORE_INTERFACE", PdoDelegateIrp },
     { &GUID_XENBUS_SUSPEND_INTERFACE, "SUSPEND_INTERFACE", PdoDelegateIrp },
     { NULL, NULL, NULL }