A common source of breakages during development and testing is to run
with outdated configuration files against newer binaries, or vice versa.
Catch and report this by converting the last 2 bytes of the system and
cell config signatures into a revision number. Whenever we change their
layout or semantic, this number shall be increased.
Configs were auto-converted via
sed -i -e '/\.signature =/a\\t\t.revision = JAILHOUSE_CONFIG_REVISION,' \
`git ls-files configs/*.c`
Signed-off-by: Jan Kiszka <[email protected]>
---
configs/amd-seattle-gic-demo.c | 1 +
configs/amd-seattle-linux-demo.c | 1 +
configs/amd-seattle-uart-demo.c | 1 +
configs/amd-seattle.c | 1 +
configs/apic-demo.c | 1 +
configs/bananapi-gic-demo.c | 1 +
configs/bananapi-linux-demo.c | 1 +
configs/bananapi-uart-demo.c | 1 +
configs/bananapi.c | 1 +
configs/e1000-demo.c | 1 +
configs/f2a88xm-hd3.c | 1 +
configs/foundation-v8-gic-demo.c | 1 +
configs/foundation-v8-linux-demo.c | 1 +
configs/foundation-v8-uart-demo.c | 1 +
configs/foundation-v8.c | 1 +
configs/h87i.c | 1 +
configs/hikey-gic-demo.c | 1 +
configs/hikey-linux-demo.c | 1 +
configs/hikey.c | 1 +
configs/imb-a180.c | 1 +
configs/ioapic-demo.c | 1 +
configs/ivshmem-demo.c | 1 +
configs/jetson-tk1-demo.c | 1 +
configs/jetson-tk1-linux-demo.c | 1 +
configs/jetson-tk1.c | 1 +
configs/linux-x86-demo.c | 1 +
configs/pci-demo.c | 1 +
configs/qemu-vm.c | 1 +
configs/smp-demo.c | 1 +
configs/tiny-demo.c | 1 +
configs/vexpress-gic-demo.c | 1 +
configs/vexpress-linux-demo.c | 1 +
configs/vexpress-uart-demo.c | 1 +
configs/vexpress.c | 1 +
driver/cell.c | 5 +++++
driver/main.c | 4 ++++
hypervisor/include/jailhouse/cell-config.h | 14 ++++++++++----
tools/jailhouse-cell-linux | 9 +++++++--
tools/root-cell-config.c.tmpl | 1 +
39 files changed, 61 insertions(+), 6 deletions(-)
diff --git a/configs/amd-seattle-gic-demo.c b/configs/amd-seattle-gic-demo.c
index 142f11a..a726b33 100644
--- a/configs/amd-seattle-gic-demo.c
+++ b/configs/amd-seattle-gic-demo.c
@@ -22,6 +22,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "gic-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/amd-seattle-linux-demo.c b/configs/amd-seattle-linux-demo.c
index 6f2f67a..e9bbc5c 100644
--- a/configs/amd-seattle-linux-demo.c
+++ b/configs/amd-seattle-linux-demo.c
@@ -24,6 +24,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "linux-inmate-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/amd-seattle-uart-demo.c b/configs/amd-seattle-uart-demo.c
index 4f814c0..7294b96 100644
--- a/configs/amd-seattle-uart-demo.c
+++ b/configs/amd-seattle-uart-demo.c
@@ -22,6 +22,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "pl011-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/amd-seattle.c b/configs/amd-seattle.c
index cd589e5..6353678 100644
--- a/configs/amd-seattle.c
+++ b/configs/amd-seattle.c
@@ -24,6 +24,7 @@ struct {
} __attribute__((packed)) config = {
.header = {
.signature = JAILHOUSE_SYSTEM_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.hypervisor_memory = {
.phys_start = 0x82fc000000,
.size = 0x4000000,
diff --git a/configs/apic-demo.c b/configs/apic-demo.c
index 3972109..db599c3 100644
--- a/configs/apic-demo.c
+++ b/configs/apic-demo.c
@@ -26,6 +26,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "apic-demo",
.cpu_set_size = sizeof(config.cpus),
diff --git a/configs/bananapi-gic-demo.c b/configs/bananapi-gic-demo.c
index f7c9ee6..84436d7 100644
--- a/configs/bananapi-gic-demo.c
+++ b/configs/bananapi-gic-demo.c
@@ -25,6 +25,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "bananapi-gic-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/bananapi-linux-demo.c b/configs/bananapi-linux-demo.c
index 495d242..a323950 100644
--- a/configs/bananapi-linux-demo.c
+++ b/configs/bananapi-linux-demo.c
@@ -27,6 +27,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "bananapi-linux-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/bananapi-uart-demo.c b/configs/bananapi-uart-demo.c
index 89eb736..5b3ff9a 100644
--- a/configs/bananapi-uart-demo.c
+++ b/configs/bananapi-uart-demo.c
@@ -25,6 +25,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "bananapi-uart-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/bananapi.c b/configs/bananapi.c
index f3d095b..5802619 100644
--- a/configs/bananapi.c
+++ b/configs/bananapi.c
@@ -26,6 +26,7 @@ struct {
} __attribute__((packed)) config = {
.header = {
.signature = JAILHOUSE_SYSTEM_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.hypervisor_memory = {
.phys_start = 0x7c000000,
.size = 0x4000000,
diff --git a/configs/e1000-demo.c b/configs/e1000-demo.c
index cccf00a..23c100c 100644
--- a/configs/e1000-demo.c
+++ b/configs/e1000-demo.c
@@ -28,6 +28,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "e1000-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/f2a88xm-hd3.c b/configs/f2a88xm-hd3.c
index f1957fa..ec314ed 100644
--- a/configs/f2a88xm-hd3.c
+++ b/configs/f2a88xm-hd3.c
@@ -33,6 +33,7 @@ struct {
} __attribute__((packed)) config = {
.header = {
.signature = JAILHOUSE_SYSTEM_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.hypervisor_memory = {
.phys_start = 0x3b000000,
.size = 0x4000000,
diff --git a/configs/foundation-v8-gic-demo.c b/configs/foundation-v8-gic-demo.c
index 2984c61..7808333 100644
--- a/configs/foundation-v8-gic-demo.c
+++ b/configs/foundation-v8-gic-demo.c
@@ -22,6 +22,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "gic-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/foundation-v8-linux-demo.c
b/configs/foundation-v8-linux-demo.c
index ea90156..4c61641 100644
--- a/configs/foundation-v8-linux-demo.c
+++ b/configs/foundation-v8-linux-demo.c
@@ -23,6 +23,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "linux-inmate-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/foundation-v8-uart-demo.c
b/configs/foundation-v8-uart-demo.c
index 07c931b..e6f836d 100644
--- a/configs/foundation-v8-uart-demo.c
+++ b/configs/foundation-v8-uart-demo.c
@@ -22,6 +22,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "pl011-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/foundation-v8.c b/configs/foundation-v8.c
index a7f4021..113cb00 100644
--- a/configs/foundation-v8.c
+++ b/configs/foundation-v8.c
@@ -23,6 +23,7 @@ struct {
} __attribute__((packed)) config = {
.header = {
.signature = JAILHOUSE_SYSTEM_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.hypervisor_memory = {
.phys_start = 0xfc000000,
.size = 0x4000000,
diff --git a/configs/h87i.c b/configs/h87i.c
index 5678c3d..e2846f8 100644
--- a/configs/h87i.c
+++ b/configs/h87i.c
@@ -28,6 +28,7 @@ struct {
} __attribute__((packed)) config = {
.header = {
.signature = JAILHOUSE_SYSTEM_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.hypervisor_memory = {
.phys_start = 0x3b000000,
.size = 0x4000000,
diff --git a/configs/hikey-gic-demo.c b/configs/hikey-gic-demo.c
index d298087..ad80fee 100644
--- a/configs/hikey-gic-demo.c
+++ b/configs/hikey-gic-demo.c
@@ -22,6 +22,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "gic-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/hikey-linux-demo.c b/configs/hikey-linux-demo.c
index f78190d..5b2f135 100644
--- a/configs/hikey-linux-demo.c
+++ b/configs/hikey-linux-demo.c
@@ -27,6 +27,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "hikey-linux-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/hikey.c b/configs/hikey.c
index 2295251..dc7736d 100644
--- a/configs/hikey.c
+++ b/configs/hikey.c
@@ -24,6 +24,7 @@ struct {
} __attribute__((packed)) config = {
.header = {
.signature = JAILHOUSE_SYSTEM_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.hypervisor_memory = {
.phys_start = 0x7c000000,
.size = 0x04000000,
diff --git a/configs/imb-a180.c b/configs/imb-a180.c
index 8a67bdd..0e30cdc 100644
--- a/configs/imb-a180.c
+++ b/configs/imb-a180.c
@@ -32,6 +32,7 @@ struct {
} __attribute__((packed)) config = {
.header = {
.signature = JAILHOUSE_SYSTEM_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.hypervisor_memory = {
.phys_start = 0x3b000000,
.size = 0x4000000,
diff --git a/configs/ioapic-demo.c b/configs/ioapic-demo.c
index 3175a65..683834e 100644
--- a/configs/ioapic-demo.c
+++ b/configs/ioapic-demo.c
@@ -27,6 +27,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "ioapic-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/ivshmem-demo.c b/configs/ivshmem-demo.c
index f634e1c..f3929cc 100644
--- a/configs/ivshmem-demo.c
+++ b/configs/ivshmem-demo.c
@@ -25,6 +25,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "ivshmem-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/jetson-tk1-demo.c b/configs/jetson-tk1-demo.c
index 90fcac6..d39398f 100644
--- a/configs/jetson-tk1-demo.c
+++ b/configs/jetson-tk1-demo.c
@@ -25,6 +25,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "jetson-tk1-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/jetson-tk1-linux-demo.c b/configs/jetson-tk1-linux-demo.c
index 157edf0..001dffb 100644
--- a/configs/jetson-tk1-linux-demo.c
+++ b/configs/jetson-tk1-linux-demo.c
@@ -27,6 +27,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "jetson-tk1-linux-demo",
.flags =
JAILHOUSE_CELL_PASSIVE_COMMREG|JAILHOUSE_CELL_DEBUG_CONSOLE,
diff --git a/configs/jetson-tk1.c b/configs/jetson-tk1.c
index 9a66a46..6d80131 100644
--- a/configs/jetson-tk1.c
+++ b/configs/jetson-tk1.c
@@ -29,6 +29,7 @@ struct {
} __attribute__((packed)) config = {
.header = {
.signature = JAILHOUSE_SYSTEM_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.hypervisor_memory = {
.phys_start = 0xfc000000,
.size = 0x4000000 - 0x100000, /* -1MB (PSCI) */
diff --git a/configs/linux-x86-demo.c b/configs/linux-x86-demo.c
index 9869931..f98a7c6 100644
--- a/configs/linux-x86-demo.c
+++ b/configs/linux-x86-demo.c
@@ -27,6 +27,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "linux-x86-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/pci-demo.c b/configs/pci-demo.c
index 0af418a..ee63b0f 100644
--- a/configs/pci-demo.c
+++ b/configs/pci-demo.c
@@ -28,6 +28,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "pci-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/qemu-vm.c b/configs/qemu-vm.c
index 0849f4a..cbe5288 100644
--- a/configs/qemu-vm.c
+++ b/configs/qemu-vm.c
@@ -42,6 +42,7 @@ struct {
} __attribute__((packed)) config = {
.header = {
.signature = JAILHOUSE_SYSTEM_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.hypervisor_memory = {
.phys_start = 0x3b000000,
.size = 0x600000,
diff --git a/configs/smp-demo.c b/configs/smp-demo.c
index 1a583f7..30527b2 100644
--- a/configs/smp-demo.c
+++ b/configs/smp-demo.c
@@ -25,6 +25,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "smp-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/tiny-demo.c b/configs/tiny-demo.c
index 3d7d391..d15f694 100644
--- a/configs/tiny-demo.c
+++ b/configs/tiny-demo.c
@@ -26,6 +26,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "tiny-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/vexpress-gic-demo.c b/configs/vexpress-gic-demo.c
index 2984c61..7808333 100644
--- a/configs/vexpress-gic-demo.c
+++ b/configs/vexpress-gic-demo.c
@@ -22,6 +22,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "gic-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/vexpress-linux-demo.c b/configs/vexpress-linux-demo.c
index d192b66..83c8188 100644
--- a/configs/vexpress-linux-demo.c
+++ b/configs/vexpress-linux-demo.c
@@ -23,6 +23,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "linux-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/vexpress-uart-demo.c b/configs/vexpress-uart-demo.c
index ab02a7c..1a7a603 100644
--- a/configs/vexpress-uart-demo.c
+++ b/configs/vexpress-uart-demo.c
@@ -22,6 +22,7 @@ struct {
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.name = "pl011-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG,
diff --git a/configs/vexpress.c b/configs/vexpress.c
index 319bb58..a922d1f 100644
--- a/configs/vexpress.c
+++ b/configs/vexpress.c
@@ -23,6 +23,7 @@ struct {
} __attribute__((packed)) config = {
.header = {
.signature = JAILHOUSE_SYSTEM_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.hypervisor_memory = {
.phys_start = 0xfc000000,
.size = 0x4000000,
diff --git a/driver/cell.c b/driver/cell.c
index 0b5ac38..c197466 100644
--- a/driver/cell.c
+++ b/driver/cell.c
@@ -173,6 +173,11 @@ int jailhouse_cmd_cell_create(struct jailhouse_cell_create
__user *arg)
err = -EINVAL;
goto kfree_config_out;
}
+ if (config->revision != JAILHOUSE_CONFIG_REVISION) {
+ pr_err("jailhouse: Configuration revision mismatch\n");
+ err = -EINVAL;
+ goto kfree_config_out;
+ }
config->name[JAILHOUSE_CELL_NAME_MAXLEN] = 0;
diff --git a/driver/main.c b/driver/main.c
index 206e29f..318487f 100644
--- a/driver/main.c
+++ b/driver/main.c
@@ -211,6 +211,10 @@ static int jailhouse_cmd_enable(struct jailhouse_system
__user *arg)
pr_err("jailhouse: Not a system configuration\n");
return -EINVAL;
}
+ if (config_header.revision != JAILHOUSE_CONFIG_REVISION) {
+ pr_err("jailhouse: Configuration revision mismatch\n");
+ return -EINVAL;
+ }
config_header.root_cell.name[JAILHOUSE_CELL_NAME_MAXLEN] = 0;
diff --git a/hypervisor/include/jailhouse/cell-config.h
b/hypervisor/include/jailhouse/cell-config.h
index 76931a5..4a2a4d2 100644
--- a/hypervisor/include/jailhouse/cell-config.h
+++ b/hypervisor/include/jailhouse/cell-config.h
@@ -39,12 +39,15 @@
#ifndef _JAILHOUSE_CELL_CONFIG_H
#define _JAILHOUSE_CELL_CONFIG_H
+/* Incremented on any layout or semantic change of system or cell config. */
+#define JAILHOUSE_CONFIG_REVISION 1
+
#define JAILHOUSE_CELL_NAME_MAXLEN 31
#define JAILHOUSE_CELL_PASSIVE_COMMREG 0x00000001
#define JAILHOUSE_CELL_DEBUG_CONSOLE 0x00000002
-#define JAILHOUSE_CELL_DESC_SIGNATURE "JAILCELL"
+#define JAILHOUSE_CELL_DESC_SIGNATURE "JHCELL"
/**
* The jailhouse cell configuration.
@@ -53,7 +56,9 @@
* structure.
*/
struct jailhouse_cell_desc {
- char signature[8];
+ char signature[6];
+ __u16 revision;
+
char name[JAILHOUSE_CELL_NAME_MAXLEN+1];
__u32 id; /* set by the driver */
__u32 flags;
@@ -166,13 +171,14 @@ struct jailhouse_iommu {
__u32 amd_features;
} __attribute__((packed));
-#define JAILHOUSE_SYSTEM_SIGNATURE "JAILSYST"
+#define JAILHOUSE_SYSTEM_SIGNATURE "JHSYST"
/**
* General descriptor of the system.
*/
struct jailhouse_system {
- char signature[8];
+ char signature[6];
+ __u16 revision;
/** Jailhouse's location in memory */
struct jailhouse_memory hypervisor_memory;
diff --git a/tools/jailhouse-cell-linux b/tools/jailhouse-cell-linux
index fe469c4..73aa1ac 100755
--- a/tools/jailhouse-cell-linux
+++ b/tools/jailhouse-cell-linux
@@ -509,12 +509,14 @@ class MemoryRegion:
class Config:
- _HEADER_FORMAT = '8s32s4xIIIIIIIII'
+ _HEADER_FORMAT = '6sH32s4xIIIIIIIII'
+ _HEADER_REVISION = 1
def __init__(self, config_file):
self.data = config_file.read()
(signature,
+ revision,
name,
self.flags,
self.cpu_set_size,
@@ -526,10 +528,13 @@ class Config:
self.num_pci_caps,
self.vpci_irq_base) = \
struct.unpack_from(Config._HEADER_FORMAT, self.data)
- if str(signature.decode()) != 'JAILCELL':
+ if str(signature.decode()) != 'JHCELL':
print('Not a cell configuration: %s' % config_file.name,
file=sys.stderr)
exit(1)
+ if revision != Config._HEADER_REVISION:
+ print('Configuration file revision mismatch', file=sys.stderr)
+ exit(1)
self.name = str(name.decode())
memregion_offs = struct.calcsize(Config._HEADER_FORMAT) + \
diff --git a/tools/root-cell-config.c.tmpl b/tools/root-cell-config.c.tmpl
index 59686d3..7cf2d8d 100644
--- a/tools/root-cell-config.c.tmpl
+++ b/tools/root-cell-config.c.tmpl
@@ -55,6 +55,7 @@ struct {
} __attribute__((packed)) config = {
.header = {
.signature = JAILHOUSE_SYSTEM_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
.hypervisor_memory = {
.phys_start = ${hex(hvmem[0])},
.size = ${hex(hvmem[1])},
--
2.1.4
--
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.