On x86, we already use the communication region to pass certain platform specific information to guests. So let's do this on all ARM architectures as well. This patch is a preparation for that.
Let's use guest paddr 0x80000000 (2GiB) for the comm region, which doesn't seem to collide with any existing (MMIO) region of our current inmates. Side note: Even if the communication region is not used by inmates, the hypervisor will always statically allocate this memory region in its struct cell. So there is no waste of memory if we expose that region to our guests. Signed-off-by: Ralf Ramsauer <[email protected]> --- configs/arm/bananapi-gic-demo.c | 8 +++++++- configs/arm/bananapi-linux-demo.c | 8 +++++++- configs/arm/bananapi-uart-demo.c | 8 +++++++- configs/arm/emtrion-rzg1e-linux-demo.c | 8 +++++++- configs/arm/emtrion-rzg1e-uart-demo.c | 8 +++++++- configs/arm/emtrion-rzg1h-linux-demo.c | 8 +++++++- configs/arm/emtrion-rzg1h-uart-demo.c | 8 +++++++- configs/arm/emtrion-rzg1m-linux-demo.c | 8 +++++++- configs/arm/emtrion-rzg1m-uart-demo.c | 8 +++++++- configs/arm/jetson-tk1-demo.c | 8 +++++++- configs/arm/jetson-tk1-linux-demo.c | 8 +++++++- configs/arm/orangepi0-gic-demo.c | 8 +++++++- configs/arm/orangepi0-linux-demo.c | 8 +++++++- configs/arm/vexpress-gic-demo.c | 8 +++++++- configs/arm/vexpress-linux-demo.c | 8 +++++++- configs/arm/vexpress-uart-demo.c | 8 +++++++- configs/arm64/amd-seattle-gic-demo.c | 8 +++++++- configs/arm64/amd-seattle-linux-demo.c | 8 +++++++- configs/arm64/amd-seattle-uart-demo.c | 8 +++++++- configs/arm64/espressobin-gic-demo.c | 8 +++++++- configs/arm64/espressobin-linux-demo.c | 8 +++++++- configs/arm64/foundation-v8-gic-demo.c | 8 +++++++- configs/arm64/foundation-v8-linux-demo.c | 8 +++++++- configs/arm64/foundation-v8-uart-demo.c | 8 +++++++- configs/arm64/hikey-gic-demo.c | 8 +++++++- configs/arm64/hikey-linux-demo.c | 8 +++++++- configs/arm64/imx8mq-gic-demo.c | 8 +++++++- configs/arm64/jetson-tx1-demo.c | 8 +++++++- configs/arm64/jetson-tx1-linux-demo.c | 8 +++++++- configs/arm64/jetson-tx2-demo.c | 8 +++++++- configs/arm64/qemu-arm64-gic-demo.c | 8 +++++++- configs/arm64/qemu-arm64-linux-demo.c | 8 +++++++- configs/arm64/zynqmp-zcu102-gic-demo.c | 8 +++++++- configs/arm64/zynqmp-zcu102-linux-demo-2.c | 8 +++++++- configs/arm64/zynqmp-zcu102-linux-demo.c | 8 +++++++- inmates/lib/arm-common/include/inmate.h | 1 + 36 files changed, 246 insertions(+), 35 deletions(-) diff --git a/configs/arm/bananapi-gic-demo.c b/configs/arm/bananapi-gic-demo.c index 84436d71..a96e9cfb 100644 --- a/configs/arm/bananapi-gic-demo.c +++ b/configs/arm/bananapi-gic-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[4]; + struct jailhouse_memory mem_regions[5]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -66,5 +66,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, }; diff --git a/configs/arm/bananapi-linux-demo.c b/configs/arm/bananapi-linux-demo.c index 3e710c53..93d401c6 100644 --- a/configs/arm/bananapi-linux-demo.c +++ b/configs/arm/bananapi-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[5]; + struct jailhouse_memory mem_regions[6]; struct jailhouse_irqchip irqchips[1]; struct jailhouse_pci_device pci_devices[1]; } __attribute__((packed)) config = { @@ -80,6 +80,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm/bananapi-uart-demo.c b/configs/arm/bananapi-uart-demo.c index 5b3ff9aa..d33cd952 100644 --- a/configs/arm/bananapi-uart-demo.c +++ b/configs/arm/bananapi-uart-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[3]; + struct jailhouse_memory mem_regions[4]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -59,5 +59,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm/emtrion-rzg1e-linux-demo.c b/configs/arm/emtrion-rzg1e-linux-demo.c index 9d943b6a..7ddd20e7 100644 --- a/configs/arm/emtrion-rzg1e-linux-demo.c +++ b/configs/arm/emtrion-rzg1e-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[10]; + struct jailhouse_memory mem_regions[11]; struct jailhouse_irqchip irqchips[3]; struct jailhouse_pci_device pci_devices[1]; } __attribute__((packed)) config = { @@ -115,6 +115,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm/emtrion-rzg1e-uart-demo.c b/configs/arm/emtrion-rzg1e-uart-demo.c index 2e4787e4..c063b4c8 100644 --- a/configs/arm/emtrion-rzg1e-uart-demo.c +++ b/configs/arm/emtrion-rzg1e-uart-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -53,5 +53,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm/emtrion-rzg1h-linux-demo.c b/configs/arm/emtrion-rzg1h-linux-demo.c index f5f96a1c..97389245 100644 --- a/configs/arm/emtrion-rzg1h-linux-demo.c +++ b/configs/arm/emtrion-rzg1h-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[12]; + struct jailhouse_memory mem_regions[13]; struct jailhouse_irqchip irqchips[3]; struct jailhouse_pci_device pci_devices[1]; } __attribute__((packed)) config = { @@ -129,6 +129,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm/emtrion-rzg1h-uart-demo.c b/configs/arm/emtrion-rzg1h-uart-demo.c index 9f37e688..8bcfb9bd 100644 --- a/configs/arm/emtrion-rzg1h-uart-demo.c +++ b/configs/arm/emtrion-rzg1h-uart-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -52,5 +52,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm/emtrion-rzg1m-linux-demo.c b/configs/arm/emtrion-rzg1m-linux-demo.c index f53e6c4e..e7893512 100644 --- a/configs/arm/emtrion-rzg1m-linux-demo.c +++ b/configs/arm/emtrion-rzg1m-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[12]; + struct jailhouse_memory mem_regions[13]; struct jailhouse_irqchip irqchips[3]; struct jailhouse_pci_device pci_devices[1]; } __attribute__((packed)) config = { @@ -129,6 +129,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm/emtrion-rzg1m-uart-demo.c b/configs/arm/emtrion-rzg1m-uart-demo.c index d37c11a4..752f7aeb 100644 --- a/configs/arm/emtrion-rzg1m-uart-demo.c +++ b/configs/arm/emtrion-rzg1m-uart-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -52,5 +52,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm/jetson-tk1-demo.c b/configs/arm/jetson-tk1-demo.c index 84555501..15c90e61 100644 --- a/configs/arm/jetson-tk1-demo.c +++ b/configs/arm/jetson-tk1-demo.c @@ -25,7 +25,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -58,5 +58,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, }; diff --git a/configs/arm/jetson-tk1-linux-demo.c b/configs/arm/jetson-tk1-linux-demo.c index 20f1f1e6..c66a6863 100644 --- a/configs/arm/jetson-tk1-linux-demo.c +++ b/configs/arm/jetson-tk1-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[4]; + struct jailhouse_memory mem_regions[5]; struct jailhouse_irqchip irqchips[2]; struct jailhouse_pci_device pci_devices[1]; } __attribute__((packed)) config = { @@ -75,6 +75,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm/orangepi0-gic-demo.c b/configs/arm/orangepi0-gic-demo.c index 3a1ab7b3..fe199bcd 100644 --- a/configs/arm/orangepi0-gic-demo.c +++ b/configs/arm/orangepi0-gic-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[3]; + struct jailhouse_memory mem_regions[4]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -59,5 +59,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, }; diff --git a/configs/arm/orangepi0-linux-demo.c b/configs/arm/orangepi0-linux-demo.c index 18d9f21f..a3da1053 100644 --- a/configs/arm/orangepi0-linux-demo.c +++ b/configs/arm/orangepi0-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[4]; + struct jailhouse_memory mem_regions[5]; struct jailhouse_irqchip irqchips[1]; struct jailhouse_pci_device pci_devices[1]; } __attribute__((packed)) config = { @@ -73,6 +73,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm/vexpress-gic-demo.c b/configs/arm/vexpress-gic-demo.c index 502feb94..fd59dfa2 100644 --- a/configs/arm/vexpress-gic-demo.c +++ b/configs/arm/vexpress-gic-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -55,5 +55,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, }; diff --git a/configs/arm/vexpress-linux-demo.c b/configs/arm/vexpress-linux-demo.c index 47b47b59..7f1b8198 100644 --- a/configs/arm/vexpress-linux-demo.c +++ b/configs/arm/vexpress-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; struct jailhouse_irqchip irqchips[1]; } __attribute__((packed)) config = { .cell = { @@ -56,6 +56,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm/vexpress-uart-demo.c b/configs/arm/vexpress-uart-demo.c index 4a492258..eedcad90 100644 --- a/configs/arm/vexpress-uart-demo.c +++ b/configs/arm/vexpress-uart-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -55,5 +55,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm64/amd-seattle-gic-demo.c b/configs/arm64/amd-seattle-gic-demo.c index 306907f1..aaccdf25 100644 --- a/configs/arm64/amd-seattle-gic-demo.c +++ b/configs/arm64/amd-seattle-gic-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -55,5 +55,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm64/amd-seattle-linux-demo.c b/configs/arm64/amd-seattle-linux-demo.c index ade1e09f..88b9740d 100644 --- a/configs/arm64/amd-seattle-linux-demo.c +++ b/configs/arm64/amd-seattle-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[8]; + struct jailhouse_memory mem_regions[9]; struct jailhouse_irqchip irqchips[2]; struct jailhouse_pci_device pci_devices[1]; } __attribute__((packed)) config = { @@ -100,6 +100,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm64/amd-seattle-uart-demo.c b/configs/arm64/amd-seattle-uart-demo.c index 709b1a67..b620919b 100644 --- a/configs/arm64/amd-seattle-uart-demo.c +++ b/configs/arm64/amd-seattle-uart-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -55,5 +55,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm64/espressobin-gic-demo.c b/configs/arm64/espressobin-gic-demo.c index 1e0d919c..2cd1e5cd 100644 --- a/configs/arm64/espressobin-gic-demo.c +++ b/configs/arm64/espressobin-gic-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -55,5 +55,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm64/espressobin-linux-demo.c b/configs/arm64/espressobin-linux-demo.c index e454745e..1d358c31 100644 --- a/configs/arm64/espressobin-linux-demo.c +++ b/configs/arm64/espressobin-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[4]; + struct jailhouse_memory mem_regions[5]; struct jailhouse_irqchip irqchips[1]; struct jailhouse_pci_device pci_devices[1]; } __attribute__((packed)) config = { @@ -73,6 +73,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm64/foundation-v8-gic-demo.c b/configs/arm64/foundation-v8-gic-demo.c index 016f1a5c..02a8f38b 100644 --- a/configs/arm64/foundation-v8-gic-demo.c +++ b/configs/arm64/foundation-v8-gic-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -55,5 +55,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, }; diff --git a/configs/arm64/foundation-v8-linux-demo.c b/configs/arm64/foundation-v8-linux-demo.c index 32aa503b..1601a4f0 100644 --- a/configs/arm64/foundation-v8-linux-demo.c +++ b/configs/arm64/foundation-v8-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; struct jailhouse_irqchip irqchips[1]; } __attribute__((packed)) config = { .cell = { @@ -64,6 +64,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm64/foundation-v8-uart-demo.c b/configs/arm64/foundation-v8-uart-demo.c index c4e04b71..bde46352 100644 --- a/configs/arm64/foundation-v8-uart-demo.c +++ b/configs/arm64/foundation-v8-uart-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -55,5 +55,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm64/hikey-gic-demo.c b/configs/arm64/hikey-gic-demo.c index 27ac62da..f5618863 100644 --- a/configs/arm64/hikey-gic-demo.c +++ b/configs/arm64/hikey-gic-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -55,5 +55,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm64/hikey-linux-demo.c b/configs/arm64/hikey-linux-demo.c index 6bc576aa..57cfb959 100644 --- a/configs/arm64/hikey-linux-demo.c +++ b/configs/arm64/hikey-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[4]; + struct jailhouse_memory mem_regions[5]; struct jailhouse_irqchip irqchips[1]; struct jailhouse_pci_device pci_devices[1]; } __attribute__((packed)) config = { @@ -73,6 +73,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm64/imx8mq-gic-demo.c b/configs/arm64/imx8mq-gic-demo.c index 35a64eb9..7f13f7ae 100644 --- a/configs/arm64/imx8mq-gic-demo.c +++ b/configs/arm64/imx8mq-gic-demo.c @@ -18,7 +18,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -52,5 +52,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm64/jetson-tx1-demo.c b/configs/arm64/jetson-tx1-demo.c index 4ba6c8f9..e369d00b 100644 --- a/configs/arm64/jetson-tx1-demo.c +++ b/configs/arm64/jetson-tx1-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -52,5 +52,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, }; diff --git a/configs/arm64/jetson-tx1-linux-demo.c b/configs/arm64/jetson-tx1-linux-demo.c index 304956fe..8ea66a32 100644 --- a/configs/arm64/jetson-tx1-linux-demo.c +++ b/configs/arm64/jetson-tx1-linux-demo.c @@ -27,7 +27,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[4]; + struct jailhouse_memory mem_regions[5]; struct jailhouse_irqchip irqchips[2]; struct jailhouse_pci_device pci_devices[1]; } __attribute__((packed)) config = { @@ -83,6 +83,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm64/jetson-tx2-demo.c b/configs/arm64/jetson-tx2-demo.c index 7cb8dbe7..93b3fbf9 100644 --- a/configs/arm64/jetson-tx2-demo.c +++ b/configs/arm64/jetson-tx2-demo.c @@ -16,7 +16,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -47,5 +47,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, }; diff --git a/configs/arm64/qemu-arm64-gic-demo.c b/configs/arm64/qemu-arm64-gic-demo.c index 99b6942b..33e95dc3 100644 --- a/configs/arm64/qemu-arm64-gic-demo.c +++ b/configs/arm64/qemu-arm64-gic-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -55,5 +55,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm64/qemu-arm64-linux-demo.c b/configs/arm64/qemu-arm64-linux-demo.c index 9fa0d807..b72d6ab6 100644 --- a/configs/arm64/qemu-arm64-linux-demo.c +++ b/configs/arm64/qemu-arm64-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[4]; + struct jailhouse_memory mem_regions[5]; struct jailhouse_irqchip irqchips[1]; struct jailhouse_pci_device pci_devices[1]; } __attribute__((packed)) config = { @@ -74,6 +74,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm64/zynqmp-zcu102-gic-demo.c b/configs/arm64/zynqmp-zcu102-gic-demo.c index 19efef30..a12799c0 100644 --- a/configs/arm64/zynqmp-zcu102-gic-demo.c +++ b/configs/arm64/zynqmp-zcu102-gic-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[2]; + struct jailhouse_memory mem_regions[3]; } __attribute__((packed)) config = { .cell = { .signature = JAILHOUSE_CELL_DESC_SIGNATURE, @@ -55,5 +55,11 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, } }; diff --git a/configs/arm64/zynqmp-zcu102-linux-demo-2.c b/configs/arm64/zynqmp-zcu102-linux-demo-2.c index c2c3b494..1091712c 100644 --- a/configs/arm64/zynqmp-zcu102-linux-demo-2.c +++ b/configs/arm64/zynqmp-zcu102-linux-demo-2.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[4]; + struct jailhouse_memory mem_regions[5]; struct jailhouse_irqchip irqchips[1]; struct jailhouse_pci_device pci_devices[2]; } __attribute__((packed)) config = { @@ -73,6 +73,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/configs/arm64/zynqmp-zcu102-linux-demo.c b/configs/arm64/zynqmp-zcu102-linux-demo.c index 07391b41..d226ca7a 100644 --- a/configs/arm64/zynqmp-zcu102-linux-demo.c +++ b/configs/arm64/zynqmp-zcu102-linux-demo.c @@ -21,7 +21,7 @@ struct { struct jailhouse_cell_desc cell; __u64 cpus[1]; - struct jailhouse_memory mem_regions[5]; + struct jailhouse_memory mem_regions[6]; struct jailhouse_irqchip irqchips[1]; struct jailhouse_pci_device pci_devices[2]; } __attribute__((packed)) config = { @@ -80,6 +80,12 @@ struct { .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, + /* communication region */ { + .virt_start = 0x80000000, + .size = 0x00001000, + .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | + JAILHOUSE_MEM_COMM_REGION, + }, }, .irqchips = { diff --git a/inmates/lib/arm-common/include/inmate.h b/inmates/lib/arm-common/include/inmate.h index 921fde96..d0f5b9a3 100644 --- a/inmates/lib/arm-common/include/inmate.h +++ b/inmates/lib/arm-common/include/inmate.h @@ -39,6 +39,7 @@ #ifndef _JAILHOUSE_INMATE_H #define _JAILHOUSE_INMATE_H +#define COMM_REGION_BASE 0x80000000 #define PAGE_SIZE (4 * 1024ULL) typedef signed char s8; -- 2.17.0 -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
