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

-- 
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.

Reply via email to