Ovmf/Xen: introduce XENIO_PROTOCOL

This introduces the abstract XENIO_PROTOCOL that will be used to
communicate the Xen grant table address to drivers supporting this
protocol. Primary purpose is allowing us to change the XenBusDxe
implementation so that it can support non-PCI Xen implementations
such as Xen on ARM.

Contributed-under: TianoCore Contribution Agreement 1.0
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16971 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Ard Biesheuvel 2015-02-28 20:32:50 +00:00 committed by lersek
parent cd8ff8fdda
commit b2165af423
2 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,48 @@
/** @file
XenIo protocol to abstract arch specific details
The Xen implementations for the Intel and ARM archictures differ in the way
the base address of the grant table is communicated to the guest. The former
uses a virtual PCI device, while the latter uses a device tree node.
In order to allow the XenBusDxe UEFI driver to be reused for the non-PCI
Xen implementation, this abstract protocol can be installed on a handle
with the appropriate base address.
Copyright (C) 2014, Linaro Ltd.
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which 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 __PROTOCOL_XENIO_H__
#define __PROTOCOL_XENIO_H__
#include <IndustryStandard/Xen/xen.h>
#define XENIO_PROTOCOL_GUID \
{0x6efac84f, 0x0ab0, 0x4747, {0x81, 0xbe, 0x85, 0x55, 0x62, 0x59, 0x04, 0x49}}
///
/// Forward declaration
///
typedef struct _XENIO_PROTOCOL XENIO_PROTOCOL;
///
/// Protocol structure
///
struct _XENIO_PROTOCOL {
//
// Protocol data fields
//
EFI_PHYSICAL_ADDRESS GrantTableAddress;
};
extern EFI_GUID gXenIoProtocolGuid;
#endif

View File

@ -58,6 +58,7 @@
gVirtioDeviceProtocolGuid = {0xfa920010, 0x6785, 0x4941, {0xb6, 0xec, 0x49, 0x8c, 0x57, 0x9f, 0x16, 0x0a}}
gBlockMmioProtocolGuid = {0x6b558ce3, 0x69e5, 0x4c67, {0xa6, 0x34, 0xf7, 0xfe, 0x72, 0xad, 0xbe, 0x84}}
gXenBusProtocolGuid = {0x3d3ca290, 0xb9a5, 0x11e3, {0xb7, 0x5d, 0xb8, 0xac, 0x6f, 0x7d, 0x65, 0xe6}}
gXenIoProtocolGuid = {0x6efac84f, 0x0ab0, 0x4747, {0x81, 0xbe, 0x85, 0x55, 0x62, 0x59, 0x04, 0x49}}
[PcdsFixedAtBuild]
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|0x0|UINT32|0