On Thu, Jul 16, 2020 at 07:04:56PM +1000, Alexey Kardashevskiy wrote: > Ping? I kinda realize it is not going to replace SLOF any time soon but > still...
Yeah, I know. I just haven't had time to consider it. Priority starvation. > On 07/07/2020 10:34, Alexey Kardashevskiy wrote: > > Ping? > > > > > > On 24/06/2020 10:28, Alexey Kardashevskiy wrote: > >> Ping? > >> > >> On 02/06/2020 21:40, Alexey Kardashevskiy wrote: > >>> Ping? > >>> > >>> On 13/05/2020 13:58, Alexey Kardashevskiy wrote: > >>>> The PAPR platform which describes an OS environment that's presented by > >>>> a combination of a hypervisor and firmware. The features it specifies > >>>> require collaboration between the firmware and the hypervisor. > >>>> > >>>> Since the beginning, the runtime component of the firmware (RTAS) has > >>>> been implemented as a 20 byte shim which simply forwards it to > >>>> a hypercall implemented in qemu. The boot time firmware component is > >>>> SLOF - but a build that's specific to qemu, and has always needed to be > >>>> updated in sync with it. Even though we've managed to limit the amount > >>>> of runtime communication we need between qemu and SLOF, there's some, > >>>> and it has become increasingly awkward to handle as we've implemented > >>>> new features. > >>>> > >>>> This implements a boot time OF client interface (CI) which is > >>>> enabled by a new "x-vof" pseries machine option (stands for "Virtual Open > >>>> Firmware). When enabled, QEMU implements the custom H_OF_CLIENT hcall > >>>> which implements Open Firmware Client Interface (OF CI). This allows > >>>> using a smaller stateless firmware which does not have to manage > >>>> the device tree. > >>>> > >>>> The new "vof.bin" firmware image is included with source code under > >>>> pc-bios/. It also includes RTAS blob. > >>>> > >>>> This implements a handful of CI methods just to get -kernel/-initrd > >>>> working. In particular, this implements the device tree fetching and > >>>> simple memory allocator - "claim" (an OF CI memory allocator) and updates > >>>> "/memory@0/available" to report the client about available memory. > >>>> > >>>> This implements changing some device tree properties which we know how > >>>> to deal with, the rest is ignored. To allow changes, this skips > >>>> fdt_pack() when x-vof=on as not packing the blob leaves some room for > >>>> appending. > >>>> > >>>> In absence of SLOF, this assigns phandles to device tree nodes to make > >>>> device tree traversing work. > >>>> > >>>> When x-vof=on, this adds "/chosen" every time QEMU (re)builds a tree. > >>>> > >>>> This adds basic instances support which are managed by a hash map > >>>> ihandle -> [phandle]. > >>>> > >>>> Before the guest started, the used memory is: > >>>> 0..4000 - the initial firmware > >>>> 10000..180000 - stack > >>>> > >>>> This OF CI does not implement "interpret". > >>>> > >>>> With this basic support, this can only boot into kernel directly. > >>>> However this is just enough for the petitboot kernel and initradmdisk to > >>>> boot from any possible source. Note this requires reasonably recent guest > >>>> kernel with: > >>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=df5be5be8735 > >>>> > >>>> Signed-off-by: Alexey Kardashevskiy <a...@ozlabs.ru> > >>>> --- > >>>> > > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature