* thus no hugepages need to be broken up to unmap it.
*/
arch_unmap_memory_region(cell, mem);
- if (!(mem->flags & JAILHOUSE_MEM_COMM_REGION))
+ if (!(mem->flags & (JAILHOUSE_MEM_COMM_REGION |
+ JAILHOUSE_MEM_ROOTSHARED)))
remap_to_root_cell(mem, WARN_ON_ERROR);
}
/*
* Unmap exceptions:
* - the communication region is not backed by root memory
+ * - regions that may be shared with the root cell
*/
- if (!(mem->flags & JAILHOUSE_MEM_COMM_REGION)) {
+ if (!(mem->flags & (JAILHOUSE_MEM_COMM_REGION |
+ JAILHOUSE_MEM_ROOTSHARED))) {
err = unmap_from_root_cell(mem);
if (err)
goto err_destroy_cell;
#define JAILHOUSE_MEM_DMA 0x0008
#define JAILHOUSE_MEM_COMM_REGION 0x0010
#define JAILHOUSE_MEM_LOADABLE 0x0020
+#define JAILHOUSE_MEM_ROOTSHARED 0x0040
#define JAILHOUSE_MEM_VALID_FLAGS (JAILHOUSE_MEM_READ | \
JAILHOUSE_MEM_WRITE | \
JAILHOUSE_MEM_EXECUTE | \
JAILHOUSE_MEM_DMA | \
JAILHOUSE_MEM_COMM_REGION | \
- JAILHOUSE_MEM_LOADABLE)
+ JAILHOUSE_MEM_LOADABLE | \
+ JAILHOUSE_MEM_ROOTSHARED)
struct jailhouse_memory {
__u64 phys_start;