[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 06/18] OvmfPkg: Introduce Xenbus Protocol.
On Wed, Jul 16, 2014 at 01:42:09PM -0400, Konrad Rzeszutek Wilk wrote: > On Wed, Jul 16, 2014 at 04:15:35PM +0100, Anthony PERARD wrote: > > This protocol will be used for communication between a PV driver (like a > > PV block driver) and the Xenbus/Xenstore. > > > > Contributed-under: TianoCore Contribution Agreement 1.0 > > Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> > > --- > > OvmfPkg/Include/Protocol/Xenbus.h | 62 > > +++++++++++++++++++++++++++++++++++++++ > > OvmfPkg/OvmfPkg.dec | 2 ++ > > OvmfPkg/XenbusDxe/ComponentName.c | 12 ++++++++ > > OvmfPkg/XenbusDxe/XenbusDxe.h | 3 ++ > > OvmfPkg/XenbusDxe/XenbusDxe.inf | 1 + > > 5 files changed, 80 insertions(+) > > create mode 100644 OvmfPkg/Include/Protocol/Xenbus.h > > > > diff --git a/OvmfPkg/Include/Protocol/Xenbus.h > > b/OvmfPkg/Include/Protocol/Xenbus.h > > new file mode 100644 > > index 0000000..191cee1 > > --- /dev/null > > +++ b/OvmfPkg/Include/Protocol/Xenbus.h > > @@ -0,0 +1,62 @@ > > + > > +/** @file > > + TODO: Brief Description of Protocol Xenbus > > + > > + TODO: Detailed Description of Protocol Xenbus > > + > > + TODO: Copyright for Protocol Xenbus > > + > > + TODO: License for Protocol Xenbus > > + > > +**/ > > + > > +#ifndef __PROTOCOL_XENBUS_H__ > > +#define __PROTOCOL_XENBUS_H__ > > + > > +#define XENBUS_PROTOCOL_GUID \ > > + {0x3d3ca290, 0xb9a5, 0x11e3, {0xb7, 0x5d, 0xb8, 0xac, 0x6f, 0x7d, 0x65, > > 0xe6}} > > For those who are not familiar with these GUIDs and live in the Linux world - > how > are they constructed? Is there a chance for collision ? Well, I actually don't know. To get the GUID, I've used UefiDriverWizard which gave me this GUID and a bunch of files to actually code in. That's way there is so many comment written TODO or that may no make sense. > > + > > +/// > > +/// Forward declaration > > +/// > > +typedef struct _XENBUS_PROTOCOL XENBUS_PROTOCOL; > > + > > + > > +#include <IndustryStandard/Xen/grant_table.h> > > + > > +/// > > +/// Function prototypes > > +/// > > + > > +typedef > > +EFI_STATUS > > +(EFIAPI *XENBUS_GRANT_ACCESS)( > > + IN XENBUS_PROTOCOL *This, > > + IN domid_t DomainId, > > + IN UINTN Frame, > > + IN BOOLEAN ReadOnly, > > + OUT grant_ref_t *refp > > + ); > > + > > +typedef > > +EFI_STATUS > > +(EFIAPI *XENBUS_GRANT_END_ACCESS)( > > + IN XENBUS_PROTOCOL *This, > > + IN grant_ref_t Ref > > + ); > > + > > + > > +/// > > +/// Protocol structure > > +/// > > +struct _XENBUS_PROTOCOL { > > + XENBUS_GRANT_ACCESS GrantAccess; > > + XENBUS_GRANT_END_ACCESS GrantEndAccess; > > + // > > + // Place protocol data fields here > > + // > > +}; > > + > > +extern EFI_GUID gXenbusProtocolGuid; > > + > > +#endif > > diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec > > index f829247..095d40a 100644 > > --- a/OvmfPkg/OvmfPkg.dec > > +++ b/OvmfPkg/OvmfPkg.dec > > @@ -47,6 +47,8 @@ > > [Protocols] > > gVirtioDeviceProtocolGuid = {0xfa920010, 0x6785, 0x4941, {0xb6, > > 0xec, 0x49, 0x8c, 0x57, 0x9f, 0x16, 0x0a}} > > gBlockMmioProtocolGuid = {0x6b558ce3, 0x69e5, 0x4c67, {0xa6, > > 0x34, 0xf7, 0xfe, 0x72, 0xad, 0xbe, 0x84}} > > + ## Include/Protocol/Xenbus.h > > + gXenbusProtocolGuid = {0x3d3ca290, 0xb9a5, 0x11e3, {0xb7, 0x5d, 0xb8, > > 0xac, 0x6f, 0x7d, 0x65, 0xe6}} > > Formatting? Looks like the others use tabs? Probably, yes, I'll change that. > > > > [PcdsFixedAtBuild] > > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|0x0|UINT32|0 > > diff --git a/OvmfPkg/XenbusDxe/ComponentName.c > > b/OvmfPkg/XenbusDxe/ComponentName.c > > index 2cf11b5..fd46cc8 100644 > > --- a/OvmfPkg/XenbusDxe/ComponentName.c > > +++ b/OvmfPkg/XenbusDxe/ComponentName.c > > @@ -140,6 +140,18 @@ XenbusDxeComponentNameGetControllerName ( > > } > > > > // > > + // Make sure this driver is currently managing ControllerHandle > > + // > > + Status = EfiTestManagedDevice ( > > + ControllerHandle, > > + gXenbusDxeDriverBinding.DriverBindingHandle, > > + &gXenbusProtocolGuid > > + ); > > + if (EFI_ERROR (Status)) { > > + return Status; > > + } > > + > > + // > > // Lookup name of controller specified by ControllerHandle > > // > > Status = EFI_UNSUPPORTED; > > diff --git a/OvmfPkg/XenbusDxe/XenbusDxe.h b/OvmfPkg/XenbusDxe/XenbusDxe.h > > index d57e3c8..975fb6b 100644 > > --- a/OvmfPkg/XenbusDxe/XenbusDxe.h > > +++ b/OvmfPkg/XenbusDxe/XenbusDxe.h > > @@ -42,6 +42,9 @@ > > // > > // Produced Protocols > > // > > +// Xen interface version used: > > +#define __XEN_INTERFACE_VERSION__ 0x00040400 > > +#include <Protocol/Xenbus.h> > > > > > > // > > diff --git a/OvmfPkg/XenbusDxe/XenbusDxe.inf > > b/OvmfPkg/XenbusDxe/XenbusDxe.inf > > index 8b69f93..1a6b131 100644 > > --- a/OvmfPkg/XenbusDxe/XenbusDxe.inf > > +++ b/OvmfPkg/XenbusDxe/XenbusDxe.inf > > @@ -55,6 +55,7 @@ > > gEfiPciIoProtocolGuid > > gEfiComponentName2ProtocolGuid > > gEfiComponentNameProtocolGuid > > + gXenbusProtocolGuid > > > > > > [Guids] > > -- > > Anthony PERARD > > > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@xxxxxxxxxxxxx > > http://lists.xen.org/xen-devel -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |