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",
.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),
},
},
/* 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,
},
/* 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 */
.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,
},
},
};