diff options
-rw-r--r-- | board/xen/xenguest_arm64/xenguest_arm64.c | 6 | ||||
-rw-r--r-- | drivers/xen/hypervisor.c | 8 | ||||
-rw-r--r-- | include/xen.h | 8 |
3 files changed, 22 insertions, 0 deletions
diff --git a/board/xen/xenguest_arm64/xenguest_arm64.c b/board/xen/xenguest_arm64/xenguest_arm64.c index cd3693892a..cce54369bb 100644 --- a/board/xen/xenguest_arm64/xenguest_arm64.c +++ b/board/xen/xenguest_arm64/xenguest_arm64.c @@ -12,6 +12,7 @@ #include <dm.h> #include <errno.h> #include <malloc.h> +#include <xen.h> #include <asm/io.h> #include <asm/armv8/mmu.h> @@ -194,3 +195,8 @@ int print_cpuinfo(void) return 0; } +void board_cleanup_before_linux(void) +{ + xen_fini(); +} + diff --git a/drivers/xen/hypervisor.c b/drivers/xen/hypervisor.c index 58b0865e6a..178c206f5b 100644 --- a/drivers/xen/hypervisor.c +++ b/drivers/xen/hypervisor.c @@ -242,3 +242,11 @@ void xen_init(void) init_gnttab(); } +void xen_fini(void) +{ + debug("%s\n", __func__); + + fini_gnttab(); + fini_xenbus(); + fini_events(); +} diff --git a/include/xen.h b/include/xen.h index 686b7148b5..a952a2c84b 100644 --- a/include/xen.h +++ b/include/xen.h @@ -13,4 +13,12 @@ */ void xen_init(void); +/** + * xen_fini() - Board cleanup before Linux kernel start + * + * Unmap Xen memory pages the specified guest's pseudophysical + * address space and unbind all event channels. + */ +void xen_fini(void); + #endif /* __XEN_H__ */ |