[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [edk2] [PATCH RFC v2 3/7] OvmfPkg: define EFI_XEN_OVMF_INFO and extend XenInfo



On Tue, Nov 19, 2013 at 12:38 PM, Wei Liu <wei.liu2@xxxxxxxxxx> wrote:
> EFI_XEN_OVMF_INFO is defined to accept configurations from hvmloader. It
> must match the definition on Xen side.
>
> XenInfo is extended to include those bits as well. Currently only E820
> map is in use.
>
> Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> ---
>  OvmfPkg/Include/Guid/XenInfo.h |   27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
>
> diff --git a/OvmfPkg/Include/Guid/XenInfo.h b/OvmfPkg/Include/Guid/XenInfo.h
> index d512b0b..eaeab1a 100644
> --- a/OvmfPkg/Include/Guid/XenInfo.h
> +++ b/OvmfPkg/Include/Guid/XenInfo.h
> @@ -18,6 +18,28 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER 
> EXPRESS OR IMPLIED.
>  #define EFI_XEN_INFO_GUID \
>      { 0xd3b46f3b, 0xd441, 0x1244, {0x9a, 0x12, 0x0, 0x12, 0x27, 0x3f, 0xc1, 
> 0x4d } }
>
> +#pragma pack(1)
> +typedef struct {
> +  CHAR8 Signature[11]; /* XenHVMOVMF\0 */
> +  CHAR8 Padding[3];

Does this follow a convention used by Xen? Normally EDK II would use
either a 4 or 8 byte integer signature with SIGNATURE_32/64.

This information does not seem all that OVMF specific, but I guess
from Xen's perspective it is?

> +  UINT8 Length;     /* Length of this struct */
> +  UINT8 Checksum;   /* Set such that the sum over bytes 0..length == 0 */
> +  /*
> +   * Physical address of an array of tables_nr elements.

tables_nr?

> +   *
> +   * Each element is a 32 bit value contianing the physical address
> +   * of a BIOS table.
> +   */
> +  UINT32 Tables;

64-bit EFI_PHYSICAL_ADDRESS type?

> +  UINT32 TablesNr;

Could this be TableCount?

Is "Tables" unused in this patch series? The purpose doesn't seem
clear. (Perhaps an updated comment or commit message could help?)

> +  /*
> +   * Physical address of the e820 table, contains e820_nr entries.

e820_nr?

> +   */
> +  UINT32 E820;

64-bit EFI_PHYSICAL_ADDRESS type?

> +  UINT32 E820Nr;

Maybe E820EntriesCount instead?

> +} EFI_XEN_OVMF_INFO;
> +#pragma pack()

Since this struct defines a Xen <=> OVMF data transfer, maybe we
should consider a new include file? Or, maybe just a good comment on
the structure?

> +
>  typedef struct {
>    ///
>    /// Beginning of the hypercall page.
> @@ -35,6 +57,11 @@ typedef struct {
>    /// Hypervisor minor version.
>    ///
>    UINT16 VersionMinor;
> +  ///
> +  /// E820 map
> +  ///
> +  VOID *E820;
> +  UINT16 E820EntryCount;

I think we (previously) made a mistake with this structure. It is a
HOB, and therefore produced by PEI. HOBs can be consumed by DXE code.
This means that the VOID* members will be different between PEI and
DXE when the Ia32X64 build is used. Right now, I think only PEI looks
at the HOB. This struct is internal to OVMF, so less of a concern than
the Xen <=> OVMF interface.

-Jordan

>  } EFI_XEN_INFO;
>
>  extern EFI_GUID gEfiXenInfoGuid;
> --
> 1.7.10.4
>
>
> ------------------------------------------------------------------------------
> Shape the Mobile Experience: Free Subscription
> Software experts and developers: Be at the forefront of tech innovation.
> Intel(R) Software Adrenaline delivers strategic insight and game-changing
> conversations that shape the rapidly evolving mobile landscape. Sign up now.
> http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.sourceforge.net/lists/listinfo/edk2-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.