On Wednesday, September 26, 2018 at 1:00:29 AM UTC-6, J. Kiszka wrote: > On 26.09.18 08:51, Jan Kiszka wrote: > > On 26.09.18 07:55, [email protected] wrote: > >> I have two questions: > >> > >> 1) For Jailhouse images: is there any way I can rebuild Jailhouse one > >> inside > >> the x86 image? When I clone jailhouse inside the image and try to make it, > >> the > >> necessary linux-header stuff isn't there, and there doesn't seem to be a > >> linux-header package for 4.14.50. > > > > Yeah, we do not install the build dependencies into the demo images, only > > runtime dependencies - keeps them smaller. But the packages are there, and > > you > > can either modify the IMAGE_INSTALL rule to include linux-headers-jailhouse > > or > > transfer the package manually from > > out/build/tmp/deploy/apt/jailhouse-demo/pool/main/l/linux-4.14.70/ to the > > target > > and install it manually. Other build dependencies can simply be pulled from > > upstream Debian on the target (apt-get update; apt-get install ...). > > > >> > >> 2) For running Jailhouse on my real x86 machine: I'm trying to run a basic > >> inmate based off of the apic-demo, but my workflow doesn't seem to work. > >> My > >> machine hangs when I try to load the cell. Here is what I am doing on an > >> x86 > >> Ubuntu 18.04 (kernel 4.15.0-34-generic). Is the following correct? > >> (Bazooka is > >> the name of my machine): > > > > Do you get any messages from Jailhouse on the serial console while creating > > the > > apic-demo cell? > > > >> > >> <set intel_iommu=on in the kernel command line and reboot> > >> cd ~ > >> git clone https://github.com/siemens/jailhouse > >> cd ~/jailhouse > >> make > >> sudo ./tools/jailhouse config create ./configs/x86/bazooka.c > >> make > >> <set intel_iommu=off in the kernel command line and reboot> > >> cd ~/jailhouse > >> sudo insmod ./driver/jailhouse.ko > >> sudo ./tools/jailhouse enable ./configs/x86/bazooka.cell > >> sudo ./tools/jailhouse cell create ./configs/x86/bazooka-demo.cell > >> sudo ./tools/jailhouse cell load bazooka-demo > >> ./inmates/demos/x86/bazooka-demo.bin > >> <**This is where Jailhouse hangs and my Linux starts to crash**> > >> sudo ./tools/jailhouse cell start bazooka-demo > >> sudo ./tools/jailhouse cell destroy bazooka-demo > >> sudo ./tools/jailhouse disable > >> > >> My inmate "bazooka-demo" is defined by ./inmates/demos/x86/bazooka-demo.c. > >> I > >> stripped down the "apic-demo.c" file to create a basic inmate. > >> > >> #include <inmate.h> > >> void inmate_main(void) > >> { > >> bool terminate = false; > >> comm_region->cell_state = JAILHOUSE_CELL_RUNNING_LOCKED; > >> while (!terminate) { > >> switch (comm_region->msg_to_cell) { > >> case JAILHOUSE_MSG_SHUTDOWN_REQUEST: > >> printk("MGH: Shutting down bazooka-demo cell"); > >> terminate = true; > >> break; > >> default: > >> printk("MGH: Sending reply from bazooka-demo cell"); > >> jailhouse_send_reply_from_cell(comm_region, > >> JAILHOUSE_MSG_UNKNOWN); > >> break; > >> } > >> } > >> printk("MGH: Stopped APIC demo\n"); > >> comm_region->cell_state = JAILHOUSE_CELL_SHUT_DOWN; > >> } > >> > >> And here is ./configs/x86/bazooka-demo.c (based off of apic-demo.c): > >> > >> #include <jailhouse/types.h> > >> #include <jailhouse/cell-config.h> > >> > >> #define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0]) > >> > >> struct { > >> struct jailhouse_cell_desc cell; > >> __u64 cpus[1]; > >> struct jailhouse_memory mem_regions[2]; > >> struct jailhouse_cache cache_regions[1]; > >> __u8 pio_bitmap[0x2000]; > >> } __attribute__((packed)) config = { > >> .cell = { > >> .signature = JAILHOUSE_CELL_DESC_SIGNATURE, > >> .revision = JAILHOUSE_CONFIG_REVISION, > >> .name = "bazooka-demo", > >> > >> .cpu_set_size = sizeof(config.cpus), > >> .num_memory_regions = ARRAY_SIZE(config.mem_regions), > >> .num_cache_regions = ARRAY_SIZE(config.cache_regions), > >> .num_irqchips = 0, > >> .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap), > >> .num_pci_devices = 0, > >> > >> .console = { > >> .type = JAILHOUSE_CON_TYPE_8250, > >> .flags = JAILHOUSE_CON_ACCESS_PIO, > >> .address = 0x3f8, > >> }, > >> }, > >> > >> .cpus = { > >> 0x8, > >> }, > >> > >> .mem_regions = { > >> /* RAM */ { > >> .phys_start = 0x3f000000, > >> .virt_start = 0, > >> .size = 0x00100000, > >> .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | > >> JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, > >> }, > >> /* communication region */ { > >> .virt_start = 0x00100000, > >> .size = 0x00001000, > >> .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | > >> JAILHOUSE_MEM_COMM_REGION, > >> }, > >> }, > >> > >> .cache_regions = { > >> { > >> .start = 0, > >> .size = 2, > >> .type = JAILHOUSE_CACHE_L3, > >> }, > >> }, > >> > >> .pio_bitmap = { > >> [ 0/8 ... 0x2f7/8] = -1, > >> [ 0x2f8/8 ... 0x2ff/8] = 0, /* serial2 */ > >> [ 0x300/8 ... 0x3f7/8] = -1, > >> [ 0x3f8/8 ... 0x3ff/8] = 0, /* serial1 */ > >> [ 0x400/8 ... 0xe00f/8] = -1, > >> [0xe010/8 ... 0xe017/8] = 0, /* OXPCIe952 serial1 */ > >> [0xe018/8 ... 0xffff/8] = -1, > >> }, > >> }; > >> > >> > >> What am I doing wrong? I'm guessing that I need to change the bazooka-demo > >> config somehow, but I'm not sure where to begin. > > > > Compare the original apic-demo.c against the qemu-x86.c and your generated > > system config /wrt memory layout, specifically inmate reservations. By > > default, > > "jailhouse config create" uses less inmate reservation than we do in the > > qemu-x86 setup (now I remember what I also wanted to adjust prior to > > releasing...), and that may shift things around. > > Actually, also the default reservation for the hypervisor itself is > different. We should really try to adjust them. Could you check if this > gives a better experience by default? > > diff --git a/tools/jailhouse-config-create b/tools/jailhouse-config-create > index 6673f46c..5f21a349 100755 > --- a/tools/jailhouse-config-create > +++ b/tools/jailhouse-config-create > @@ -70,8 +70,8 @@ parser.add_argument('-c', '--console', > action='store', > type=str) > > -memargs = [['--mem-inmates', '2M', 'inmate'], > - ['--mem-hv', '64M', 'hypervisor']] > +memargs = [['--mem-inmates', '82M', 'inmate'], > + ['--mem-hv', '6M', 'hypervisor']] > > for entry in memargs: > parser.add_argument(entry[0], > > > Thanks > Jan > > -- > Siemens AG, Corporate Technology, CT RDA IOT SES-DE > Corporate Competence Center Embedded Linux
Jan, I applied the patch to Jailhouse, regenerated the config, and it seems to work! It no longer crashes on `sudo ./tools/jailhouse cell destroy bazooka-demo`. Thanks a lot! I'll try what you said regarding build dependencies inside the QEMU image. I just learned about debugging through the serial console in the FAQ, so I'm still waiting on Amazon for my serial port cables to arrive :) Thanks, -Michael -- 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]. For more options, visit https://groups.google.com/d/optout.
