]> rtime.felk.cvut.cz Git - jailhouse.git/blobdiff - configs/h87i.c
jailhouse: inmates: bench: Add -R option -- repeats count.
[jailhouse.git] / configs / h87i.c
index 972dd03906191854dff947f8d65b877c7da610b7..f281a34bed82d369a5b77d3eff04bc31ebb4a5d4 100644 (file)
@@ -24,16 +24,33 @@ struct {
        struct jailhouse_irqchip irqchips[1];
        __u8 pio_bitmap[0x2000];
        struct jailhouse_pci_device pci_devices[13];
+       struct jailhouse_pci_capability pci_caps[28];
 } __attribute__((packed)) config = {
        .header = {
+               .signature = JAILHOUSE_SYSTEM_SIGNATURE,
                .hypervisor_memory = {
-                       .phys_start = 0x3c000000,
+                       .phys_start = 0x3b000000,
                        .size = 0x4000000,
                },
-               .config_memory = {
-                       .phys_start = 0xcca64000,
-                       .size = 0x15000,
+               .debug_console = {
+                       .phys_start = 0xe010,
+               },
+               .platform_info.x86 = {
+                       .mmconfig_base = 0xf8000000,
+                       .mmconfig_end_bus = 0x3f,
+                       .pm_timer_address = 0x1808,
+                       .iommu_units = {
+                               {
+                                       .base = 0xfed90000,
+                                       .size = 0x1000,
+                               },
+                               {
+                                       .base = 0xfed91000,
+                                       .size = 0x1000,
+                               },
+                       },
                },
+               .interrupt_limit = 256,
                .root_cell = {
                        .name = "H87I-PLUS",
 
@@ -42,6 +59,7 @@ struct {
                        .num_irqchips = ARRAY_SIZE(config.irqchips),
                        .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap),
                        .num_pci_devices = ARRAY_SIZE(config.pci_devices),
+                       .num_pci_caps = ARRAY_SIZE(config.pci_caps),
                },
        },
 
@@ -53,27 +71,27 @@ struct {
                /* RAM */ {
                        .phys_start = 0x0,
                        .virt_start = 0x0,
-                       .size = 0x3c000000,
+                       .size = 0x3b000000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* RAM */ {
-                       .phys_start = 0x40000000,
-                       .virt_start = 0x40000000,
-                       .size = 0x8ca64000,
+                       .phys_start = 0x3f000000,
+                       .virt_start = 0x3f000000,
+                       .size = 0x8da64000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* ACPI */ {
-                       .phys_start = 0xcca64000,
-                       .virt_start = 0xcca64000,
+                       .phys_start = 0xcca63000,
+                       .virt_start = 0xcca63000,
                        .size = 0x15000,
                        .flags = JAILHOUSE_MEM_READ,
                },
                /* RAM */ {
-                       .phys_start = 0xcca79000,
-                       .virt_start = 0xcca79000,
-                       .size = 0x12787000,
+                       .phys_start = 0xcdfff000,
+                       .virt_start = 0xcdfff000,
+                       .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
@@ -87,7 +105,7 @@ struct {
                /* PCI */ {
                        .phys_start = 0xdf200000,
                        .virt_start = 0xdf200000,
-                       .size = 0x1fa00000,
+                       .size = 0x18e00000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* not safe until we catch MSIs via interrupt remapping */
@@ -109,105 +127,337 @@ struct {
        .irqchips = {
                /* IOAPIC */ {
                        .address = 0xfec00000,
-                       .pin_bitmap = 0xffffff,
+                       .id = 0x1f0f8,
+                       .pin_bitmap = {
+                               0xffffff
+                       },
                },
        },
 
        .pio_bitmap = {
-               [     0/8 ...   0x1f/8] = -1,
-               [  0x20/8 ...   0x27/8] = 0xfc, /* HACK: PIC */
-               [  0x28/8 ...   0x3f/8] = -1,
+               [     0/8 ...   0x3f/8] = -1,
                [  0x40/8 ...   0x47/8] = 0xf0, /* PIT */
                [  0x48/8 ...   0x5f/8] = -1,
-               [  0x60/8 ...   0x67/8] = 0x0, /* HACK: 8042, and more? */
+               [  0x60/8 ...   0x67/8] = 0xec, /* HACK: NMI status/control */
                [  0x68/8 ...   0x6f/8] = -1,
                [  0x70/8 ...   0x77/8] = 0xfc, /* rtc */
-               [  0x78/8 ...   0x7f/8] = -1,
-               [  0x80/8 ...   0x8f/8] = 0, /* dma */
-               [  0x90/8 ...  0x3af/8] = -1,
+               [  0x78/8 ...  0x3af/8] = -1,
                [ 0x3b0/8 ...  0x3df/8] = 0, /* VGA */
                [ 0x3e0/8 ...  0xcff/8] = -1,
                [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: full PCI */
        },
 
        .pci_devices = {
+               /* PCIDevice: 00:00.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0x00,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0x0,
+                       .caps_start = 0,
+                       .num_caps = 1,
                },
+               /* PCIDevice: 00:01.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_BRIDGE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0x08,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0x8,
+                       .caps_start = 1,
+                       .num_caps = 4,
+                       .num_msi_vectors = 1,
                },
+               /* PCIDevice: 00:02.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0x10,
+                       .iommu = 0,
+                       .domain = 0x0,
+                       .bdf = 0x10,
+                       .caps_start = 5,
+                       .num_caps = 3,
+                       .num_msi_vectors = 1,
                },
+               /* PCIDevice: 00:03.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0x18,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0x18,
+                       .caps_start = 8,
+                       .num_caps = 3,
+                       .num_msi_vectors = 1,
                },
+               /* PCIDevice: 00:14.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0xa0,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0xa0,
+                       .caps_start = 11,
+                       .num_caps = 2,
+                       .num_msi_vectors = 8,
+                       .msi_64bits = 1,
                },
+               /* PCIDevice: 00:16.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0xb0,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0xb0,
+                       .caps_start = 13,
+                       .num_caps = 2,
+                       .num_msi_vectors = 1,
+                       .msi_64bits = 1,
                },
+               /* PCIDevice: 00:19.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0xc8,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0xc8,
+                       .caps_start = 15,
+                       .num_caps = 3,
+                       .num_msi_vectors = 1,
+                       .msi_64bits = 1,
                },
+               /* PCIDevice: 00:1a.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0xd0,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0xd0,
+                       .caps_start = 18,
+                       .num_caps = 3,
                },
+               /* PCIDevice: 00:1b.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0xd8,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0xd8,
+                       .caps_start = 21,
+                       .num_caps = 4,
+                       .num_msi_vectors = 1,
+                       .msi_64bits = 1,
                },
+               /* PCIDevice: 00:1d.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0xe8,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0xe8,
+                       .caps_start = 18,
+                       .num_caps = 3,
                },
+               /* PCIDevice: 00:1f.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0xf8,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0xf8,
+                       .caps_start = 0,
+                       .num_caps = 1,
                },
+               /* PCIDevice: 00:1f.2 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0xfa,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0xfa,
+                       .caps_start = 25,
+                       .num_caps = 3,
+                       .num_msi_vectors = 1,
                },
+               /* PCIDevice: 00:1f.3 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
-                       .domain = 0x0000,
-                       .bus = 0x00,
-                       .devfn = 0xfb,
+                       .iommu = 1,
+                       .domain = 0x0,
+                       .bdf = 0xfb,
+                       .caps_start = 0,
+                       .num_caps = 0,
+               },
+       },
+
+       .pci_caps = {
+               /* PCIDevice: 00:00.0 */
+               /* PCIDevice: 00:1f.0 */
+               {
+                       .id = 0x9,
+                       .start = 0xe0,
+                       .len = 2,
+                       .flags = 0,
+               },
+               /* PCIDevice: 00:01.0 */
+               {
+                       .id = 0xd,
+                       .start = 0x88,
+                       .len = 2,
+                       .flags = 0,
+               },
+               {
+                       .id = 0x1,
+                       .start = 0x80,
+                       .len = 8,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x5,
+                       .start = 0x90,
+                       .len = 10,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x10,
+                       .start = 0xa0,
+                       .len = 2,
+                       .flags = 0,
+               },
+               /* PCIDevice: 00:02.0 */
+               {
+                       .id = 0x5,
+                       .start = 0x90,
+                       .len = 10,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x1,
+                       .start = 0xd0,
+                       .len = 8,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x13,
+                       .start = 0xa4,
+                       .len = 2,
+                       .flags = 0,
+               },
+               /* PCIDevice: 00:03.0 */
+               {
+                       .id = 0x1,
+                       .start = 0x50,
+                       .len = 8,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x5,
+                       .start = 0x60,
+                       .len = 10,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x10,
+                       .start = 0x70,
+                       .len = 2,
+                       .flags = 0,
+               },
+               /* PCIDevice: 00:14.0 */
+               {
+                       .id = 0x1,
+                       .start = 0x70,
+                       .len = 8,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x5,
+                       .start = 0x80,
+                       .len = 14,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               /* PCIDevice: 00:16.0 */
+               {
+                       .id = 0x1,
+                       .start = 0x50,
+                       .len = 8,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x5,
+                       .start = 0x8c,
+                       .len = 14,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               /* PCIDevice: 00:19.0 */
+               {
+                       .id = 0x1,
+                       .start = 0xc8,
+                       .len = 8,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x5,
+                       .start = 0xd0,
+                       .len = 14,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x13,
+                       .start = 0xe0,
+                       .len = 2,
+                       .flags = 0,
+               },
+               /* PCIDevice: 00:1a.0 */
+               /* PCIDevice: 00:1d.0 */
+               {
+                       .id = 0x1,
+                       .start = 0x50,
+                       .len = 8,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0xa,
+                       .start = 0x58,
+                       .len = 2,
+                       .flags = 0,
+               },
+               {
+                       .id = 0x13,
+                       .start = 0x98,
+                       .len = 2,
+                       .flags = 0,
+               },
+               /* PCIDevice: 00:1b.0 */
+               {
+                       .id = 0x1,
+                       .start = 0x50,
+                       .len = 8,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x5,
+                       .start = 0x60,
+                       .len = 14,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x10,
+                       .start = 0x70,
+                       .len = 2,
+                       .flags = 0,
+               },
+               { /* non-cap registers: HDCTL, TCSEL, DCKCTL,DCKSTS */
+                       .start = 0x40,
+                       .len = 0x10,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               /* PCIDevice: 00:1f.2 */
+               {
+                       .id = 0x5,
+                       .start = 0x80,
+                       .len = 10,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x1,
+                       .start = 0x70,
+                       .len = 8,
+                       .flags = JAILHOUSE_PCICAPS_WRITE,
+               },
+               {
+                       .id = 0x12,
+                       .start = 0xa8,
+                       .len = 2,
+                       .flags = 0,
                },
        },
 };