Ok, I missed VIRTIO_TRANSPORT_DEVICE_PATH definition in VirtFdtDxe.
Should this definition be moved into
OvmfPkg/Include/Guid/VirtioMmioTransport.h?
I checked if there were some protocols that were defining their special
device path. And I found
MdePkg/Include/Protocol/DebugPort.h

If we do not move the definition there, I would need to either duplicate the
definition or create a new one for
ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c.

> -----Original Message-----
> From: Laszlo Ersek [mailto:[email protected]]
> Sent: 16 December 2014 19:38
> To: [email protected]; [email protected];
> [email protected]; [email protected]
> Subject: Re: [edk2] [PATCH v3 07/13] OvmfPkg: introduce
> VIRTIO_MMIO_TRANSPORT_GUID
> 
> On 12/16/14 15:35, Olivier Martin wrote:
> > Something I do not really used but maybe I should is the 'Data' part
> of
> > 'VenHw(Guid, Data)'.
> > The reason I am saying that is the Device Path you are defining would
> only
> > be able to define a single virtio-mmio transport bus.
> 
> The VenHw() device node in the device path that VirtFdtDxe associates
> with the handle that carries the virtio protocol instance already does
> exactly this.
> 
> Please see the handling of PropertyTypeVirtio in function
> InitializeVirtFdtDxe(), file
> "ArmPlatformPkg/ArmVirtualizationPkg/VirtFdtDxe/VirtFdtDxe.c" -- we
> iterate over all virtio-mmio transports named in the DTB, and the
> VenHw() node for each -- carrying the same GUID -- encodes the MMIO
> base
> address of the register block in the Data portion.
> 
> #pragma pack (1)
> typedef struct {
>   VENDOR_DEVICE_PATH                  Vendor;
>   UINT64                              PhysBase;
>   EFI_DEVICE_PATH_PROTOCOL            End;
> } VIRTIO_TRANSPORT_DEVICE_PATH;
> #pragma pack ()
> 
> ...
> 
>       DevicePath->PhysBase = RegBase;
> 
> In fact that data portion is *precisely* the thing that the boot order
> matching relies on.
> 
> > So it means we should not necessary return if we fail to install the
> > virtio-mmio transport device path.
> 
> I don't understand this.
> 
> Hm, perhaps you mean that UEFI doesn't allow you to install the same
> device path on two different handles (because that would make it
> impossible to uniquely locate a handle by device path). And, this case
> would be triggered if we didn't distinguish the VenHw() nodes from each
> other that we associate with the different virtio transports.
> 
> This train of thought is correct, but we *do* differentiate the device
> paths from each other, by encoding the virtio-mmio register block base
> address in the Data portion of the VenHw() nodes.
> 
> > We should probably retrieve the handle of
> > the owner of the virtio-mmio transport device path to install the
> protocols
> > we want to support.
> >
> > Another way to define the virtio-mmio transport device path node
> would be:
> > VenHw(gVirtioMmioTransportGuid, Guid)
> 
> This patch (and the next patch) preserve the behavior I described
> above;
> they just give the fixed GUID a "public" name.
> 
> Thanks
> Laszlo
> 
> >
> >> -----Original Message-----
> >> From: Laszlo Ersek [mailto:[email protected]]
> >> Sent: 11 December 2014 02:46
> >> To: [email protected]; [email protected];
> >> [email protected]; [email protected]
> >> Subject: [edk2] [PATCH v3 07/13] OvmfPkg: introduce
> >> VIRTIO_MMIO_TRANSPORT_GUID
> >>
> >> Soon there will be more than one modules (in separate packages) that
> >> need
> >> to have an understanding about the GUID used in the VenHw() device
> path
> >> nodes that describe virtio-mmio transports. Define such a GUID
> >> explicitly.
> >>
> >> Preserve the current value (which happens to be the FILE_GUID of
> >> ArmPlatformPkg/ArmVirtualizationPkg/VirtFdtDxe/VirtFdtDxe.inf) for
> >> compatibility with external users.
> >>
> >> Contributed-under: TianoCore Contribution Agreement 1.0
> >> Signed-off-by: Laszlo Ersek <[email protected]>
> >> ---
> >>  OvmfPkg/Include/Guid/VirtioMmioTransport.h | 25
> >> +++++++++++++++++++++++++
> >>  OvmfPkg/OvmfPkg.dec                        |  1 +
> >>  2 files changed, 26 insertions(+)
> >>
> >> diff --git a/OvmfPkg/Include/Guid/VirtioMmioTransport.h
> >> b/OvmfPkg/Include/Guid/VirtioMmioTransport.h
> >> new file mode 100644
> >> index 0000000..f17d7b1
> >> --- /dev/null
> >> +++ b/OvmfPkg/Include/Guid/VirtioMmioTransport.h
> >> @@ -0,0 +1,25 @@
> >> +/** @file
> >> +  Recommended GUID to be used in the Vendor Hardware device path
> nodes
> >> that
> >> +  identify virtio-mmio transports.
> >> +
> >> +  Copyright (C) 2014, Red Hat, Inc.
> >> +
> >> +  This program and the accompanying materials are licensed and made
> >> available
> >> +  under the terms and conditions of the BSD License that
> accompanies
> >> this
> >> +  distribution. The full text of the license may be found at
> >> +  http://opensource.org/licenses/bsd-license.php.
> >> +
> >> +  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> >> BASIS, WITHOUT
> >> +  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
> >> IMPLIED.
> >> +
> >> +**/
> >> +
> >> +#ifndef __VIRTIO_MMIO_TRANSPORT_H__
> >> +#define __VIRTIO_MMIO_TRANSPORT_H__
> >> +
> >> +#define VIRTIO_MMIO_TRANSPORT_GUID \
> >> +{0x837dca9e, 0xe874, 0x4d82, {0xb2, 0x9a, 0x23, 0xfe, 0x0e, 0x23,
> >> 0xd1, 0xe2}}
> >> +
> >> +extern EFI_GUID gVirtioMmioTransportGuid;
> >> +
> >> +#endif
> >> diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec
> >> index 8802392..41db92d 100644
> >> --- a/OvmfPkg/OvmfPkg.dec
> >> +++ b/OvmfPkg/OvmfPkg.dec
> >> @@ -52,6 +52,7 @@
> >>    gUefiOvmfPkgTokenSpaceGuid      = {0x93bb96af, 0xb9f2, 0x4eb8,
> >> {0x94, 0x62, 0xe0, 0xba, 0x74, 0x56, 0x42, 0x36}}
> >>    gEfiXenInfoGuid                 = {0xd3b46f3b, 0xd441, 0x1244,
> >> {0x9a, 0x12, 0x0, 0x12, 0x27, 0x3f, 0xc1, 0x4d}}
> >>    gOvmfPlatformConfigGuid         = {0x7235c51c, 0x0c80, 0x4cab,
> >> {0x87, 0xac, 0x3b, 0x08, 0x4a, 0x63, 0x04, 0xb1}}
> >> +  gVirtioMmioTransportGuid        = {0x837dca9e, 0xe874, 0x4d82,
> >> {0xb2, 0x9a, 0x23, 0xfe, 0x0e, 0x23, 0xd1, 0xe2}}
> >>
> >>  [Protocols]
> >>    gVirtioDeviceProtocolGuid       = {0xfa920010, 0x6785, 0x4941,
> >> {0xb6, 0xec, 0x49, 0x8c, 0x57, 0x9f, 0x16, 0x0a}}
> >> --
> >> 1.8.3.1
> >>
> >>
> >>
> >> --------------------------------------------------------------------
> ---
> >> -------
> >> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> >> from Actuate! Instantly Supercharge Your Business Reports and
> >> Dashboards
> >> with Interactivity, Sharing, Native Excel Exports, App Integration &
> >> more
> >> Get technology previously reserved for billion-dollar corporations,
> >> FREE
> >>
> http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.c
> >> lktrk
> >> _______________________________________________
> >> edk2-devel mailing list
> >> [email protected]
> >> https://lists.sourceforge.net/lists/listinfo/edk2-devel
> >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> ---------
> > Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> > from Actuate! Instantly Supercharge Your Business Reports and
> Dashboards
> > with Interactivity, Sharing, Native Excel Exports, App Integration &
> more
> > Get technology previously reserved for billion-dollar corporations,
> FREE
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.c
> lktrk
> > _______________________________________________
> > edk2-devel mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/edk2-devel
> >
> 
> 
> -----------------------------------------------------------------------
> -------
> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> from Actuate! Instantly Supercharge Your Business Reports and
> Dashboards
> with Interactivity, Sharing, Native Excel Exports, App Integration &
> more
> Get technology previously reserved for billion-dollar corporations,
> FREE
> http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.c
> lktrk
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/edk2-devel





------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to