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.clktrk
> _______________________________________________
> 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