cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

guest-loader.rst (1937B)


      1..
      2   Copyright (c) 2020, Linaro
      3
      4Guest Loader
      5------------
      6
      7The guest loader is similar to the ``generic-loader`` although it is
      8aimed at a particular use case of loading hypervisor guests. This is
      9useful for debugging hypervisors without having to jump through the
     10hoops of firmware and boot-loaders.
     11
     12The guest loader does two things:
     13
     14  - load blobs (kernels and initial ram disks) into memory
     15  - sets platform FDT data so hypervisors can find and boot them
     16
     17This is what is typically done by a boot-loader like grub using it's
     18multi-boot capability. A typical example would look like:
     19
     20.. parsed-literal::
     21
     22  |qemu_system| -kernel ~/xen.git/xen/xen \
     23    -append "dom0_mem=1G,max:1G loglvl=all guest_loglvl=all" \
     24    -device guest-loader,addr=0x42000000,kernel=Image,bootargs="root=/dev/sda2 ro console=hvc0 earlyprintk=xen" \
     25    -device guest-loader,addr=0x47000000,initrd=rootfs.cpio
     26
     27In the above example the Xen hypervisor is loaded by the -kernel
     28parameter and passed it's boot arguments via -append. The Dom0 guest
     29is loaded into the areas of memory. Each blob will get
     30``/chosen/module@<addr>`` entry in the FDT to indicate it's location and
     31size. Additional information can be passed with by using additional
     32arguments.
     33
     34Currently the only supported machines which use FDT data to boot are
     35the ARM and RiscV ``virt`` machines.
     36
     37Arguments
     38^^^^^^^^^
     39
     40The full syntax of the guest-loader is::
     41
     42  -device guest-loader,addr=<addr>[,kernel=<file>,[bootargs=<args>]][,initrd=<file>]
     43
     44``addr=<addr>``
     45  This is mandatory and indicates the start address of the blob.
     46
     47``kernel|initrd=<file>``
     48  Indicates the filename of the kernel or initrd blob. Both blobs will
     49  have the "multiboot,module" compatibility string as well as
     50  "multiboot,kernel" or "multiboot,ramdisk" as appropriate.
     51
     52``bootargs=<args>``
     53  This is an optional field for kernel blobs which will pass command
     54  like via the `/chosen/module@<addr>/bootargs` node.