On Wednesday, April 11, 2018 at 12:23:21 PM UTC+2, f1f0 wrote: > > I am proposing to add a Documentation/cell-loading.md file. > Rather than proposing the .md directly, I prefer to propose raw text > discussion, > then work on the cosmetics and links from other parts of the > Documentation. > > -FF > > Jailhouse loading of images is pretty flexible but can be disconcerting. > > The syntax is: > > jailhouse cell load \ > { ID | [--name] NAME } \ > { { IMAGE | { -s | --string } "STRING" } [-a | --address ADDRESS] } ... > > Valid forms are: > > # loads inamte.bin (offset 0 assumed)
inmate.bin > jailhouse cell load foocell inmate.bin > > # same as above with explicit location > jailhouse cell load foocell inmate.bin -a 0 > > # load three binary objects (in order) > jailhouse cell load foocell \ > inmate.bin \ > sharedobject.so -a 0x1000000 \ > ramfs.bin -a 0x2000000 > > The first example assumes "-a 0". > > The last example, loads in the order specified, three binary objects, > the first one at offset 0, the second one at 0x1000000. > Should inmate.bin be larger than 0x1000000, the upper part will be > overridden > by sharedobject.so. > > Whatever load order, execution starts in the cell at offset 0. > > > This multi-image loading capability can be used to patch images and > pass parameters to the image. The following explains how parameters are > passed > with the inmate library. > > The inmate library assumes a command line string to be located at a > fixed > location that is processor specific: > - On x86 this is offset 0x100 (see inmates/lib/x86/inmate.lds) > - On arm64, this is offset 0x1000 (see inmates/lib/arm64/inmate.lds.S) > > The command line string capacity is fixed (256 bytes by defaylt) by default But it is not fixed, inmates may expand it. None of the demo inmates does, though. > CMDLINE_BUFFER_SIZE > in inmates/lib/cmdline.c. > > Here is an example to pass parameters stored in the file > commandline.txt to the last example on an x86 system: > > OFFSET=0x100 > jailhouse cell load foocell \ > inmate.bin \ > commanline.txt -a $OFFSET \ > sharedobject.so -a 0x1000000 \ > ramfs.bin -a 0x2000000 > > This command patches inmate.bin at offset 0x100 that happens to be char* > cmdline for > inmates that uses Jailhouse inmates library. > > Note: on an arm64 we would set OFFSET=0x1000 > > To be more practical and avoid using a text file, there is an > image-as-string > option: > > OFFSET=0x100 > jailhouse cell load foocell \ > inmate.bin \ > -s "<command line parameters here>" -a $OFFSET \ > sharedobject.so -a 0x1000000 \ > ramfs.bin -a 0x2000000 > > The string in the -s need to be less than 255 characters long > (CMDLINE_BUFFER_SIZE - terminatind \0) > otherwise it will silently overwrite existing code. You pointed out this limit above already. Thanks for kicking this off. As I wrote in the other thread, I think this information is best located in a man page for the jailhouse tool. Of course, that would imply writing more than "just" about jailhouse cell load... :D But maybe we can start the man page with "to-be-written" stubs. 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.