[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [RFC PATCH v2 00/16] Load BIOS via toolstack instead of been embedded in hvmloader.

On Mon, 2015-10-26 at 16:03 +0000, Anthony PERARD wrote:
> Hi all,
> I've start to look at loading the BIOS and the ACPI tables via the
> toolstack instead of having them embedded in the hvmloader binary. After
> this patch series, hvmloader compilation would be indenpendant from
> and OVMF compilation.
> Compare to the V1, this is now done via the struct hvm_start_info from
> Roger's patch series "Introduce HVM without dm and new boot ABI".

Just to be clear, does this therefore requires the rest of (or some more
of) Roger's series to be applied or just the initial dozen patches which
are already in?

> Here is a general view of the few step to load the BIOS:
> - libxl load the BIOS blob into it's memory and add it to struct
> Â xc_hvm_build_args.bios_module
> - libxc load the blob into the guest memory and fill the struct
> Â hvm_start_info, with a cmdline which would contain the order in which the
> Â modules (bios, acpi_table) are loaded into the modlist.
> - hvmloader read the addresses from the hvm_start_info, find out which
> Â module are which by reading the cmdline and copy the blob to the right
> Â place.

Hrm, it's a shame that the mod list doesn't contain this information,
laundering it via a string cmdline seems a bit sub optimal. I haven't
looked yet but my intuition is that this will involve hvmloader doing some
string parsing, which I'm not keen on.

Is the modlist a stable API (yet?) or can we extend it if we want?

Failing that perhaps hvmloader and libx? could collude such that the first
module is always some data structure (a private interface between hvmloader
and the tools) which describes the contents of the remaining modules?

> Right now, this patch series would only work for SeaBIOS and OVMF. I have
> not look into what to do about qemu-xen-traditionnal and rombios.

FWIW I think it would be fine to leave those legacy components using the
existing mechanisms. No one in their right mind is going to want to use a
system supplied version of rambios... Or if they do then I think it is up
to them to patch it. (Unless actually doing this makes your life easier
somehow WRT your actual goal)

> A git tree can be found here:
> git://xenbits.xen.org/people/aperard/xen-unstable.git
> tag: hvmloader-with-separated-bios-v2
> Regards,
> Anthony PERARD (16):
> Â hvmloader: Fix scratch_alloc to avoid overlaps
> Â libxc: Load BIOS and ACPI table into guest memory
> Â configure: #define SEABIOS_PATH and OVMF_PATH
> Â firmware/makefile: install BIOS and ACPI blob ...
> Â libxl: Load guest BIOS from file
> Â libxl: Load guest ACPI table from file
> Â hvmloader: Grab the hvmlite info page and parse the cmdline
> Â hvmloader: Locate the BIOS blob
> Â hvmloader: Load SeaBIOS from hvm_start_info modules ...
> Â hvmloader: Load OVMF from modules
> Â hvmloader: No BIOS ROM image allowed to be compiled in
> Â hvmloader: Load ACPI tables from hvm_start_info module
> Â hvmloader/makefile: Compile out SeaBIOS and OVMF ROM blob
> Â hvmloader: Always build-in SeaBIOS and OVMF loader
> Â hvmloader: Compile out the qemu-xen ACPI tables
> Â hvmloader: do not depend on SEABIOS_PATH or OVMF_PATH ...
> Âtools/configure.acÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ|ÂÂ12 +++-
> Âtools/firmware/MakefileÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ|ÂÂ15 ++--
> Âtools/firmware/hvmloader/MakefileÂÂÂÂÂÂ|ÂÂ32 ---------
> Âtools/firmware/hvmloader/acpi/Makefile |ÂÂÂ8 ++-
> Âtools/firmware/hvmloader/config.hÂÂÂÂÂÂ|ÂÂ11 +--
> Âtools/firmware/hvmloader/hvmloader.cÂÂÂ| 127
> ++++++++++++++++++++++++++++-----
> Âtools/firmware/hvmloader/ovmf.cÂÂÂÂÂÂÂÂ|ÂÂ34 ++++-----
> Âtools/firmware/hvmloader/seabios.cÂÂÂÂÂ|ÂÂ33 ++++-----
> Âtools/firmware/hvmloader/util.cÂÂÂÂÂÂÂÂ|ÂÂÂ2 +-
> Âtools/libxc/include/xc_dom.hÂÂÂÂÂÂÂÂÂÂÂ|ÂÂÂ4 ++
> Âtools/libxc/xc_dom_hvmloader.cÂÂÂÂÂÂÂÂÂ|ÂÂ44 +++++++++---
> Âtools/libxc/xc_dom_x86.cÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ|ÂÂ90 +++++++++++++++++++++++
> Âtools/libxl/libxl_dom.cÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ|ÂÂ83 +++++++++++++++++++++
> Âtools/libxl/libxl_types.idlÂÂÂÂÂÂÂÂÂÂÂÂ|ÂÂÂ2 +
> Âtools/libxl/xl_cmdimpl.cÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ|ÂÂ14 +++-
> Â16 files changed, 394 insertions(+), 118 deletions(-)

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.