diff options
author | Michael Brown <mcb30@ipxe.org> | 2014-07-28 23:38:30 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2014-07-29 15:57:44 +0100 |
commit | 036af27a4523c4e15e28d30a1513a3f6d9671774 (patch) | |
tree | bf284637f91e2258906d736f07a54b1f98dfd68d /src/include/ipxe/xenmem.h | |
parent | ec94a8798f8fbba42628946108d6d9607a980da4 (diff) | |
download | ipxe-036af27a4523c4e15e28d30a1513a3f6d9671774.tar.gz |
[xen] Add basic support for PV-HVM domains
Add basic support for Xen PV-HVM domains (detected via the Xen
platform PCI device with IDs 5853:0001), including support for
accessing configuration via XenStore and enumerating devices via
XenBus.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include/ipxe/xenmem.h')
-rw-r--r-- | src/include/ipxe/xenmem.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/include/ipxe/xenmem.h b/src/include/ipxe/xenmem.h new file mode 100644 index 000000000..9b9aeda9c --- /dev/null +++ b/src/include/ipxe/xenmem.h @@ -0,0 +1,46 @@ +#ifndef _IPXE_XENMEM_H +#define _IPXE_XENMEM_H + +/** @file + * + * Xen memory operations + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <ipxe/xen.h> +#include <xen/memory.h> + +/** + * Add page to physical address space + * + * @v xen Xen hypervisor + * @v add Page mapping descriptor + * @ret xenrc Xen status code + */ +static inline __attribute__ (( always_inline )) int +xenmem_add_to_physmap ( struct xen_hypervisor *xen, + struct xen_add_to_physmap *add ) { + + return xen_hypercall_2 ( xen, __HYPERVISOR_memory_op, + XENMEM_add_to_physmap, virt_to_phys ( add ) ); +} + +/** + * Remove page from physical address space + * + * @v xen Xen hypervisor + * @v remove Page mapping descriptor + * @ret xenrc Xen status code + */ +static inline __attribute__ (( always_inline )) int +xenmem_remove_from_physmap ( struct xen_hypervisor *xen, + struct xen_remove_from_physmap *remove ) { + + return xen_hypercall_2 ( xen, __HYPERVISOR_memory_op, + XENMEM_remove_from_physmap, + virt_to_phys ( remove ) ); +} + +#endif /* _IPXE_XENMEM_H */ |