[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [win-pv-devel] [PATCH] Update EVTCHN, GNTTAB and STORE interface headers
> -----Original Message----- > From: win-pv-devel [mailto:win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On > Behalf Of Owen Smith > Sent: 25 June 2018 10:48 > To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx > Cc: Owen Smith <owen.smith@xxxxxxxxxx> > Subject: [win-pv-devel] [PATCH] Update EVTCHN, GNTTAB and STORE > interface headers > > Updates revision to 09000004 > Fixes Evtchn Unmask calls > Updates xenbus interface headers to latest versions > > This will resolve an issue where, under certain timing conditions, > xenvbd will request a second reboot before functioning correctly. > > Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> Given the difficulties separating these updates... Reviewed-by: Paul Durrant <paul.durrant@xxxxxxxxxx> > --- > include/evtchn_interface.h | 128 > +++++++++++++++++++++++++++++++++------------ > include/gnttab_interface.h | 92 +++++++++++++++++++++++++++++++- > include/store_interface.h | 68 ++++++++++++++++++++++-- > src/xenvbd.inf | 6 +-- > src/xenvbd/ring.c | 6 ++- > 5 files changed, 257 insertions(+), 43 deletions(-) > > diff --git a/include/evtchn_interface.h b/include/evtchn_interface.h > index 6f8fe42..068a697 100644 > --- a/include/evtchn_interface.h > +++ b/include/evtchn_interface.h > @@ -112,13 +112,6 @@ typedef PXENBUS_EVTCHN_CHANNEL > ... > ); > > -typedef NTSTATUS > -(*XENBUS_EVTCHN_BIND_V2)( > - IN PINTERFACE Interface, > - IN PXENBUS_EVTCHN_CHANNEL Channel, > - IN ULONG Cpu > - ); > - > /*! \typedef XENBUS_EVTCHN_BIND > \brief Bind an event channel to a specific CPU > > @@ -135,8 +128,8 @@ typedef NTSTATUS > IN UCHAR Number > ); > > -typedef BOOLEAN > -(*XENBUS_EVTCHN_UNMASK_V1)( > +typedef VOID > +(*XENBUS_EVTCHN_UNMASK_V4)( > IN PINTERFACE Interface, > IN PXENBUS_EVTCHN_CHANNEL Channel, > IN BOOLEAN InCallback > @@ -148,17 +141,28 @@ typedef BOOLEAN > \param Interface The interface header > \param Channel The channel handle > \param InCallback Set to TRUE if this method is invoked in context of the > channel callback > + \param Force Set to TRUE if the unmask must succeed, otherwise set to > FALSE and the function will return FALSE if the unmask did not complete. > */ > -typedef VOID > +typedef BOOLEAN > (*XENBUS_EVTCHN_UNMASK)( > IN PINTERFACE Interface, > IN PXENBUS_EVTCHN_CHANNEL Channel, > - IN BOOLEAN InCallback > + IN BOOLEAN InCallback, > + IN BOOLEAN Force > + ); > + > +typedef VOID > +(*XENBUS_EVTCHN_SEND_V1)( > + IN PINTERFACE Interface, > + IN PXENBUS_EVTCHN_CHANNEL Channel > ); > > /*! \typedef XENBUS_EVTCHN_SEND > \brief Send an event to the remote end of the channel > > + It is assumed that the domain cannot suspend during this call so > + IRQL must be >= DISPATCH_LEVEL. > + > \param Interface The interface header > \param Channel The channel handle > */ > @@ -180,6 +184,42 @@ typedef VOID > IN PXENBUS_EVTCHN_CHANNEL Channel > ); > > +/*! \typedef XENBUS_EVTCHN_GET_COUNT > + \brief Get the number of events received by the channel since it was > opened > + > + \param Interface The interface header > + \param Channel The channel handle > + \return The number of events > +*/ > +typedef ULONG > +(*XENBUS_EVTCHN_GET_COUNT)( > + IN PINTERFACE Interface, > + IN PXENBUS_EVTCHN_CHANNEL Channel > + ); > + > +typedef NTSTATUS > +(*XENBUS_EVTCHN_WAIT_V5)( > + IN PINTERFACE Interface, > + IN PXENBUS_EVTCHN_CHANNEL Channel, > + IN PLARGE_INTEGER Timeout OPTIONAL > + ); > + > +/*! \typedef XENBUS_EVTCHN_WAIT > + \brief Wait for events to the local end of the channel > + > + \param Interface The interface header > + \param Channel The channel handle > + \param Count The event count to wait for > + \param Timeout An optional timeout value (similar to > KeWaitForSingleObject(), but non-zero values are allowed at > DISPATCH_LEVEL). > +*/ > +typedef NTSTATUS > +(*XENBUS_EVTCHN_WAIT)( > + IN PINTERFACE Interface, > + IN PXENBUS_EVTCHN_CHANNEL Channel, > + IN ULONG Count, > + IN PLARGE_INTEGER Timeout OPTIONAL > + ); > + > /*! \typedef XENBUS_EVTCHN_GET_PORT > \brief Get the local port number bound to the channel > > @@ -209,61 +249,83 @@ typedef VOID > DEFINE_GUID(GUID_XENBUS_EVTCHN_INTERFACE, > 0xbe2440ac, 0x1098, 0x4150, 0xaf, 0x4d, 0x45, 0x2f, 0xad, 0xce, 0xf9, 0x23); > > -/*! \struct _XENBUS_EVTCHN_INTERFACE_V1 > - \brief EVTCHN interface version 1 > +/*! \struct _XENBUS_EVTCHN_INTERFACE_V4 > + \brief EVTCHN interface version 4 > \ingroup interfaces > */ > -struct _XENBUS_EVTCHN_INTERFACE_V1 { > +struct _XENBUS_EVTCHN_INTERFACE_V4 { > INTERFACE Interface; > XENBUS_EVTCHN_ACQUIRE EvtchnAcquire; > XENBUS_EVTCHN_RELEASE EvtchnRelease; > XENBUS_EVTCHN_OPEN EvtchnOpen; > - XENBUS_EVTCHN_UNMASK_V1 EvtchnUnmaskVersion1; > - XENBUS_EVTCHN_SEND EvtchnSend; > + XENBUS_EVTCHN_BIND EvtchnBind; > + XENBUS_EVTCHN_UNMASK_V4 EvtchnUnmaskVersion4; > + XENBUS_EVTCHN_SEND_V1 EvtchnSendVersion1; > XENBUS_EVTCHN_TRIGGER EvtchnTrigger; > XENBUS_EVTCHN_GET_PORT EvtchnGetPort; > XENBUS_EVTCHN_CLOSE EvtchnClose; > }; > > -/*! \struct _XENBUS_EVTCHN_INTERFACE_V2 > - \brief EVTCHN interface version 2 > +/*! \struct _XENBUS_EVTCHN_INTERFACE_V5 > + \brief EVTCHN interface version 5 > \ingroup interfaces > */ > -struct _XENBUS_EVTCHN_INTERFACE_V2 { > +struct _XENBUS_EVTCHN_INTERFACE_V5 { > INTERFACE Interface; > XENBUS_EVTCHN_ACQUIRE EvtchnAcquire; > XENBUS_EVTCHN_RELEASE EvtchnRelease; > XENBUS_EVTCHN_OPEN EvtchnOpen; > - XENBUS_EVTCHN_BIND_V2 EvtchnBindVersion2; > - XENBUS_EVTCHN_UNMASK_V1 EvtchnUnmaskVersion1; > + XENBUS_EVTCHN_BIND EvtchnBind; > + XENBUS_EVTCHN_UNMASK_V4 EvtchnUnmaskVersion4; > + XENBUS_EVTCHN_SEND_V1 EvtchnSendVersion1; > + XENBUS_EVTCHN_TRIGGER EvtchnTrigger; > + XENBUS_EVTCHN_WAIT_V5 EvtchnWaitVersion5; > + XENBUS_EVTCHN_GET_PORT EvtchnGetPort; > + XENBUS_EVTCHN_CLOSE EvtchnClose; > +}; > + > +/*! \struct _XENBUS_EVTCHN_INTERFACE_V6 > + \brief EVTCHN interface version 6 > + \ingroup interfaces > +*/ > +struct _XENBUS_EVTCHN_INTERFACE_V6 { > + INTERFACE Interface; > + XENBUS_EVTCHN_ACQUIRE EvtchnAcquire; > + XENBUS_EVTCHN_RELEASE EvtchnRelease; > + XENBUS_EVTCHN_OPEN EvtchnOpen; > + XENBUS_EVTCHN_BIND EvtchnBind; > + XENBUS_EVTCHN_UNMASK_V4 EvtchnUnmaskVersion4; > XENBUS_EVTCHN_SEND EvtchnSend; > XENBUS_EVTCHN_TRIGGER EvtchnTrigger; > + XENBUS_EVTCHN_WAIT_V5 EvtchnWaitVersion5; > XENBUS_EVTCHN_GET_PORT EvtchnGetPort; > XENBUS_EVTCHN_CLOSE EvtchnClose; > }; > > -/*! \struct _XENBUS_EVTCHN_INTERFACE_V3 > - \brief EVTCHN interface version 3 > +/*! \struct _XENBUS_EVTCHN_INTERFACE_V7 > + \brief EVTCHN interface version 7 > \ingroup interfaces > */ > -struct _XENBUS_EVTCHN_INTERFACE_V3 { > +struct _XENBUS_EVTCHN_INTERFACE_V7 { > INTERFACE Interface; > XENBUS_EVTCHN_ACQUIRE EvtchnAcquire; > XENBUS_EVTCHN_RELEASE EvtchnRelease; > XENBUS_EVTCHN_OPEN EvtchnOpen; > - XENBUS_EVTCHN_BIND_V2 EvtchnBindVersion2; > - XENBUS_EVTCHN_UNMASK EvtchnUnmask; > + XENBUS_EVTCHN_BIND EvtchnBind; > + XENBUS_EVTCHN_UNMASK_V4 EvtchnUnmaskVersion4; > XENBUS_EVTCHN_SEND EvtchnSend; > XENBUS_EVTCHN_TRIGGER EvtchnTrigger; > + XENBUS_EVTCHN_GET_COUNT EvtchnGetCount; > + XENBUS_EVTCHN_WAIT EvtchnWait; > XENBUS_EVTCHN_GET_PORT EvtchnGetPort; > XENBUS_EVTCHN_CLOSE EvtchnClose; > }; > > -/*! \struct _XENBUS_EVTCHN_INTERFACE_V4 > - \brief EVTCHN interface version 4 > +/*! \struct _XENBUS_EVTCHN_INTERFACE_V8 > + \brief EVTCHN interface version 8 > \ingroup interfaces > */ > -struct _XENBUS_EVTCHN_INTERFACE_V4 { > +struct _XENBUS_EVTCHN_INTERFACE_V8 { > INTERFACE Interface; > XENBUS_EVTCHN_ACQUIRE EvtchnAcquire; > XENBUS_EVTCHN_RELEASE EvtchnRelease; > @@ -272,11 +334,13 @@ struct _XENBUS_EVTCHN_INTERFACE_V4 { > XENBUS_EVTCHN_UNMASK EvtchnUnmask; > XENBUS_EVTCHN_SEND EvtchnSend; > XENBUS_EVTCHN_TRIGGER EvtchnTrigger; > + XENBUS_EVTCHN_GET_COUNT EvtchnGetCount; > + XENBUS_EVTCHN_WAIT EvtchnWait; > XENBUS_EVTCHN_GET_PORT EvtchnGetPort; > XENBUS_EVTCHN_CLOSE EvtchnClose; > }; > > -typedef struct _XENBUS_EVTCHN_INTERFACE_V4 > XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVTCHN_INTERFACE; > +typedef struct _XENBUS_EVTCHN_INTERFACE_V8 > XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVTCHN_INTERFACE; > > /*! \def XENBUS_EVTCHN > \brief Macro at assist in method invocation > @@ -286,8 +350,8 @@ typedef struct _XENBUS_EVTCHN_INTERFACE_V4 > XENBUS_EVTCHN_INTERFACE, *PXENBUS_EVT > > #endif // _WINDLL > > -#define XENBUS_EVTCHN_INTERFACE_VERSION_MIN 1 > -#define XENBUS_EVTCHN_INTERFACE_VERSION_MAX 4 > +#define XENBUS_EVTCHN_INTERFACE_VERSION_MIN 4 > +#define XENBUS_EVTCHN_INTERFACE_VERSION_MAX 8 > > #endif // _XENBUS_EVTCHN_INTERFACE_H > > diff --git a/include/gnttab_interface.h b/include/gnttab_interface.h > index d29440a..61272ab 100644 > --- a/include/gnttab_interface.h > +++ b/include/gnttab_interface.h > @@ -148,6 +148,26 @@ typedef ULONG > IN PXENBUS_GNTTAB_ENTRY Entry > ); > > +/*! \typedef XENBUS_GNTTAB_QUERY_REFERENCE > + \brief Get the reference number of the entry > + > + \param Interface The interface header > + \param Reference The reference number > + \param Pfn An optional pointer to receive the value of the reference > frame number > + \param ReadOnly An optional pointer to receive the boolean value of the > read-only flag > +*/ > +typedef NTSTATUS > +(*XENBUS_GNTTAB_QUERY_REFERENCE)( > + IN PINTERFACE Interface, > + IN ULONG Reference, > + OUT PPFN_NUMBER Pfn OPTIONAL, > + OUT PBOOLEAN ReadOnly OPTIONAL > + ); > + > +#define XENBUS_GNTTAB_CONSOLE_REFERENCE 0 > +#define XENBUS_GNTTAB_STORE_REFERENCE 1 > + > + > /*! \typedef XENBUS_GNTTAB_DESTROY_CACHE > \brief Destroy a cache of grant table entries > > @@ -163,6 +183,39 @@ typedef VOID > IN PXENBUS_GNTTAB_CACHE Cache > ); > > +/*! \typedef XENBUS_GNTTAB_MAP_FOREIGN_PAGES > + \brief Map foreign memory pages into the system address space > + > + \param Interface The interface header > + \param Domain The domid of the foreign domain that granted the pages > + \param NumberPages Number of pages to map > + \param References Array of grant reference numbers shared by the > foreign domain > + \param ReadOnly If TRUE, pages are mapped with read-only access > + \param Address The physical address that the foreign pages are mapped > under > +*/ > + > +typedef NTSTATUS > +(*XENBUS_GNTTAB_MAP_FOREIGN_PAGES)( > + IN PINTERFACE Interface, > + IN USHORT Domain, > + IN ULONG NumberPages, > + IN PULONG References, > + IN BOOLEAN ReadOnly, > + OUT PHYSICAL_ADDRESS *Address > + ); > + > +/*! \typedef XENBUS_GNTTAB_UNMAP_FOREIGN_PAGES > + \brief Unmap foreign memory pages from the system address space > + > + \param Interface The interface header > + \param Address The physical address that the foreign pages are mapped > under > +*/ > +typedef NTSTATUS > +(*XENBUS_GNTTAB_UNMAP_FOREIGN_PAGES)( > + IN PINTERFACE Interface, > + IN PHYSICAL_ADDRESS Address > + ); > + > // {763679C5-E5C2-4A6D-8B88-6BB02EC42D8E} > DEFINE_GUID(GUID_XENBUS_GNTTAB_INTERFACE, > 0x763679c5, 0xe5c2, 0x4a6d, 0x8b, 0x88, 0x6b, 0xb0, 0x2e, 0xc4, 0x2d, 0x8e); > @@ -182,7 +235,42 @@ struct _XENBUS_GNTTAB_INTERFACE_V1 { > XENBUS_GNTTAB_DESTROY_CACHE GnttabDestroyCache; > }; > > -typedef struct _XENBUS_GNTTAB_INTERFACE_V1 > XENBUS_GNTTAB_INTERFACE, *PXENBUS_GNTTAB_INTERFACE; > +/*! \struct _XENBUS_GNTTAB_INTERFACE_V2 > + \brief GNTTAB interface version 2 > + \ingroup interfaces > +*/ > +struct _XENBUS_GNTTAB_INTERFACE_V2 { > + INTERFACE Interface; > + XENBUS_GNTTAB_ACQUIRE GnttabAcquire; > + XENBUS_GNTTAB_RELEASE GnttabRelease; > + XENBUS_GNTTAB_CREATE_CACHE GnttabCreateCache; > + XENBUS_GNTTAB_PERMIT_FOREIGN_ACCESS > GnttabPermitForeignAccess; > + XENBUS_GNTTAB_REVOKE_FOREIGN_ACCESS > GnttabRevokeForeignAccess; > + XENBUS_GNTTAB_GET_REFERENCE GnttabGetReference; > + XENBUS_GNTTAB_DESTROY_CACHE GnttabDestroyCache; > + XENBUS_GNTTAB_MAP_FOREIGN_PAGES GnttabMapForeignPages; > + XENBUS_GNTTAB_UNMAP_FOREIGN_PAGES > GnttabUnmapForeignPages; > +}; > + > +/*! \struct _XENBUS_GNTTAB_INTERFACE_V3 > + \brief GNTTAB interface version 3 > + \ingroup interfaces > +*/ > +struct _XENBUS_GNTTAB_INTERFACE_V3 { > + INTERFACE Interface; > + XENBUS_GNTTAB_ACQUIRE GnttabAcquire; > + XENBUS_GNTTAB_RELEASE GnttabRelease; > + XENBUS_GNTTAB_CREATE_CACHE GnttabCreateCache; > + XENBUS_GNTTAB_PERMIT_FOREIGN_ACCESS > GnttabPermitForeignAccess; > + XENBUS_GNTTAB_REVOKE_FOREIGN_ACCESS > GnttabRevokeForeignAccess; > + XENBUS_GNTTAB_GET_REFERENCE GnttabGetReference; > + XENBUS_GNTTAB_QUERY_REFERENCE GnttabQueryReference; > + XENBUS_GNTTAB_DESTROY_CACHE GnttabDestroyCache; > + XENBUS_GNTTAB_MAP_FOREIGN_PAGES GnttabMapForeignPages; > + XENBUS_GNTTAB_UNMAP_FOREIGN_PAGES > GnttabUnmapForeignPages; > +}; > + > +typedef struct _XENBUS_GNTTAB_INTERFACE_V3 > XENBUS_GNTTAB_INTERFACE, *PXENBUS_GNTTAB_INTERFACE; > > /*! \def XENBUS_GNTTAB > \brief Macro at assist in method invocation > @@ -193,7 +281,7 @@ typedef struct _XENBUS_GNTTAB_INTERFACE_V1 > XENBUS_GNTTAB_INTERFACE, *PXENBUS_GNT > #endif // _WINDLL > > #define XENBUS_GNTTAB_INTERFACE_VERSION_MIN 1 > -#define XENBUS_GNTTAB_INTERFACE_VERSION_MAX 1 > +#define XENBUS_GNTTAB_INTERFACE_VERSION_MAX 3 > > #endif // _XENBUS_GNTTAB_INTERFACE_H > > diff --git a/include/store_interface.h b/include/store_interface.h > index 5bcbba3..52f1a1d 100644 > --- a/include/store_interface.h > +++ b/include/store_interface.h > @@ -50,6 +50,23 @@ typedef struct _XENBUS_STORE_TRANSACTION > XENBUS_STORE_TRANSACTION, *PXENBUS_S > */ > typedef struct _XENBUS_STORE_WATCH XENBUS_STORE_WATCH, > *PXENBUS_STORE_WATCH; > > +/*! \typedef XENBUS_STORE_PERMISSION_MASK > + \brief Bitmask of XenStore key permissions > +*/ > +typedef enum _XENBUS_STORE_PERMISSION_MASK { > + XENBUS_STORE_PERM_NONE = 0, > + XENBUS_STORE_PERM_READ = 1, > + XENBUS_STORE_PERM_WRITE = 2, > +} XENBUS_STORE_PERMISSION_MASK; > + > +/*! \typedef XENBUS_STORE_PERMISSION > + \brief XenStore key permissions entry for a single domain > +*/ > +typedef struct _XENBUS_STORE_PERMISSION { > + USHORT Domain; > + XENBUS_STORE_PERMISSION_MASK Mask; > +} XENBUS_STORE_PERMISSION, *PXENBUS_STORE_PERMISSION; > + > /*! \typedef XENBUS_STORE_ACQUIRE > \brief Acquire a reference to the STORE interface > > @@ -247,10 +264,36 @@ typedef VOID > IN PINTERFACE Interface > ); > > +/*! \typedef XENBUS_STORE_PERMISSIONS_SET > + \brief Set permissions for a XenStore key > + > + \param Interface The interface header > + \param Transaction The transaction handle (NULL if this is not > + part of a transaction) > + \param Prefix An optional prefix for the \a Node > + \param Node The concatenation of the \a Prefix and this value specifies > + the XenStore key to set permissions of > + \param Permissions An array of permissions to set > + \param NumberPermissions Number of elements in the \a Permissions > array > +*/ > +typedef NTSTATUS > +(*XENBUS_STORE_PERMISSIONS_SET)( > + IN PINTERFACE Interface, > + IN PXENBUS_STORE_TRANSACTION Transaction OPTIONAL, > + IN PCHAR Prefix OPTIONAL, > + IN PCHAR Node, > + IN PXENBUS_STORE_PERMISSION Permissions, > + IN ULONG NumberPermissions > + ); > + > // {86824C3B-D34E-4753-B281-2F1E3AD214D7} > DEFINE_GUID(GUID_XENBUS_STORE_INTERFACE, > 0x86824c3b, 0xd34e, 0x4753, 0xb2, 0x81, 0x2f, 0x1e, 0x3a, 0xd2, 0x14, 0xd7); > > +/*! \struct _XENBUS_STORE_INTERFACE_V1 > + \brief STORE interface version 1 > + \ingroup interfaces > +*/ > struct _XENBUS_STORE_INTERFACE_V1 { > INTERFACE Interface; > XENBUS_STORE_ACQUIRE StoreAcquire; > @@ -267,11 +310,28 @@ struct _XENBUS_STORE_INTERFACE_V1 { > XENBUS_STORE_POLL StorePoll; > }; > > -/*! \struct _XENBUS_STORE_INTERFACE_V1 > - \brief STORE interface version 1 > +/*! \struct _XENBUS_STORE_INTERFACE_V2 > + \brief STORE interface version 2 > \ingroup interfaces > */ > -typedef struct _XENBUS_STORE_INTERFACE_V1 > XENBUS_STORE_INTERFACE, *PXENBUS_STORE_INTERFACE; > +struct _XENBUS_STORE_INTERFACE_V2 { > + INTERFACE Interface; > + XENBUS_STORE_ACQUIRE StoreAcquire; > + XENBUS_STORE_RELEASE StoreRelease; > + XENBUS_STORE_FREE StoreFree; > + XENBUS_STORE_READ StoreRead; > + XENBUS_STORE_PRINTF StorePrintf; > + XENBUS_STORE_PERMISSIONS_SET StorePermissionsSet; > + XENBUS_STORE_REMOVE StoreRemove; > + XENBUS_STORE_DIRECTORY StoreDirectory; > + XENBUS_STORE_TRANSACTION_START StoreTransactionStart; > + XENBUS_STORE_TRANSACTION_END StoreTransactionEnd; > + XENBUS_STORE_WATCH_ADD StoreWatchAdd; > + XENBUS_STORE_WATCH_REMOVE StoreWatchRemove; > + XENBUS_STORE_POLL StorePoll; > +}; > + > +typedef struct _XENBUS_STORE_INTERFACE_V2 > XENBUS_STORE_INTERFACE, *PXENBUS_STORE_INTERFACE; > > /*! \def XENBUS_STORE > \brief Macro at assist in method invocation > @@ -282,7 +342,7 @@ typedef struct _XENBUS_STORE_INTERFACE_V1 > XENBUS_STORE_INTERFACE, *PXENBUS_STORE > #endif // _WINDLL > > #define XENBUS_STORE_INTERFACE_VERSION_MIN 1 > -#define XENBUS_STORE_INTERFACE_VERSION_MAX 1 > +#define XENBUS_STORE_INTERFACE_VERSION_MAX 2 > > #endif // _XENBUS_STORE_INTERFACE_H > > diff --git a/src/xenvbd.inf b/src/xenvbd.inf > index bb5ada2..5220add 100644 > --- a/src/xenvbd.inf > +++ b/src/xenvbd.inf > @@ -54,9 +54,9 @@ xenvbd_coinst.dll=0,, > %Vendor%=Inst,NT$ARCH$ > > [Inst.NT$ARCH$] > - > %XenVbdName%=XenVbd_Inst,XENBUS\VEN_@VENDOR_PREFIX@@VEND > OR_DEVICE_ID@&DEV_VBD&REV_09000000 > - > %XenVbdName%=XenVbd_Inst,XENBUS\VEN_@VENDOR_PREFIX@0001&D > EV_VBD&REV_09000000 > - > %XenVbdName%=XenVbd_Inst,XENBUS\VEN_@VENDOR_PREFIX@0002&D > EV_VBD&REV_09000000 > +%XenVbdName%=XenVbd_Inst,XENBUS\VEN_@VENDOR_PREFIX@@VEN > DOR_DEVICE_ID@&DEV_VBD&REV_09000004 > +%XenVbdName%=XenVbd_Inst,XENBUS\VEN_@VENDOR_PREFIX@0001& > DEV_VBD&REV_09000004 > +%XenVbdName%=XenVbd_Inst,XENBUS\VEN_@VENDOR_PREFIX@0002& > DEV_VBD&REV_09000004 > > [XenVbd_Inst] > CopyFiles=XenVbd_Copyfiles > diff --git a/src/xenvbd/ring.c b/src/xenvbd/ring.c > index a7b636d..2f5c876 100644 > --- a/src/xenvbd/ring.c > +++ b/src/xenvbd/ring.c > @@ -1649,7 +1649,8 @@ BlkifRingDpc( > XENBUS_EVTCHN(Unmask, > &Ring->EvtchnInterface, > BlkifRing->Channel, > - FALSE); > + FALSE, > + TRUE); > } > > static NTSTATUS > @@ -1923,7 +1924,8 @@ BlkifRingConnect( > XENBUS_EVTCHN(Unmask, > &Ring->EvtchnInterface, > BlkifRing->Channel, > - FALSE); > + FALSE, > + TRUE); > > status = RtlStringCchPrintfA(Name, > MAX_NAME_LEN, > -- > 2.16.2.windows.1 > > > _______________________________________________ > win-pv-devel mailing list > win-pv-devel@xxxxxxxxxxxxxxxxxxxx > https://lists.xenproject.org/mailman/listinfo/win-pv-devel _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |