[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 1/2] docs: update hyperlaunch device tree
On Tue, 8 Aug 2023, Julien Grall wrote: > > + > > + role = <9>; > > Reading this, I wonder if using number is actually a good idea. While this is > machine friendly, this is not human friendly. +1 > The most human friendly interface would be to use string, but I understand > this is more complex to parse. So maybe we could use some pre-processing (like > Linux does) to ease the creation of the hyperlaunch DT. > > Bertrand, Stefano, what do you think? I think that some preprocessing (e.g. ImageBuilder) is very likely required. At the same time I think that "role" could make sense as a string and parsed as a string without issues. I am happy either way. > > + mode = <12>; > > + > > + domain-uuid = [B3 FB 98 FB 8F 9F 67 A3 8A 6E 62 5A 09 > > 13 F0 8C]; > > + > > + cpus = <1>; > > + memory = "1024M"; > > + > > + kernel { > > + compatible = "module,kernel", "module,index"; > > + module-index = <1>; > > + }; > > + > > + initrd { > > + compatible = "module,ramdisk", "module,index"; > > + module-index = <2>; > > + }; > > + }; > > + > > + dom1 { > > + compatible = "xen,domain"; > > + domid = <1>; > > + role = <0>; > > + capability = <1>; > > + mode = <12>; > > + domain-uuid = [C2 5D 91 CB 60 4B 45 75 89 04 FF 09 64 > > 54 1A 74]; > > + cpus = <1>; > > + memory = "1024M"; > > + > > + kernel { > > + compatible = "module,kernel", "module,index"; > > + module-index = <3>; > > + bootargs = "console=hvc0 earlyprintk=xen > > root=/dev/ram0 rw"; > > + }; > > + > > + initrd { > > + compatible = "module,ramdisk", "module,index"; > > + module-index = <4>; > > + }; > > + }; I think dom1 should be written as follows: dom1 { compatible = "xen,domain"; domid = <1>; role = <0>; capability = <1>; mode = <12>; domain-uuid = [C2 5D 91 CB 60 4B 45 75 89 04 FF 09 64 cpus = <1>; memory = <0 1048576>; kernel { compatible = "multiboot,kernel" "multiboot,module"; module-index = <3>; bootargs = "console=hvc0 earlyprintk=xen0 rw"; }; initrd { compatible = "multiboot,ramdisk" "multiboot,module" module-index = <4>; }; }; > > + }; > > + }; > > + }; > > + > > + > > + > > +The multiboot modules supplied when using the above config would be, in > > order: > > + > > +* (the above config, compiled) > > +* kernel for PVH unbounded domain > > +* ramdisk for PVH unbounded domain > > +* kernel for PVH guest domain > > +* ramdisk for PVH guest domain > > + > > +Module Arm Configuration: > > +""""""""""""""""""""""""" > > + > > +:: > > + > > + /dts-v1/; > > + > > + / { > > + chosen { > > + hypervisor { > > + compatible = “hypervisor,xen” > > + > > + // Configuration container > > + config { > > + compatible = "xen,config"; > > + > > + module { > > + compatible = "module,xsm-policy"; > > + module-addr = <0x0000ff00 0x80>; > > + > > + }; > > + }; > > + > > + // Unbounded Domain definition > > + dom0 { > > + compatible = "xen,domain"; > > + > > + domid = <0>; > > + > > + role = <9>; > > + > > + mode = <12>; /* 64 BIT, PVH */ > > Arm guest have similar feature compare to PVH guest but they are strictly not > the same. So we have been trying to avoid using the term on Arm. > > I would prefer if we continue to avoid using the word 'PVH' to describe Arm. > Lets just call them 'Arm guest'. > > > + > > + memory = <0x0 0x20000>; > > Here you use the integer version, but AFAICT this wasn't described in the > binding above. > > > + security-id = “dom0_t”; > > + > > + module { > > + compatible = "module,kernel"; > > + module-addr = <0x0000ff00 0x80>; > > Reading the binding, this is suggest that the first cell is the start address > and the second is the size. Cells are 32-bits. So what if you have a 64-bit > address? > > For 'reg' property, the DT addressed this by using #address-cells and > #size-cells to indicate the number of cells for each. I would not deviate from the dom0less spec on this one, which uses reg for modules addresses and sizes. > > + bootargs = "console=hvc0"; > > + }; > > + module { > > + compatible = "module,ramdisk"; > > + module-addr = <0x0000ff00 0x80>; > > + }; > > + }; > > + }; > > + }; > > + }; > > + > > +The modules that would be supplied when using the above config would be: > > + > > +* (the above config, compiled into hardware tree) > > +* XSM policy > > +* kernel for unbounded domain > > +* ramdisk for unbounded domain > > +* kernel for guest domain > > +* ramdisk for guest domain > > + > > +The hypervisor device tree would be compiled into the hardware device tree > > and > > +provided to Xen using the standard method currently in use. > > It is not clear what you mean by 'compiled in'. Do you mean the /hypervisor > node will be present in the device-tree provided to Xen? That is the way I read it as well. I think this statement is unnecessary as we assume there is only 1 device tree passed to Xen, so this specification would cover the relevant part of it. > > The remaining > > +modules would need to be loaded in the respective addresses specified in > > the > > +`module-addr` property. > > Cheers, > > -- > Julien Grall >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |