]> rtime.felk.cvut.cz Git - jailhouse.git/blobdiff - configs/novabox.c
jailhouse: configs: Add bench cell configuration and tune novabox configuration accor...
[jailhouse.git] / configs / novabox.c
index a682bef39ab04a2985ed60b55fc4a70171632f09..2bc9707cd87c301a40cc830ab76485d908cc67c1 100644 (file)
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
  * Configuration for Dell Inc. OptiPlex 7010
- * created with '/usr/local/libexec/jailhouse/jailhouse config create -r . novabox-pc.c'
+ * created with '/usr/local/libexec/jailhouse/jailhouse config create -r . novabox.c'
  *
  * NOTE: This config expects the following to be appended to your kernel cmdline
- *       "memmap=0x4200000$0x3b000000"
+ *       "memmap=0x9000000$0x37600000"
  */
 
 #include <linux/types.h>
 struct {
        struct jailhouse_system header;
        __u64 cpus[1];
-       struct jailhouse_memory mem_regions[41];
+       struct jailhouse_memory mem_regions[46];
        struct jailhouse_irqchip irqchips[1];
        __u8 pio_bitmap[0x2000];
-       struct jailhouse_pci_device pci_devices[12];
-       struct jailhouse_pci_capability pci_caps[22];
+       struct jailhouse_pci_device pci_devices[16];
+       struct jailhouse_pci_capability pci_caps[29];
 } __attribute__((packed)) config = {
        .header = {
                .signature = JAILHOUSE_SYSTEM_SIGNATURE,
                .hypervisor_memory = {
-                       .phys_start = 0x3b000000,
+                       .phys_start = 0x37600000,
                        .size = 0x4000000,
                },
+               .debug_console = {
+                       .phys_start = 0x3f8,
+               },
                .platform_info.x86 = {
                        .mmconfig_base = 0xf8000000,
                        .mmconfig_end_bus = 0x3f,
                        .pm_timer_address = 0x408,
-                       .iommu_base = {
-                               0xfed90000,
-                               0xfed91000,
+                       .iommu_units = {
+                               {
+                                       .base = 0xfed90000,
+                                       .size = 0x1000,
+                               },
+                               {
+                                       .base = 0xfed91000,
+                                       .size = 0x1000,
+                               },
                        },
                },
-               .device_limit = 128,
                .interrupt_limit = 256,
                .root_cell = {
                        .name = "RootCell",
@@ -125,30 +133,46 @@ struct {
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
-               /* MemRegion: 20200000-3affffff : System RAM */
+               /* MemRegion: 20200000-375fffff : System RAM */
                {
                        .phys_start = 0x20200000,
                        .virt_start = 0x20200000,
-                       .size = 0x1ae00000,
+                       .size = 0x17400000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                               JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
+               },
+               // /* MemRegion: 3f200000-40003fff : System RAM */
+               // {
+               //      .phys_start = 0x3f200000,
+               //      .virt_start = 0x3f200000,
+               //      .size = 0xe04000,
+               //      .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+               //              JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
+               // },
+               /* MemRegion: 0x40600000-d9b4dfff : System RAM */
+               {
+                       .phys_start = 0x40600000,
+                       .virt_start = 0x40600000,
+                       .size = 0x9954E000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
-               /* MemRegion: 3f200000-40003fff : System RAM */
+               //for tinybench
                {
-                       .phys_start = 0x3f200000,
-                       .virt_start = 0x3f200000,
-                       .size = 0xe04000,
+                       .phys_start = 0xd9b4e000,
+                       .virt_start = 0xd9b4e000,
+                       .size = 0x59F000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
-               /* MemRegion: 40005000-d9b4dfff : System RAM */
                {
-                       .phys_start = 0x40005000,
-                       .virt_start = 0x40005000,
-                       .size = 0x99b49000,
+                       .phys_start = 0xda113000,
+                       .virt_start = 0xda113000,
+                       .size = 0x61000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
+
                /* MemRegion: da174000-da3dbfff : ACPI Non-volatile Storage */
                {
                        .phys_start = 0xda174000,
@@ -221,66 +245,94 @@ struct {
                        .size = 0x400000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
-               /* MemRegion: f7c00000-f7c1ffff : 0000:00:19.0 */
+               /* MemRegion: f7c00000-f7c00fff : 0000:02:00.1 */
                {
                        .phys_start = 0xf7c00000,
                        .virt_start = 0xf7c00000,
+                       .size = 0x1000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+               },
+               /* MemRegion: f7c01000-f7c01fff : 0000:02:00.1 */
+               {
+                       .phys_start = 0xf7c01000,
+                       .virt_start = 0xf7c01000,
+                       .size = 0x1000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+               },
+               /* MemRegion: f7c02000-f7c02fff : 0000:02:00.0 */
+               {
+                       .phys_start = 0xf7c02000,
+                       .virt_start = 0xf7c02000,
+                       .size = 0x1000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+               },
+               /* MemRegion: f7c03000-f7c03fff : 0000:02:00.0 */
+               {
+                       .phys_start = 0xf7c03000,
+                       .virt_start = 0xf7c03000,
+                       .size = 0x1000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+               },
+               /* MemRegion: f7d00000-f7d1ffff : 0000:00:19.0 */
+               {
+                       .phys_start = 0xf7d00000,
+                       .virt_start = 0xf7d00000,
                        .size = 0x20000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
-               /* MemRegion: f7c20000-f7c2ffff : 0000:00:14.0 */
+               /* MemRegion: f7d20000-f7d2ffff : 0000:00:14.0 */
                {
-                       .phys_start = 0xf7c20000,
-                       .virt_start = 0xf7c20000,
+                       .phys_start = 0xf7d20000,
+                       .virt_start = 0xf7d20000,
                        .size = 0x10000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
-               /* MemRegion: f7c30000-f7c33fff : 0000:00:1b.0 */
+               /* MemRegion: f7d30000-f7d33fff : 0000:00:1b.0 */
                {
-                       .phys_start = 0xf7c30000,
-                       .virt_start = 0xf7c30000,
+                       .phys_start = 0xf7d30000,
+                       .virt_start = 0xf7d30000,
                        .size = 0x4000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
-               /* MemRegion: f7c35000-f7c350ff : 0000:00:1f.3 */
+               /* MemRegion: f7d35000-f7d350ff : 0000:00:1f.3 */
                {
-                       .phys_start = 0xf7c35000,
-                       .virt_start = 0xf7c35000,
+                       .phys_start = 0xf7d35000,
+                       .virt_start = 0xf7d35000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
-               /* MemRegion: f7c36000-f7c367ff : ahci */
+               /* MemRegion: f7d36000-f7d367ff : ahci */
                {
-                       .phys_start = 0xf7c36000,
-                       .virt_start = 0xf7c36000,
+                       .phys_start = 0xf7d36000,
+                       .virt_start = 0xf7d36000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
-               /* MemRegion: f7c37000-f7c373ff : ehci_hcd */
+               /* MemRegion: f7d37000-f7d373ff : ehci_hcd */
                {
-                       .phys_start = 0xf7c37000,
-                       .virt_start = 0xf7c37000,
+                       .phys_start = 0xf7d37000,
+                       .virt_start = 0xf7d37000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
-               /* MemRegion: f7c38000-f7c383ff : ehci_hcd */
+               /* MemRegion: f7d38000-f7d383ff : ehci_hcd */
                {
-                       .phys_start = 0xf7c38000,
-                       .virt_start = 0xf7c38000,
+                       .phys_start = 0xf7d38000,
+                       .virt_start = 0xf7d38000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
-               /* MemRegion: f7c39000-f7c39fff : 0000:00:19.0 */
+               /* MemRegion: f7d39000-f7d39fff : 0000:00:19.0 */
                {
-                       .phys_start = 0xf7c39000,
-                       .virt_start = 0xf7c39000,
+                       .phys_start = 0xf7d39000,
+                       .virt_start = 0xf7d39000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
-               /* MemRegion: f7c3c000-f7c3c00f : 0000:00:16.0 */
+               /* MemRegion: f7d3c000-f7d3c00f : 0000:00:16.0 */
                {
-                       .phys_start = 0xf7c3c000,
-                       .virt_start = 0xf7c3c000,
+                       .phys_start = 0xf7d3c000,
+                       .virt_start = 0xf7d3c000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
@@ -383,12 +435,13 @@ struct {
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
-               /* MemRegion: 3f000000-3f1fffff : JAILHOUSE Inmate Memory */
+               /* MemRegion: 0x3b600000-0x40600000 : JAILHOUSE Inmate Memory */
                {
-                       .phys_start = 0x3f000000,
-                       .virt_start = 0x3f000000,
-                       .size = 0x200000,
-                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+                       .phys_start = 0x3b600000,
+                       .virt_start = 0x3b600000,
+                       .size = 0x5000000,
+                       .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+                                        JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
        },
 
@@ -397,7 +450,9 @@ struct {
                {
                        .address = 0xfec00000,
                        .id = 0x1f0f8,
-                       .pin_bitmap = 0xffffff,
+                       .pin_bitmap = {
+                               0xffffff
+                       },
                },
        },
 
@@ -408,18 +463,18 @@ struct {
                [  0x60/8 ...   0x67/8] = 0xec, /* HACK: NMI status/control */
                [  0x68/8 ...   0x6f/8] = -1,
                [  0x70/8 ...   0x77/8] = 0xfc, /* RTC */
-               [  0x78/8 ...   0x7f/7] = -1,
+               [  0x78/8 ...   0x7f/8] = -1,
                [  0x80/8 ...   0x87/8] = 0xfe, /* Linux: native_io_delay() */
-               [  0x88/8 ...   0xec/8] = -1,
-               [  0xed/8 ...   0xf5/8] = 0xfe, /*port 0xed delay experimental*/                
-               [  0xf6/8 ...  0x2f7/8] = -1,
+               [  0x88/8 ...   0xe7/8] = -1,
+               [  0xe8/8 ...   0xef/8] = 0xdf, /*port 0xed delay experimental*/
+               [  0xf0/8 ...  0x2f7/8] = -1,
                [ 0x2f8/8 ...  0x2ff/8] = 0,/*serial 1*/
                [ 0x300/8 ...  0x3af/8] = -1,
-               [ 0x3b0/8 ...  0x3df/8] = 0x00, /* VGA */               
+               [ 0x3b0/8 ...  0x3df/8] = 0x00, /* VGA */
                [ 0x3e0/8 ...  0x3f7/8] = -1,
-               [ 0x3f8/8 ...  0x3ff/8] = 0,/*serial 0*/
-               [ 0x400/8 ...  0xeff/8] = -1,           
-               [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: PCI bus */
+               [ 0x3f8/8 ...  0x3ff/8] = -1,/*serial 0*/
+               [ 0x400/8 ...  0xcff/8] = -1,
+               [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: full PCI */
        },
 
        .pci_devices = {
@@ -549,6 +604,42 @@ struct {
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
+               /* PCIDevice: 00:1c.0 */
+               {
+                       .type = JAILHOUSE_PCI_TYPE_BRIDGE,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0xe0,
+                       .bar_mask = {
+                               0x00000000, 0x00000000, 0x00000000,
+                               0x00000000, 0x00000000, 0x00000000,
+                       },
+                       .caps_start = 17,
+                       .num_caps = 4,
+                       .num_msi_vectors = 1,
+                       .msi_64bits = 0,
+                       .num_msix_vectors = 0,
+                       .msix_region_size = 0x0,
+                       .msix_address = 0x0,
+               },
+               /* PCIDevice: 00:1c.2 */
+               {
+                       .type = JAILHOUSE_PCI_TYPE_BRIDGE,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0xe2,
+                       .bar_mask = {
+                               0x00000000, 0x00000000, 0x00000000,
+                               0x00000000, 0x00000000, 0x00000000,
+                       },
+                       .caps_start = 17,
+                       .num_caps = 4,
+                       .num_msi_vectors = 1,
+                       .msi_64bits = 0,
+                       .num_msix_vectors = 0,
+                       .msix_region_size = 0x0,
+                       .msix_address = 0x0,
+               },
                /* PCIDevice: 00:1d.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
@@ -577,7 +668,7 @@ struct {
                                0x00000000, 0x00000000, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
-                       .caps_start = 17,
+                       .caps_start = 21,
                        .num_caps = 1,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
@@ -613,7 +704,7 @@ struct {
                                0xfffffff8, 0xfffffffc, 0xfffffff8,
                                0xfffffffc, 0xffffffe0, 0xfffff800,
                        },
-                       .caps_start = 18,
+                       .caps_start = 22,
                        .num_caps = 4,
                        .num_msi_vectors = 1,
                        .msi_64bits = 0,
@@ -639,6 +730,42 @@ struct {
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
+               /* PCIDevice: 02:00.0 */
+               {
+                       .type = JAILHOUSE_PCI_TYPE_DEVICE,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0x200,
+                       .bar_mask = {
+                               0xfffffff8, 0xfffff000, 0x00000000,
+                               0x00000000, 0x00000000, 0xfffff000,
+                       },
+                       .caps_start = 26,
+                       .num_caps = 3,
+                       .num_msi_vectors = 8,
+                       .msi_64bits = 1,
+                       .num_msix_vectors = 0,
+                       .msix_region_size = 0x0,
+                       .msix_address = 0x0,
+               },
+               /* PCIDevice: 02:00.1 */
+               {
+                       .type = JAILHOUSE_PCI_TYPE_DEVICE,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0x201,
+                       .bar_mask = {
+                               0xfffffff8, 0xfffff000, 0x00000000,
+                               0x00000000, 0x00000000, 0xfffff000,
+                       },
+                       .caps_start = 26,
+                       .num_caps = 3,
+                       .num_msi_vectors = 8,
+                       .msi_64bits = 1,
+                       .num_msix_vectors = 0,
+                       .msix_region_size = 0x0,
+                       .msix_address = 0x0,
+               },
        },
 
        .pci_caps = {
@@ -753,6 +880,32 @@ struct {
                        .len = 2,
                        .flags = 0,
                },
+               /* PCIDevice: 00:1c.0 */
+               /* PCIDevice: 00:1c.2 */
+               {
+                       .id = 0x10,
+                       .start = 0x40,
+                       .len = 2,
+                       .flags = 0,
+               },
+               {
+                       .id = 0x5,
+                       .start = 0x80,
+                       .len = 10,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0xd,
+                       .start = 0x90,
+                       .len = 2,
+                       .flags = 0,
+               },
+               {
+                       .id = 0x1,
+                       .start = 0xa0,
+                       .len = 8,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
                /* PCIDevice: 00:1e.0 */
                {
                        .id = 0xd,
@@ -785,5 +938,26 @@ struct {
                        .len = 2,
                        .flags = 0,
                },
+               /* PCIDevice: 02:00.0 */
+               /* PCIDevice: 02:00.1 */
+               {
+                       .id = 0x5,
+                       .start = 0x50,
+                       .len = 14,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x1,
+                       .start = 0x78,
+                       .len = 8,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x10,
+                       .start = 0x80,
+                       .len = 2,
+                       .flags = 0,
+               },
        },
 };
+