On 2018-02-12 10:18, Henning Schild wrote: > Am Mon, 12 Feb 2018 14:38:29 +0530 > schrieb bharat gohil <ghl.b...@gmail.com>: > >> Hi Jan, >> >> I had modified root cell configuration as per your suggestion. >> I got following error, >> >> Adding virtual PCI device 00:00.0 to cell "XXXXX" >> /media/bgohil/data_ssd/virtualization/jailhouse/hypervisor/ivshmem.c:330: >> returning error -EINVAL >> JAILHOUSE_ENABLE: Invalid argument > > You specified 7 memory regions and the array just has 6 entries, you
One is commented out, 6 is correct. shmem_region is wrong: 5 is the last index in mem-regions. Jan > most likely even got a compiler warning about that. > Now your index 6 is out of the array, have a look at > hypervisor/ivshmem.c:330. > > Henning > >> Please find attached cell configuration file >> Thanks, >> Bharat >> >> On Mon, Feb 12, 2018 at 12:35 PM, Jan Kiszka <jan.kis...@web.de> >> wrote: >> >>> On 2018-02-12 05:53, bharat gohil wrote: >>>> Hello Jan, >>>> >>>> Please find attached root cell config file. >>> >>>> /* >>>> * Jailhouse, a Linux-based partitioning hypervisor >>>> * >>>> * Test configuration for XXXXX (2-Cortex-A72, 4-Cortex-A35, 2GB >>>> RAM) * >>>> * Copyright (c) Siemens AG, 2014-2016 >>>> * >>>> * Authors: >>>> * Jan Kiszka <jan.kis...@siemens.com> >>>> * >>>> * This work is licensed under the terms of the GNU GPL, version >>>> 2. See >>>> * the COPYING file in the top-level directory. >>>> */ >>>> >>>> #include <jailhouse/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[8]; >>> >>> You are preparing for 8 regions here, but only 6 are initialized >>> below. First thing to fix. >>> >>>> struct jailhouse_irqchip irqchips[1]; >>>> struct jailhouse_pci_device pci_devices[1]; >>>> } __attribute__((packed)) config = { >>>> .header = { >>>> .signature = JAILHOUSE_SYSTEM_SIGNATURE, >>>> .revision = JAILHOUSE_CONFIG_REVISION, >>>> .hypervisor_memory = { >>>> .phys_start = 0x7C000000, >>>> .size = 0x4000000, >>>> }, >>>> .debug_console = { >>>> .address = 0x11002000, >>>> .size = 0x1000, >>>> .flags = JAILHOUSE_CON1_TYPE_8250 | >>>> JAILHOUSE_CON1_ACCESS_MMIO | >>>> JAILHOUSE_CON1_REGDIST_4 | >>>> JAILHOUSE_CON2_TYPE_ROOTPAGE, >>>> }, >>>> .platform_info = { >>>> .pci_mmconfig_base = 0x2000000, >>>> .pci_mmconfig_end_bus = 0, >>>> .pci_is_virtual = 1, >>>> .arm = { >>>> .gic_version = 2, >>>> .gicd_base = 0x10510000, >>>> .gicc_base = 0x10520000, >>>> .gich_base = 0x10540000, >>>> .gicv_base = 0x10560000, >>>> .maintenance_irq = 25, >>>> }, >>>> }, >>>> .root_cell = { >>>> .name = "XXXXX", >>>> >>>> .cpu_set_size = sizeof(config.cpus), >>>> .num_memory_regions = >>> ARRAY_SIZE(config.mem_regions), >>>> .num_irqchips = ARRAY_SIZE(config.irqchips), >>>> .num_pci_devices = >>>> ARRAY_SIZE(config.pci_devices), >>>> >>>> .vpci_irq_base = 108, >>>> }, >>>> }, >>>> >>>> .cpus = { >>>> 0x3F, >>>> }, >>>> >>>> .mem_regions = { >>>> /* CCU */ { >>>> .phys_start = 0x10000000, >>>> .virt_start = 0x10000000, >>>> .size = 0x2000000, >>>> .flags = JAILHOUSE_MEM_READ | >>> JAILHOUSE_MEM_WRITE | >>>> JAILHOUSE_MEM_IO | >>>> JAILHOUSE_MEM_IO_32, }, >>>> /* MMIO 1 (permissive) */ { >>>> .phys_start = 0x13000000, >>>> .virt_start = 0x13000000, >>>> .size = 0x4000000, >>>> .flags = JAILHOUSE_MEM_READ | >>>> JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO, >>>> }, >>>> /* pinctrl PA */ { >>>> .phys_start = 0x18000000, >>>> .virt_start = 0x18000000, >>>> .size = 0x2000000, >>>> .flags = JAILHOUSE_MEM_READ | >>>> JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_IO_32, >>>> }, >>>> /* RAM */ { >>>> .phys_start = 0x40000000, >>>> .virt_start = 0x40000000, >>>> .size = 0x02FFFFFF, >>> >>> This switches the region in to sub-page mode, and that may cause >>> this surprising behavior. Just do size + 1, as it is correct. >>> >>>> .flags = JAILHOUSE_MEM_READ | >>>> JAILHOUSE_MEM_WRITE >>> | JAILHOUSE_MEM_EXECUTE, >>>> }, >>>> /* RAM*/ /*{ >>>> .phys_start = 0x40EC0000, >>>> .virt_start = 0x40EC0000, >>>> .size = 0x0213FFFF, >>>> .flags = JAILHOUSE_MEM_READ | >>> JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE, >>>> },*/ >>>> /**THIS HOLE FOR ARM TRUSTED FIRMWARE**/ >>>> >>>> /* RAM*/ { >>>> .phys_start = 0x43040000, >>>> .virt_start = 0x43040000, >>>> .size = 0x38EC0000, >>>> .flags = JAILHOUSE_MEM_READ | >>> JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE, >>>> }, >>>> >>>> /* IVSHMEM shared memory region */ { >>>> .phys_start = 0x7BF00000, >>>> .virt_start = 0x7BF00000, >>>> .size = 0x100000, >>>> .flags = JAILHOUSE_MEM_READ | >>>> JAILHOUSE_MEM_WRITE, }, >>>> }, >>>> >>>> .irqchips = { >>>> /* GIC */ { >>>> .address = 0x10510000, >>>> .pin_base = 32, >>>> .pin_bitmap = { >>>> 0xffffffff, 0xffffffff, >>>> 0xffffffff, >>> 0xffffffff >>>> }, >>>> }, >>>> }, >>>> >>>> .pci_devices = { >>>> { >>>> .type = JAILHOUSE_PCI_TYPE_IVSHMEM, >>>> .bdf = 0x00, >>>> .bar_mask = { >>>> 0xffffff00, 0xffffffff, 0x00000000, >>>> 0x00000000, 0x00000000, 0x00000000, >>>> }, >>>> .shmem_region = 7, >>> >>> Keep this up-to-date when disabling a region. Should be 6 now. >>> >>>> .shmem_protocol = >>>> JAILHOUSE_SHMEM_PROTO_VETH, }, >>>> }, >>>> }; >>>> >>> >>> Jan >>> >> >> >> > -- Siemens AG, Corporate Technology, CT RDA IOT 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.