aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/xen/efi.h
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2011-06-28 09:20:49 +0100
committerJan Beulich <jbeulich@novell.com>2011-06-28 09:20:49 +0100
commitfacac0af87ef3e533d3690d76acaeaaa41e1631c (patch)
tree5239fbcadbd5b1a1c695869b10707deb15770777 /xen/include/xen/efi.h
parentbf6501a62e80ec1cf756290d4c3ec4991455f64e (diff)
downloadxen-facac0af87ef3e533d3690d76acaeaaa41e1631c.tar.gz
xen-facac0af87ef3e533d3690d76acaeaaa41e1631c.tar.bz2
xen-facac0af87ef3e533d3690d76acaeaaa41e1631c.zip
x86-64: EFI runtime code
This allows Dom0 access to all suitable EFI runtime services. The actual calls into EFI are done in "physical" mode, as entering virtual mode has been determined to be incompatible with kexec (EFI's SetVirtualAddressMap() can be called only once, and hence the secondary kernel can't establish its mappings). ("Physical" mode here being quoted because this is a mode with paging enabled [otherwise 64-bit mode wouldn't work] but all mappings being 1:1.) Open issue (not preventing this from being committed imo): Page (and perhaps other) faults occuring while calling runtime functions in the context of a hypercall don't get handled correctly (they don't even seem to reach do_page_fault()). I'm intending to investigate this further. Signed-off-by: Jan Beulich <jbeulich@novell.com>
Diffstat (limited to 'xen/include/xen/efi.h')
-rw-r--r--xen/include/xen/efi.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/xen/include/xen/efi.h b/xen/include/xen/efi.h
index d32d4f2bc1..390316439c 100644
--- a/xen/include/xen/efi.h
+++ b/xen/include/xen/efi.h
@@ -29,10 +29,18 @@ extern struct efi efi;
union xenpf_efi_info;
union compat_pf_efi_info;
+struct xenpf_efi_runtime_call;
+struct compat_pf_efi_runtime_call;
+
void efi_init_memory(void);
+unsigned long efi_get_time(void);
+void efi_halt_system(void);
+void efi_reset_system(bool_t warm);
#ifndef COMPAT
int efi_get_info(uint32_t idx, union xenpf_efi_info *);
+int efi_runtime_call(struct xenpf_efi_runtime_call *);
#endif
int efi_compat_get_info(uint32_t idx, union compat_pf_efi_info *);
+int efi_compat_runtime_call(struct compat_pf_efi_runtime_call *);
#endif /* __XEN_EFI_H__ */