I used the command : "dmesg | grep ttyS2" as that is the serial port on my 
board, it shows the MMIO address at 0x9222e000 however when I add that to 
debug_console.phys_start(originally 0x3f8) in my configs/myboard.c (attached) , 
I still get the same error(cpu stalls and no hypervisor output :(  ), again as 
I said I think there needs something else to be configured in this file as I 
don't think it is made up in a way such that it will get support from the 
hardware( board attached to my laptop ) especially the I/O else I am  unsure of 
what to change now in order to get this root cell running because I do not get 
any error message when the program looks for firmware and checks for memory 
allocated for jailhouse in the jailhouse_cmd_enable(); function , jailhouse.ko 
is also loaded properly (checked using 'lsmod' command ), intel_iommu is off 
during jailhouse enable  so I think the error has to be incorrect configuration 
file given that all of you do not find any problem with my OS , make and kernel 
version I specified in the first post on this topic. 

Few things to clarify: during boot up of my board, the very last message I see 
is ttyS2 - failed to request DMA , should that be a problem? , there is no need 
for an ssh to get hypervisor output right since I am suing USB-Serial, yes for 
VGA we need but not for USB-Serial right? , Any questions you have in mind 
regarding my CPU configuration? 

Regards,
Swaraj Dube.

-----Original Message-----
From: jailhouse-dev@googlegroups.com [mailto:jailhouse-dev@googlegroups.com] On 
Behalf Of Valentine Sinitsyn
Sent: Thursday, July 14, 2016 5:23 PM
To: Dube, Swaraj <swaraj.d...@intel.com>; Jan Kiszka <jan.kis...@siemens.com>; 
Jailhouse <jailhouse-dev@googlegroups.com>
Cc: Hii, Roland King Guan <roland.king.guan....@intel.com>
Subject: Re: ioctl function not completing and hypervisor output

On 14.07.2016 14:16, Dube, Swaraj wrote:
> Hi,
>
> I just got to know that the board I am using uses MMIO, I will have to 
> confirm the base addresses in config/myboard.c with the team in that case 
> however should that be a problem?
IIRC debug port setting has no effect on MMIO. But I vaguely recall the details 
of how we handle this in Jailhouse; you'd have to check in arch/dbg-write.c.

Valentine

>
> Regards,
> Swaraj Dube.
>
> -----Original Message-----
> From: Valentine Sinitsyn [mailto:valentine.sinit...@gmail.com]
> Sent: Thursday, July 14, 2016 3:21 PM
> To: Dube, Swaraj <swaraj.d...@intel.com>; Jan Kiszka 
> <jan.kis...@siemens.com>; Jailhouse <jailhouse-dev@googlegroups.com>
> Subject: Re: ioctl function not completing and hypervisor output
>
> Hi,
>
> On 14.07.2016 11:02, Dube, Swaraj wrote:
>> Hi,
>>
>> Sounds like a good idea, firstly Valentine has a good point I also think 
>> there is something wrong with the I/O port access (if not then something 
>> else in the I/O) so I changed debug_console.phys_start points from 0x3f8 to 
>> 0x3e8 in my configs/myboard.c and then make again to obtain a new 
>> myboard.cell file as I am using ttyS2 (I checked this in my 
>> /boot/EFI/BOOT/grub.cfg) and it's standard address is 0x3e8 but is that it?, 
>> I think I may have to change something else in myboard.c but I am unsure of 
>> what to change if any.
>>
>> I turned CPU 1 offline and tried enabling jailhouse and I get an Invalid 
>> argument error for JAILHOUSE_ENABLE obviously due to the return of -EINVAL 
>> from jailhouse_cmd_enable() function from driver/main.c due to the if 
>> conditions set but still no hypervisor output, I just see the printf(); 
>> messages I manually created, I then read about the article contributed by 
>> valentine on understanding the jailhouse hypervisor: 
>> https://lwn.net/Articles/578295/ that explains about the role of the 
>> functions and how calls are made. I realize that my program is not entering 
>> the entry(); or init_early(); function in hypervisor/setup.c file as this is 
>> the file which seems to be printing out the hypervisor output , may be the 
>> system is crashing before that ? , may be the information about the IO in 
>> configs/myboard.c still incorrect (my suspect) , Any suggestions?
> If having debug port wrong is really the culprit, check your BIOS/UEFI.
> Often you may view/change I/O ports for COMx there.
>
> Valentine
>
>>
>> Regards,
>> Swaraj Dube.
>>
>> -----Original Message-----
>> From: Jan Kiszka [mailto:jan.kis...@siemens.com]
>> Sent: Wednesday, July 13, 2016 11:15 PM
>> To: Dube, Swaraj <swaraj.d...@intel.com>; Valentine Sinitsyn 
>> <valentine.sinit...@gmail.com>; Jailhouse 
>> <jailhouse-dev@googlegroups.com>
>> Subject: Re: ioctl function not completing and hypervisor output
>>
>> On 2016-07-13 18:07, Dube, Swaraj wrote:
>>> Hi,
>>>
>>> Thanks for the reply, I think what you are referring to is the COM right , 
>>> I read about it, COM1-4 having I/O port addresses 0x3f8 , 0x2f8 , 0x3e8 and 
>>> 0x2e8 respectively . Currently debug_console.phys_start in my 
>>> configs/myboard.c points to the address 0x3f8 which should be of standard 
>>> COM1 whereas I am using COM5 so I'll try finding the address of COM5, hope 
>>> I am getting it right, kindly correct me if I am getting it wrong.
>>
>> If you want to debug the UART output of Jailhouse without crashing 
>> your system every time: Take one of the configured cores offline 
>> (echo 0 >
>> /sys/devices/system/cpu/cpu1/online) before calling jailhouse enable.
>> That will make the hypervisor fail gracefully with -EINVAL, but you will see 
>> messages of it trying to enable the remaining CPUs - provided we do not 
>> crash even earlier in the setup.
>>
>> Jan
>>
>> --
>> Siemens AG, Corporate Technology, CT RDA ITP SES-DE Corporate 
>> Competence Center Embedded Linux
>>

--
С уважением,
Синицын Валентин

--
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.
For more options, visit https://groups.google.com/d/optout.

-- 
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.
For more options, visit https://groups.google.com/d/optout.
/*
 * Jailhouse, a Linux-based partitioning hypervisor
 *
 * Copyright (c) Siemens AG, 2014-2016
 *
 * This work is licensed under the terms of the GNU GPL, version 2.  See
 * the COPYING file in the top-level directory.
 *
 * Alternatively, you can use or redistribute this file under the following
 * BSD license:
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Configuration for Intel Corp. Broxton P
 * created with 'tools/jailhouse config create -r myboard/ configs/myboard.c'
 *
 * NOTE: This config expects the following to be appended to your kernel cmdline
 *       "memmap=0x4200000$0x3b000000"
 */

#include <linux/types.h>
#include <jailhouse/cell-config.h>

#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))

struct {
        struct jailhouse_system header;
        __u64 cpus[1];
        struct jailhouse_memory mem_regions[91];
        struct jailhouse_irqchip irqchips[1];
        __u8 pio_bitmap[0x2000];
        struct jailhouse_pci_device pci_devices[35];
        struct jailhouse_pci_capability pci_caps[45];
} __attribute__((packed)) config = {
        .header = {
                .signature = JAILHOUSE_SYSTEM_SIGNATURE,
                .hypervisor_memory = {
                        .phys_start = 0x3b000000,
                        .size = 0x4000000,
                },
                .debug_console = {
                        .phys_start = 0x9222e000,
                },
                .platform_info.x86 = {
                        .mmconfig_base = 0xe0000000,
                        .mmconfig_end_bus = 0x3f,
                        .pm_timer_address = 0x408,
                        .iommu_units = {
                                {
                                        .base = 0xfed64000,
                                        .size = 0x1000,
                                },
                                {
                                        .base = 0xfed65000,
                                        .size = 0x1000,
                                },
                        },
                },
                .interrupt_limit = 256,
                .root_cell = {
                        .name = "RootCell",
                        .cpu_set_size = sizeof(config.cpus),
                        .num_memory_regions = ARRAY_SIZE(config.mem_regions),
                        .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),
                },
        },

        .cpus = {
                0x000000000000000f,
        },

        .mem_regions = {
                /* MemRegion: 00000000-00057fff : System RAM */
                {
                        .phys_start = 0x0,
                        .virt_start = 0x0,
                        .size = 0x58000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* MemRegion: 00059000-0009dfff : System RAM */
                {
                        .phys_start = 0x59000,
                        .virt_start = 0x59000,
                        .size = 0x45000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* MemRegion: 00100000-02ffffff : System RAM */
                {
                        .phys_start = 0x100000,
                        .virt_start = 0x100000,
                        .size = 0x2f00000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* MemRegion: 03000000-05ffffff : Kernel */
                {
                        .phys_start = 0x3000000,
                        .virt_start = 0x3000000,
                        .size = 0x3000000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* MemRegion: 06000000-0effffff : System RAM */
                {
                        .phys_start = 0x6000000,
                        .virt_start = 0x6000000,
                        .size = 0x9000000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* MemRegion: 12152000-3affffff : System RAM */
                {
                        .phys_start = 0x12152000,
                        .virt_start = 0x12152000,
                        .size = 0x28eae000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* MemRegion: 3f200000-78190fff : System RAM */
                {
                        .phys_start = 0x3f200000,
                        .virt_start = 0x3f200000,
                        .size = 0x38f91000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* MemRegion: 79f41000-79f8dfff : ACPI Non-volatile Storage */
                {
                        .phys_start = 0x79f41000,
                        .virt_start = 0x79f41000,
                        .size = 0x4d000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 79f8f000-79fa0fff : ACPI Non-volatile Storage */
                {
                        .phys_start = 0x79f8f000,
                        .virt_start = 0x79f8f000,
                        .size = 0x12000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 79fa1000-79fd0fff : ACPI Tables */
                {
                        .phys_start = 0x79fa1000,
                        .virt_start = 0x79fa1000,
                        .size = 0x30000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 79fd1000-7ab78fff : System RAM */
                {
                        .phys_start = 0x79fd1000,
                        .virt_start = 0x79fd1000,
                        .size = 0xba8000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* MemRegion: 7ab79000-7ab79fff : ACPI Non-volatile Storage */
                {
                        .phys_start = 0x7ab79000,
                        .virt_start = 0x7ab79000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 7aba4000-7affffff : System RAM */
                {
                        .phys_start = 0x7aba4000,
                        .virt_start = 0x7aba4000,
                        .size = 0x45c000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* MemRegion: 80000000-8fffffff : 0000:00:02.0 */
                {
                        .phys_start = 0x80000000,
                        .virt_start = 0x80000000,
                        .size = 0x10000000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 90000000-90ffffff : 0000:00:02.0 */
                {
                        .phys_start = 0x90000000,
                        .virt_start = 0x90000000,
                        .size = 0x1000000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 91000000-91ffffff : 0000:00:03.0 */
                {
                        .phys_start = 0x91000000,
                        .virt_start = 0x91000000,
                        .size = 0x1000000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92000000-920fffff : ICH HD audio */
                {
                        .phys_start = 0x92000000,
                        .virt_start = 0x92000000,
                        .size = 0x100000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92100000-9211ffff : igb_avb */
                {
                        .phys_start = 0x92100000,
                        .virt_start = 0x92100000,
                        .size = 0x20000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92121000-92123fff : igb_avb */
                {
                        .phys_start = 0x92121000,
                        .virt_start = 0x92121000,
                        .size = 0x3000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92200000-9220ffff : xhci-hcd */
                {
                        .phys_start = 0x92200000,
                        .virt_start = 0x92200000,
                        .size = 0x10000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92210000-92217fff : 0000:00:00.1 */
                {
                        .phys_start = 0x92210000,
                        .virt_start = 0x92210000,
                        .size = 0x8000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92218000-9221bfff : ICH HD audio */
                {
                        .phys_start = 0x92218000,
                        .virt_start = 0x92218000,
                        .size = 0x4000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9221c000-9221dfff : heci_ish */
                {
                        .phys_start = 0x9221c000,
                        .virt_start = 0x9221c000,
                        .size = 0x2000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9221e000-9221ffff : ahci */
                {
                        .phys_start = 0x9221e000,
                        .virt_start = 0x9221e000,
                        .size = 0x2000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92220000-92220fff : mei_me */
                {
                        .phys_start = 0x92220000,
                        .virt_start = 0x92220000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92223000-92223fff : heci_ish */
                {
                        .phys_start = 0x92223000,
                        .virt_start = 0x92223000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92224000-922241ff : lpss_dev */
                {
                        .phys_start = 0x92224000,
                        .virt_start = 0x92224000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92224200-922242ff : lpss_priv */
                {
                        .phys_start = 0x92224200,
                        .virt_start = 0x92224200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92224800-92224fff : idma64.0 */
                {
                        .phys_start = 0x92224800,
                        .virt_start = 0x92224800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92225000-922251ff : lpss_dev */
                {
                        .phys_start = 0x92225000,
                        .virt_start = 0x92225000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92225200-922252ff : lpss_priv */
                {
                        .phys_start = 0x92225200,
                        .virt_start = 0x92225200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92225800-92225fff : idma64.1 */
                {
                        .phys_start = 0x92225800,
                        .virt_start = 0x92225800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92226000-922261ff : lpss_dev */
                {
                        .phys_start = 0x92226000,
                        .virt_start = 0x92226000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92226200-922262ff : lpss_priv */
                {
                        .phys_start = 0x92226200,
                        .virt_start = 0x92226200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92226800-92226fff : idma64.2 */
                {
                        .phys_start = 0x92226800,
                        .virt_start = 0x92226800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92227000-922271ff : lpss_dev */
                {
                        .phys_start = 0x92227000,
                        .virt_start = 0x92227000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92227200-922272ff : lpss_priv */
                {
                        .phys_start = 0x92227200,
                        .virt_start = 0x92227200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92227800-92227fff : idma64.3 */
                {
                        .phys_start = 0x92227800,
                        .virt_start = 0x92227800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92228000-922281ff : lpss_dev */
                {
                        .phys_start = 0x92228000,
                        .virt_start = 0x92228000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92228200-922282ff : lpss_priv */
                {
                        .phys_start = 0x92228200,
                        .virt_start = 0x92228200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92228800-92228fff : idma64.4 */
                {
                        .phys_start = 0x92228800,
                        .virt_start = 0x92228800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92229000-922291ff : lpss_dev */
                {
                        .phys_start = 0x92229000,
                        .virt_start = 0x92229000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92229200-922292ff : lpss_priv */
                {
                        .phys_start = 0x92229200,
                        .virt_start = 0x92229200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92229800-92229fff : idma64.5 */
                {
                        .phys_start = 0x92229800,
                        .virt_start = 0x92229800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222a000-9222a1ff : lpss_dev */
                {
                        .phys_start = 0x9222a000,
                        .virt_start = 0x9222a000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222a200-9222a2ff : lpss_priv */
                {
                        .phys_start = 0x9222a200,
                        .virt_start = 0x9222a200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222a800-9222afff : idma64.6 */
                {
                        .phys_start = 0x9222a800,
                        .virt_start = 0x9222a800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222b000-9222b1ff : lpss_dev */
                {
                        .phys_start = 0x9222b000,
                        .virt_start = 0x9222b000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222b200-9222b2ff : lpss_priv */
                {
                        .phys_start = 0x9222b200,
                        .virt_start = 0x9222b200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222b800-9222bfff : idma64.7 */
                {
                        .phys_start = 0x9222b800,
                        .virt_start = 0x9222b800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222c000-9222c01f : serial */
                {
                        .phys_start = 0x9222c000,
                        .virt_start = 0x9222c000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222c200-9222c2ff : lpss_priv */
                {
                        .phys_start = 0x9222c200,
                        .virt_start = 0x9222c200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222c800-9222cfff : idma64.8 */
                {
                        .phys_start = 0x9222c800,
                        .virt_start = 0x9222c800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222d000-9222d01f : serial */
                {
                        .phys_start = 0x9222d000,
                        .virt_start = 0x9222d000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222d200-9222d2ff : lpss_priv */
                {
                        .phys_start = 0x9222d200,
                        .virt_start = 0x9222d200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222d800-9222dfff : idma64.9 */
                {
                        .phys_start = 0x9222d800,
                        .virt_start = 0x9222d800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222e000-9222e01f : serial */
                {
                        .phys_start = 0x9222e000,
                        .virt_start = 0x9222e000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222e200-9222e2ff : lpss_priv */
                {
                        .phys_start = 0x9222e200,
                        .virt_start = 0x9222e200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222f000-9222f01f : serial */
                {
                        .phys_start = 0x9222f000,
                        .virt_start = 0x9222f000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 9222f200-9222f2ff : lpss_priv */
                {
                        .phys_start = 0x9222f200,
                        .virt_start = 0x9222f200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92230000-922301ff : lpss_dev */
                {
                        .phys_start = 0x92230000,
                        .virt_start = 0x92230000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92230200-922302ff : lpss_priv */
                {
                        .phys_start = 0x92230200,
                        .virt_start = 0x92230200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92230800-92230fff : idma64.12 */
                {
                        .phys_start = 0x92230800,
                        .virt_start = 0x92230800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92231000-922311ff : lpss_dev */
                {
                        .phys_start = 0x92231000,
                        .virt_start = 0x92231000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92231200-922312ff : lpss_priv */
                {
                        .phys_start = 0x92231200,
                        .virt_start = 0x92231200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92231800-92231fff : idma64.13 */
                {
                        .phys_start = 0x92231800,
                        .virt_start = 0x92231800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92232000-922321ff : lpss_dev */
                {
                        .phys_start = 0x92232000,
                        .virt_start = 0x92232000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92232200-922322ff : lpss_priv */
                {
                        .phys_start = 0x92232200,
                        .virt_start = 0x92232200,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92232800-92232fff : idma64.14 */
                {
                        .phys_start = 0x92232800,
                        .virt_start = 0x92232800,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92233000-92233fff : mmc0 */
                {
                        .phys_start = 0x92233000,
                        .virt_start = 0x92233000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92234000-92234fff : mmc1 */
                {
                        .phys_start = 0x92234000,
                        .virt_start = 0x92234000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92235000-92235fff : mmc2 */
                {
                        .phys_start = 0x92235000,
                        .virt_start = 0x92235000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92236000-922367ff : ahci */
                {
                        .phys_start = 0x92236000,
                        .virt_start = 0x92236000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92237000-922370ff : 0000:00:1f.1 */
                {
                        .phys_start = 0x92237000,
                        .virt_start = 0x92237000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 92238000-922380ff : ahci */
                {
                        .phys_start = 0x92238000,
                        .virt_start = 0x92238000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: d0c00000-d0c00653 : INT3452:03 */
                {
                        .phys_start = 0xd0c00000,
                        .virt_start = 0xd0c00000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: d0c40000-d0c40763 : INT3452:01 */
                {
                        .phys_start = 0xd0c40000,
                        .virt_start = 0xd0c40000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: d0c50000-d0c5076b : INT3452:00 */
                {
                        .phys_start = 0xd0c50000,
                        .virt_start = 0xd0c50000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: d0c70000-d0c70673 : INT3452:02 */
                {
                        .phys_start = 0xd0c70000,
                        .virt_start = 0xd0c70000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: fea00000-feafffff : pnp 00:01 */
                {
                        .phys_start = 0xfea00000,
                        .virt_start = 0xfea00000,
                        .size = 0x100000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: fed00000-fed003ff : PNP0103:00 */
                {
                        .phys_start = 0xfed00000,
                        .virt_start = 0xfed00000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: fed03000-fed03fff : pnp 00:01 */
                {
                        .phys_start = 0xfed03000,
                        .virt_start = 0xfed03000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: fed06000-fed06fff : pnp 00:01 */
                {
                        .phys_start = 0xfed06000,
                        .virt_start = 0xfed06000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: fed08000-fed09fff : pnp 00:01 */
                {
                        .phys_start = 0xfed08000,
                        .virt_start = 0xfed08000,
                        .size = 0x2000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: fed1c000-fed1cfff : pnp 00:01 */
                {
                        .phys_start = 0xfed1c000,
                        .virt_start = 0xfed1c000,
                        .size = 0x1000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: fed40000-fed44fff : MSFT0101:00 */
                {
                        .phys_start = 0xfed40000,
                        .virt_start = 0xfed40000,
                        .size = 0x5000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: fed80000-fedbffff : pnp 00:01 */
                {
                        .phys_start = 0xfed80000,
                        .virt_start = 0xfed80000,
                        .size = 0x40000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
                /* MemRegion: 100000000-1ffffffff : System RAM */
                {
                        .phys_start = 0x100000000,
                        .virt_start = 0x100000000,
                        .size = 0x100000000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* MemRegion: 79f1c000-79f3bfff : ACPI DMAR RMRR */
                /* PCI device: 00:15.0 */
                {
                        .phys_start = 0x79f1c000,
                        .virt_start = 0x79f1c000,
                        .size = 0x20000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* MemRegion: 7b800000-7fffffff : ACPI DMAR RMRR */
                /* PCI device: 00:02.0 */
                {
                        .phys_start = 0x7b800000,
                        .virt_start = 0x7b800000,
                        .size = 0x4800000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
                },
                /* MemRegion: 3f000000-3f1fffff : JAILHOUSE Inmate Memory */
                {
                        .phys_start = 0x3f000000,
                        .virt_start = 0x3f000000,
                        .size = 0x200000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
                },
        },

        .irqchips = {
                /* IOAPIC 1, GSI base 0 */
                {
                        .address = 0xfec00000,
                        .id = 0x0,
                        .pin_bitmap = 0xffffff,
                },
        },

        .pio_bitmap = {
                [     0/8 ...   0x3f/8] = -1,
                [  0x40/8 ...   0x47/8] = 0xf0, /* PIT */
                [  0x48/8 ...   0x5f/8] = -1,
                [  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 ...   0x87/8] = 0xfe, /* Linux: native_io_delay() */
                [  0x88/8 ...  0x3af/8] = -1,
                [ 0x3b0/8 ...  0x3df/8] = 0x00, /* VGA */
                [ 0x3e0/8 ...  0xcff/8] = -1,
                [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: PCI bus */
        },

        .pci_devices = {
                /* PCIDevice: 00:00.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0x0,
                        .bar_mask = {
                                0x00000000, 0x00000000, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 0,
                        .num_caps = 0,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:00.1 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0x1,
                        .bar_mask = {
                                0xffff8000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 0,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:02.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 0,
                        .domain = 0x0,
                        .bdf = 0x10,
                        .bar_mask = {
                                0xff000000, 0xffffffff, 0x00000000,
                                0xf0000000, 0xffffffff, 0x00000000,
                        },
                        .caps_start = 2,
                        .num_caps = 7,
                        .num_msi_vectors = 1,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:03.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0x18,
                        .bar_mask = {
                                0xff000000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 9,
                        .num_caps = 4,
                        .num_msi_vectors = 1,
                        .msi_64bits = 1,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:0e.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0x70,
                        .bar_mask = {
                                0xffffc000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0xfff00000,
                        },
                        .caps_start = 13,
                        .num_caps = 5,
                        .num_msi_vectors = 1,
                        .msi_64bits = 1,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:0f.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0x78,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 18,
                        .num_caps = 3,
                        .num_msi_vectors = 1,
                        .msi_64bits = 1,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:11.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0x88,
                        .bar_mask = {
                                0xffffe000, 0xffffffff, 0x00000000,
                                0xfffff000, 0xffffffff, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:12.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0x90,
                        .bar_mask = {
                                0xffffe000, 0xffffff00, 0xfffffff8,
                                0xfffffffc, 0xffffffe0, 0xfffff800,
                        },
                        .caps_start = 23,
                        .num_caps = 3,
                        .num_msi_vectors = 1,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:13.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_BRIDGE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0x98,
                        .bar_mask = {
                                0x00000000, 0x00000000, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 26,
                        .num_caps = 9,
                        .num_msi_vectors = 1,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:13.2 */
                {
                        .type = JAILHOUSE_PCI_TYPE_BRIDGE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0x9a,
                        .bar_mask = {
                                0x00000000, 0x00000000, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 26,
                        .num_caps = 9,
                        .num_msi_vectors = 1,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:13.3 */
                {
                        .type = JAILHOUSE_PCI_TYPE_BRIDGE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0x9b,
                        .bar_mask = {
                                0x00000000, 0x00000000, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 26,
                        .num_caps = 9,
                        .num_msi_vectors = 1,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:14.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_BRIDGE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xa0,
                        .bar_mask = {
                                0x00000000, 0x00000000, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 26,
                        .num_caps = 9,
                        .num_msi_vectors = 1,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:14.1 */
                {
                        .type = JAILHOUSE_PCI_TYPE_BRIDGE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xa1,
                        .bar_mask = {
                                0x00000000, 0x00000000, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 26,
                        .num_caps = 9,
                        .num_msi_vectors = 1,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:15.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xa8,
                        .bar_mask = {
                                0xffff0000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 35,
                        .num_caps = 3,
                        .num_msi_vectors = 8,
                        .msi_64bits = 1,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:16.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xb0,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:16.1 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xb1,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:16.2 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xb2,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:16.3 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xb3,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:17.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xb8,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:17.1 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xb9,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:17.2 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xba,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:17.3 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xbb,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:18.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xc0,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:18.1 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xc1,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:18.2 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xc2,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:18.3 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xc3,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:19.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xc8,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:19.1 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xc9,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:19.2 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xca,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:1b.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xd8,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:1c.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xe0,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:1e.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xf0,
                        .bar_mask = {
                                0xfffff000, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 21,
                        .num_caps = 2,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:1f.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xf8,
                        .bar_mask = {
                                0x00000000, 0x00000000, 0x00000000,
                                0x00000000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 0,
                        .num_caps = 0,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 00:1f.1 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0xf9,
                        .bar_mask = {
                                0xffffff00, 0xffffffff, 0x00000000,
                                0x00000000, 0x00000000, 0xffffffe0,
                        },
                        .caps_start = 0,
                        .num_caps = 0,
                        .num_msi_vectors = 0,
                        .msi_64bits = 0,
                        .num_msix_vectors = 0,
                        .msix_region_size = 0x0,
                        .msix_address = 0x0,
                },
                /* PCIDevice: 02:00.0 */
                {
                        .type = JAILHOUSE_PCI_TYPE_DEVICE,
                        .iommu = 1,
                        .domain = 0x0,
                        .bdf = 0x200,
                        .bar_mask = {
                                0xfffe0000, 0x00000000, 0xffffffe0,
                                0xffffc000, 0x00000000, 0x00000000,
                        },
                        .caps_start = 38,
                        .num_caps = 7,
                        .num_msi_vectors = 1,
                        .msi_64bits = 1,
                        .num_msix_vectors = 5,
                        .msix_region_size = 0x1000,
                        .msix_address = 0x92120000,
                },
        },

        .pci_caps = {
                /* PCIDevice: 00:00.1 */
                {
                        .id = 0x1,
                        .start = 0xd0,
                        .len = 8,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x9,
                        .start = 0xe0,
                        .len = 2,
                        .flags = 0,
                },
                /* PCIDevice: 00:02.0 */
                {
                        .id = 0x9,
                        .start = 0x40,
                        .len = 2,
                        .flags = 0,
                },
                {
                        .id = 0x10,
                        .start = 0x70,
                        .len = 44,
                        .flags = 0,
                },
                {
                        .id = 0x5,
                        .start = 0xac,
                        .len = 10,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x1,
                        .start = 0xd0,
                        .len = 8,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x1b | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x100,
                        .len = 4,
                        .flags = 0,
                },
                {
                        .id = 0xf | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x200,
                        .len = 4,
                        .flags = 0,
                },
                {
                        .id = 0x13 | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x300,
                        .len = 4,
                        .flags = 0,
                },
                /* PCIDevice: 00:03.0 */
                {
                        .id = 0x10,
                        .start = 0x70,
                        .len = 44,
                        .flags = 0,
                },
                {
                        .id = 0x5,
                        .start = 0xac,
                        .len = 14,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x1,
                        .start = 0xd0,
                        .len = 8,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x0 | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x100,
                        .len = 4,
                        .flags = 0,
                },
                /* PCIDevice: 00:0e.0 */
                {
                        .id = 0x1,
                        .start = 0x50,
                        .len = 8,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x9,
                        .start = 0x80,
                        .len = 2,
                        .flags = 0,
                },
                {
                        .id = 0x5,
                        .start = 0x60,
                        .len = 14,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x10,
                        .start = 0x70,
                        .len = 20,
                        .flags = 0,
                },
                {
                        .id = 0x0 | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x100,
                        .len = 4,
                        .flags = 0,
                },
                /* PCIDevice: 00:0f.0 */
                {
                        .id = 0x1,
                        .start = 0x50,
                        .len = 8,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x5,
                        .start = 0x8c,
                        .len = 14,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x9,
                        .start = 0xa4,
                        .len = 2,
                        .flags = 0,
                },
                /* PCIDevice: 00:11.0 */
                /* PCIDevice: 00:16.0 */
                /* PCIDevice: 00:16.1 */
                /* PCIDevice: 00:16.2 */
                /* PCIDevice: 00:16.3 */
                /* PCIDevice: 00:17.0 */
                /* PCIDevice: 00:17.1 */
                /* PCIDevice: 00:17.2 */
                /* PCIDevice: 00:17.3 */
                /* PCIDevice: 00:18.0 */
                /* PCIDevice: 00:18.1 */
                /* PCIDevice: 00:18.2 */
                /* PCIDevice: 00:18.3 */
                /* PCIDevice: 00:19.0 */
                /* PCIDevice: 00:19.1 */
                /* PCIDevice: 00:19.2 */
                /* PCIDevice: 00:1b.0 */
                /* PCIDevice: 00:1c.0 */
                /* PCIDevice: 00:1e.0 */
                {
                        .id = 0x1,
                        .start = 0x80,
                        .len = 8,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x9,
                        .start = 0x90,
                        .len = 2,
                        .flags = 0,
                },
                /* PCIDevice: 00:12.0 */
                {
                        .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,
                },
                /* PCIDevice: 00:13.0 */
                /* PCIDevice: 00:13.2 */
                /* PCIDevice: 00:13.3 */
                /* PCIDevice: 00:14.0 */
                /* PCIDevice: 00:14.1 */
                {
                        .id = 0x10,
                        .start = 0x40,
                        .len = 44,
                        .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,
                },
                {
                        .id = 0x0 | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x100,
                        .len = 4,
                        .flags = 0,
                },
                {
                        .id = 0xd | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x140,
                        .len = 4,
                        .flags = 0,
                },
                {
                        .id = 0x1f | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x150,
                        .len = 4,
                        .flags = 0,
                },
                {
                        .id = 0x1e | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x200,
                        .len = 4,
                        .flags = 0,
                },
                {
                        .id = 0x0 | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x220,
                        .len = 4,
                        .flags = 0,
                },
                /* PCIDevice: 00:15.0 */
                {
                        .id = 0x1,
                        .start = 0x70,
                        .len = 8,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x5,
                        .start = 0x80,
                        .len = 14,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x9,
                        .start = 0x90,
                        .len = 2,
                        .flags = 0,
                },
                /* PCIDevice: 02:00.0 */
                {
                        .id = 0x1,
                        .start = 0x40,
                        .len = 8,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x5,
                        .start = 0x50,
                        .len = 24,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x11,
                        .start = 0x70,
                        .len = 12,
                        .flags = JAILHOUSE_PCICAPS_WRITE,
                },
                {
                        .id = 0x10,
                        .start = 0xa0,
                        .len = 44,
                        .flags = 0,
                },
                {
                        .id = 0x1 | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x100,
                        .len = 4,
                        .flags = 0,
                },
                {
                        .id = 0x3 | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x140,
                        .len = 4,
                        .flags = 0,
                },
                {
                        .id = 0x17 | JAILHOUSE_PCI_EXT_CAP,
                        .start = 0x1a0,
                        .len = 4,
                        .flags = 0,
                },
        },
};

Reply via email to