diff options
| author | Michael Brown | 2014-07-29 00:38:30 +0200 |
|---|---|---|
| committer | Michael Brown | 2014-07-29 16:57:44 +0200 |
| commit | 036af27a4523c4e15e28d30a1513a3f6d9671774 (patch) | |
| tree | bf284637f91e2258906d736f07a54b1f98dfd68d /src/include/ipxe/xenmem.h | |
| parent | [xen] Import selected public headers (diff) | |
| download | ipxe-036af27a4523c4e15e28d30a1513a3f6d9671774.tar.gz ipxe-036af27a4523c4e15e28d30a1513a3f6d9671774.tar.xz ipxe-036af27a4523c4e15e28d30a1513a3f6d9671774.zip | |
[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 */ |
