Hi, I am currently trying to get jailhouse running on a new arm64 target (Cortex-A53). I am trying to get a minimal root cell configuration working but at the moment when enabling it it just immediately crashes the board (stuck without any output).
The physical memory on the board seems to be available from 00000000-1fffffff (/proc/iomem) and initially I reduced the memory for Linux using mem=128M to be able to place jailhouse into the upper regions (see below, starting at 0x08000000). Following that I tried to make sense on how the GIC needs to be set up. >From what I know the device uses a GIC v2 with base address 0xffc01000. This can be found in the linux device tree here: https://github.com/khadas/linux/blob/khadas-vims-5.4.y/arch/arm64/boot/dts/amlogic/mesont7.dtsi#L285 However, there it only features 2 entries, and in all v2 configurations found in the jailhouse repo 4 addresses are used. (GIC v3 seems to use only two). In addition I am not sure what the purpose of irqchips is and how that should look like. Is this to communicate to jailhouse what interrupts it can make use of? It would be great to get some feedback if I correctly configured the GIC (and memory) and if what I am seeing could be related to a incorrect configuration on my side. (I might also have to extend this configuration, I assumed what I have is enough for a minimal setup.) struct { struct jailhouse_system header; __u64 cpus[1]; struct jailhouse_memory mem_regions[1]; struct jailhouse_irqchip irqchips[1]; struct jailhouse_pci_device pci_devices[0]; } __attribute__((packed)) config = { .header = { .signature = JAILHOUSE_SYSTEM_SIGNATURE, .revision = JAILHOUSE_CONFIG_REVISION, .flags = JAILHOUSE_SYS_VIRTUAL_DEBUG_CONSOLE, .hypervisor_memory = { .phys_start = 0x08000000, .size = 0x04000000, }, .debug_console = { .flags = JAILHOUSE_CON_TYPE_NONE, }, .platform_info = { .pci_mmconfig_base = 0x0C000000, .pci_mmconfig_end_bus = 0, .pci_is_virtual = 1, .arm = { .gic_version = 2, .gicd_base = 0xffc01000, .gicc_base = 0xffc02000, .gich_base = 0xffc04000, .gicv_base = 0xffc06000, .maintenance_irq = 25, }, }, .root_cell = { .name = "AM113", .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 = { 0b1111, }, .mem_regions = { /* System RAM */ { .phys_start = 0x08000000, .virt_start = 0x08000000, .size = 0x04000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE, }, }, .irqchips = { /* GIC */ { .address = 0xffc01000, .pin_base = 32, .pin_bitmap = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, }, }, }, .pci_devices = { }, }; # cat /proc/iomem 00000000-07ffffff : System RAM 03000000-03e3ffff : Kernel code 04030000-04bcbfff : Kernel data ff3f0000-ff3fffff : /ethernet@0xff3f0000 ff500000-ff507fff : /dwc3@ff500000 ff500000-ff507fff : /dwc3@ff500000 ff50c100-ff5fffff : /dwc3@ff500000 ff634018-ff63401b : /rng ff634430-ff63446b : gpio ff634480-ff6344bf : mux ff6344e8-ff6344fb : pull ff634520-ff634533 : pull-enable ff634540-ff634547 : /ethernet@0xff3f0000 ff63c400-ff63c44b : /mhu@c883c400 ff642000-ff643fff : /soc/audiobus@0xff642000 ff800014-ff80001b : mux ff800024-ff80002b : gpio ff80002c-ff80002f : pull ff803000-ff803017 : ff803000.serial ff805000-ff80501f : /soc/aobus@ff800000/i2c@5000 ff809000-ff809037 : /saradc ffd13000-ffd1303b : /spi@ffd130000 ffd1e000-ffd1e01f : /soc/cbus@ffd00000/i2c@1e000 ffd23000-ffd23017 : ffd23000.serial ffe05000-ffe06fff : /sdio@ffe05000 ffe07800-ffe079ff : ffe07800.mtd_nand ffe09000-ffe0907f : /usb2phy@ffe09000 ffe09080-ffe0909f : /usb3phy@ffe09080 fffd3000-fffd37ff : /mhu@c883c400 -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jailhouse-dev/515276d4-6a49-4734-92f9-8fcae109edd3n%40googlegroups.com.
