|
[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 |