[ipxe-devel] [RFC PATCH 0/8] support Hyper-V net device in QEMU
Roman Kagan
rkagan at virtuozzo.com
Tue Aug 14 12:54:03 UTC 2018
On Mon, Jun 11, 2018 at 08:28:15PM +0300, Roman Kagan wrote:
> This is an RFC series to add support for Hyper-V/VMBus network devices
> emulated in QEMU [1] to iPXE.
>
> iPXE already has a driver for this device as implemented by the real
> Hyper-V; this series builds on top of it to add full-fledged network
> boot ability to its incarnation in QEMU.
>
> The design goals in this implementation are:
>
> 1) support both BIOS (SeaBIOS [2]) and UEFI (OVMF [3])
>
> In OVMF, the VMBus EFI protocol was created and exposed for iPXE to
> use; the VMBus interface in iPXE is abstracted out such that the UEFI
> version uses the platform protocol while the BIOS one uses iPXE's own
> vmbus driver.
>
> 2) allow building and shipping separately from the main firmware
>
> For that, iPXE is built as (almost) regular (possibly multi-image)
> option ROM and propagated into the firmware via fw_cfg interface.
> For BIOS the ROM uses slightly modified PnP header convention to
> better integrate with boot order machinery
>
> 3) support QEMU bootorder mechanism
>
> This is fully supported in UEFI case. In BIOS, iPXE takes over the
> VMBus so falling through to VMBus SCSI devices becomes impossible
> (later we may consider re-acquisition of the VMBus by the BIOS).
>
> These patches are maintained in a git repo at
> https://src.openvz.org/scm/up/ipxe.
>
> Comments and advices are very welcome.
>
> [1] The git tree containing the necessary QEMU changes can be found at
> https://src.openvz.org/scm/up/qemu; I'm working on upstreaming them.
> [2] https://src.openvz.org/scm/up/seabios (upstreaming planned once QEMU
> changes settle)
> [3] https://src.openvz.org/scm/up/edk2 (upstreaming planned once QEMU
> changes settle)
>
> Roman Kagan (8):
> add Hyper-V rom type
> vmbus: encapsulate obsolete gpadl handling
> vmbus: drop vmbus_has_data
> hyperv: recognize OVMF's guest OS id
> vmbus: factor out API to be shared with UEFI driver
> efi: import HypervVmbusDevice header from edk2
> efi: export HypervVmbusDevice protocol GUID
> efi_vmbus: add driver for VMBus devices for OVMF
>
> src/arch/x86/Makefile.pcbios | 4 +
> src/drivers/net/netvsc.h | 15 -
> .../ipxe/efi/Protocol/HypervVmbusDevice.h | 168 +++++
> src/include/ipxe/efi/efi.h | 1 +
> src/include/ipxe/errfile.h | 1 +
> src/include/ipxe/hyperv.h | 4 +
> src/include/ipxe/vmbus.h | 241 +------
> src/include/ipxe/vmbus_device.h | 291 +++++++++
> src/arch/x86/core/vmbus_autoboot.c | 47 ++
> src/arch/x86/drivers/hyperv/hyperv.c | 3 +-
> src/drivers/net/netvsc.c | 22 +-
> src/interface/efi/efi_guid.c | 5 +
> src/interface/efi/efi_vmbus.c | 600 ++++++++++++++++++
> src/interface/hyperv/vmbus.c | 313 +++++----
> src/arch/x86/prefix/hvromprefix.S | 29 +
> src/arch/x86/prefix/romprefix.S | 41 ++
> 16 files changed, 1390 insertions(+), 395 deletions(-)
> create mode 100644 src/include/ipxe/efi/Protocol/HypervVmbusDevice.h
> create mode 100644 src/include/ipxe/vmbus_device.h
> create mode 100644 src/arch/x86/core/vmbus_autoboot.c
> create mode 100644 src/interface/efi/efi_vmbus.c
> create mode 100644 src/arch/x86/prefix/hvromprefix.S
I'm still interested in hearing your opinion on whether the design is
not totally bogus...
Thanks,
Roman.
More information about the ipxe-devel
mailing list