]> rtime.felk.cvut.cz Git - jailhouse.git/blobdiff - hypervisor/include/jailhouse/cell-config.h
core: Add support for sub-page MMIO regions
[jailhouse.git] / hypervisor / include / jailhouse / cell-config.h
index a6e896bab9d68f7df61a66642b45d5c501ac900e..7ec422fd11832bf9a3140cff825bef620d4c65fd 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Jailhouse, a Linux-based partitioning hypervisor
  *
- * Copyright (c) Siemens AG, 2014, 2015
+ * Copyright (c) Siemens AG, 2014-2016
  *
  * Authors:
  *  Jan Kiszka <jan.kiszka@siemens.com>
@@ -67,6 +67,12 @@ struct jailhouse_cell_desc {
 #define JAILHOUSE_MEM_COMM_REGION      0x0020
 #define JAILHOUSE_MEM_LOADABLE         0x0040
 #define JAILHOUSE_MEM_ROOTSHARED       0x0080
+#define JAILHOUSE_MEM_IO_UNALIGNED     0x0100
+#define JAILHOUSE_MEM_IO_WIDTH_SHIFT   16 /* uses bits 8..11 */
+#define JAILHOUSE_MEM_IO_8             (1 << JAILHOUSE_MEM_IO_WIDTH_SHIFT)
+#define JAILHOUSE_MEM_IO_16            (2 << JAILHOUSE_MEM_IO_WIDTH_SHIFT)
+#define JAILHOUSE_MEM_IO_32            (4 << JAILHOUSE_MEM_IO_WIDTH_SHIFT)
+#define JAILHOUSE_MEM_IO_64            (8 << JAILHOUSE_MEM_IO_WIDTH_SHIFT)
 
 struct jailhouse_memory {
        __u64 phys_start;
@@ -75,6 +81,9 @@ struct jailhouse_memory {
        __u64 flags;
 } __attribute__((packed));
 
+#define JAILHOUSE_MEMORY_IS_SUBPAGE(mem)       \
+       ((mem)->virt_start & ~PAGE_MASK || (mem)->size & ~PAGE_MASK)
+
 #define JAILHOUSE_CACHE_L3_CODE                0x01
 #define JAILHOUSE_CACHE_L3_DATA                0x02
 #define JAILHOUSE_CACHE_L3             (JAILHOUSE_CACHE_L3_CODE | \