From: Jan Kiszka <jan.kis...@siemens.com>

Add the demo ivshmem device also to the linux-x86-demo and make it
3-peers (root, ivshmem-demo, linux-x86-demo). This allows to test and
demonstrate the new multi-peer feature. For that, we need to move
ivshmem-demo on the 2nd CPU and shrink the RAM of the linux-x86-demo by
2 MB.

Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>
---
 configs/x86/ivshmem-demo.c   | 12 ++++++---
 configs/x86/linux-x86-demo.c | 58 ++++++++++++++++++++++++++++++++++++++------
 configs/x86/qemu-x86.c       | 10 ++++++--
 3 files changed, 68 insertions(+), 12 deletions(-)

diff --git a/configs/x86/ivshmem-demo.c b/configs/x86/ivshmem-demo.c
index cea555c9..ce05b6b5 100644
--- a/configs/x86/ivshmem-demo.c
+++ b/configs/x86/ivshmem-demo.c
@@ -19,7 +19,7 @@
 struct {
        struct jailhouse_cell_desc cell;
        __u64 cpus[1];
-       struct jailhouse_memory mem_regions[6];
+       struct jailhouse_memory mem_regions[7];
        struct jailhouse_pio pio_regions[2];
        struct jailhouse_pci_device pci_devices[1];
        struct jailhouse_pci_capability pci_caps[0];
@@ -46,7 +46,7 @@ struct {
        },
 
        .cpus = {
-               0b0100,
+               0b0010,
        },
 
        .mem_regions = {
@@ -77,6 +77,12 @@ struct {
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_ROOTSHARED,
                },
+               {
+                       .phys_start = 0x3f0fe000,
+                       .virt_start = 0x3f0fe000,
+                       .size = 0x2000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+               },
                /* RAM */ {
                        .phys_start = 0x3ee00000,
                        .virt_start = 0,
@@ -106,7 +112,7 @@ struct {
                        .num_msix_vectors = 16,
                        .shmem_regions_start = 0,
                        .shmem_dev_id = 1,
-                       .shmem_peers = 2,
+                       .shmem_peers = 3,
                        .shmem_protocol = JAILHOUSE_SHMEM_PROTO_UNDEFINED,
                },
        },
diff --git a/configs/x86/linux-x86-demo.c b/configs/x86/linux-x86-demo.c
index 5f9d8ed8..7a6f1efd 100644
--- a/configs/x86/linux-x86-demo.c
+++ b/configs/x86/linux-x86-demo.c
@@ -19,17 +19,17 @@ struct {
        struct jailhouse_cell_desc cell;
        __u64 cpus[1];
 #ifdef CONFIG_QEMU_E1000E_ASSIGNMENT
-       struct jailhouse_memory mem_regions[11];
+       struct jailhouse_memory mem_regions[16];
 #else
-       struct jailhouse_memory mem_regions[7];
+       struct jailhouse_memory mem_regions[12];
 #endif
        struct jailhouse_cache cache_regions[1];
        struct jailhouse_irqchip irqchips[1];
        struct jailhouse_pio pio_regions[3];
 #ifdef CONFIG_QEMU_E1000E_ASSIGNMENT
-       struct jailhouse_pci_device pci_devices[2];
+       struct jailhouse_pci_device pci_devices[3];
 #else
-       struct jailhouse_pci_device pci_devices[1];
+       struct jailhouse_pci_device pci_devices[2];
 #endif
        struct jailhouse_pci_capability pci_caps[6];
 } __attribute__((packed)) config = {
@@ -50,10 +50,43 @@ struct {
        },
 
        .cpus = {
-               0xe,
+               0b1100,
        },
 
        .mem_regions = {
+               /* IVSHMEM shared memory regions (demo) */
+               {
+                       .phys_start = 0x3f0f0000,
+                       .virt_start = 0x3f0f0000,
+                       .size = 0x1000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+               },
+               {
+                       .phys_start = 0x3f0f1000,
+                       .virt_start = 0x3f0f1000,
+                       .size = 0x9000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_ROOTSHARED,
+               },
+               {
+                       .phys_start = 0x3f0fa000,
+                       .virt_start = 0x3f0fa000,
+                       .size = 0x2000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+               },
+               {
+                       .phys_start = 0x3f0fc000,
+                       .virt_start = 0x3f0fc000,
+                       .size = 0x2000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+               },
+               {
+                       .phys_start = 0x3f0fe000,
+                       .virt_start = 0x3f0fe000,
+                       .size = 0x2000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_ROOTSHARED,
+               },
                /* IVSHMEM shared memory regions (networking) */
                JAILHOUSE_SHMEM_NET_REGIONS(0x3f100000, 1),
                /* low RAM */ {
@@ -73,7 +106,7 @@ struct {
                /* high RAM */ {
                        .phys_start = 0x3a700000,
                        .virt_start = 0x00200000,
-                       .size = 0x4900000,
+                       .size = 0x4700000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA |
                                JAILHOUSE_MEM_LOADABLE,
@@ -135,13 +168,24 @@ struct {
        },
 
        .pci_devices = {
+               {
+                       .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
+                       .domain = 0x0,
+                       .bdf = 0x0e << 3,
+                       .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_MSIX,
+                       .num_msix_vectors = 16,
+                       .shmem_regions_start = 0,
+                       .shmem_dev_id = 2,
+                       .shmem_peers = 3,
+                       .shmem_protocol = JAILHOUSE_SHMEM_PROTO_UNDEFINED,
+               },
                {
                        .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
                        .domain = 0x0,
                        .bdf = 0x0f << 3,
                        .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_MSIX,
                        .num_msix_vectors = 2,
-                       .shmem_regions_start = 0,
+                       .shmem_regions_start = 5,
                        .shmem_dev_id = 1,
                        .shmem_peers = 2,
                        .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH,
diff --git a/configs/x86/qemu-x86.c b/configs/x86/qemu-x86.c
index d5ba1764..fe069773 100644
--- a/configs/x86/qemu-x86.c
+++ b/configs/x86/qemu-x86.c
@@ -22,7 +22,7 @@
 struct {
        struct jailhouse_system header;
        __u64 cpus[1];
-       struct jailhouse_memory mem_regions[22];
+       struct jailhouse_memory mem_regions[23];
        struct jailhouse_irqchip irqchips[1];
        struct jailhouse_pio pio_regions[12];
        struct jailhouse_pci_device pci_devices[9];
@@ -99,6 +99,12 @@ struct {
                        .size = 0x2000,
                        .flags = JAILHOUSE_MEM_READ,
                },
+               {
+                       .phys_start = 0x3f0fe000,
+                       .virt_start = 0x3f0fe000,
+                       .size = 0x2000,
+                       .flags = JAILHOUSE_MEM_READ,
+               },
                /* IVSHMEM shared memory regions (networking) */
                JAILHOUSE_SHMEM_NET_REGIONS(0x3f100000, 0),
                /* RAM */ {
@@ -297,7 +303,7 @@ struct {
                        .num_msix_vectors = 16,
                        .shmem_regions_start = 0,
                        .shmem_dev_id = 0,
-                       .shmem_peers = 2,
+                       .shmem_peers = 3,
                        .shmem_protocol = JAILHOUSE_SHMEM_PROTO_UNDEFINED,
                },
                { /* IVSHMEM (networking) */
-- 
2.16.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 jailhouse-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jailhouse-dev/597ffd9b3a6048a531cc9c08f61790f84522bf24.1578320435.git.jan.kiszka%40siemens.com.

Reply via email to