// Key:
// C - XENBUS_CACHE_INTERFACE
// V - XENVIF_VIF_INTERFACE
+// ST - XENBUS_STORE_INTERFACE
+// SU - XENBUS_SUSPEND_INTERFACE
-// REVISION C V
-#define DEFINE_REVISION_TABLE \
- DEFINE_REVISION(0x08000002, 1, 2)
+// REVISION C V ST SU
+#define DEFINE_REVISION_TABLE \
+ DEFINE_REVISION(0x08000002, 1, 2, 0, 0), \
+ DEFINE_REVISION(0x08000005, 1, 2, 1, 1), \
+
+// Revisions 0x08000003 and 0x08000004 are already in use in the
+// master branch.
#endif // _REVISION_H
ULONG Number;
ULONG CacheInterfaceVersion;
ULONG VifInterfaceVersion;
+ ULONG StoreInterfaceVersion;
+ ULONG SuspendInterfaceVersion;
} XENVIF_PDO_REVISION, *PXENVIF_PDO_REVISION;
-#define DEFINE_REVISION(_N, _C, _V) \
- { (_N), (_C), (_V) }
+#define DEFINE_REVISION(_N, _C, _V, _ST, _SU) \
+ { (_N), (_C), (_V), (_ST), (_SU) }
static XENVIF_PDO_REVISION PdoRevision[] = {
DEFINE_REVISION_TABLE
ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
Revision->VifInterfaceVersion == XENVIF_VIF_INTERFACE_VERSION_MAX));
+ if (Revision->StoreInterfaceVersion == 0) { // not-supported
+ ASSERT(Index != ARRAYSIZE(PdoRevision) - 1);
+ goto show_revision;
+ }
+
+ 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));
+
+ 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));
+
+show_revision:
ASSERT3U(Revision->Number >> 24, ==, MAJOR_VERSION);
Info("%08X -> "
"CACHE v%u "
- "VIF v%u\n",
+ "VIF v%u "
+ "STORE v%u "
+ "SUSPEND v%u\n",
Revision->Number,
Revision->CacheInterfaceVersion,
- Revision->VifInterfaceVersion);
+ Revision->VifInterfaceVersion,
+ Revision->StoreInterfaceVersion,
+ Revision->SuspendInterfaceVersion);
}
}
{ &GUID_BUS_INTERFACE_STANDARD, "BUS_INTERFACE", PdoQueryBusInterface },
{ &GUID_XENVIF_VIF_INTERFACE, "VIF_INTERFACE", PdoQueryVifInterface },
{ &GUID_XENBUS_CACHE_INTERFACE, "CACHE_INTERFACE", PdoDelegateIrp },
+ { &GUID_XENBUS_STORE_INTERFACE, "STORE_INTERFACE", PdoDelegateIrp },
+ { &GUID_XENBUS_SUSPEND_INTERFACE, "SUSPEND_INTERFACE", PdoDelegateIrp },
{ NULL, NULL, NULL }
};