85c2576 OvmfPkg: control PXEv4 / PXEv6 boot support from the QEMU command line

Authored and Committed by lersek 4 years ago
    OvmfPkg: control PXEv4 / PXEv6 boot support from the QEMU command line
    
    Add a minimal, NULL class library called "PxeBcPcdProducerLib" for setting
    the "PcdIPv4PXESupport" and "PcdIPv6PXESupport" PCDs of NetworkPkg, from
    fw_cfg.
    
    These PCDs control whether the UefiPxeBcDxe driver supports PXEv4 / PXEv6
    boot. If a PXE version is disabled, the corresponding LoadFile protocol
    instance is not produced by UefiPxeBcDxe, and so
    EfiBootManagerRefreshAllBootOption() in UefiBootManagerLib does not
    generate corresponding *new* boot options either. (Existent boot options
    are not deleted.)
    
    Hook the library into the UefiPxeBcDxe driver. (The driver is already
    included from "NetworkComponents.dsc.inc", but we can list it again in the
    DSC file, for providing <LibraryClasses> overrides.)
    
    In OVMF, the PCDs could be set in PlatformPei too, but ArmVirtQemu does
    not have fw_cfg access in the PEI phase. Hence a NULL class library that
    can be linked into UefiPxeBcDxe.
    
    When listing the PCDs under [PcdsDynamicDefault], stick with the DEC
    default values.
    
    QEMU switches:
    
      -fw_cfg name=opt/org.tianocore/IPv4PXESupport,string=[yn]
    
      -fw_cfg name=opt/org.tianocore/IPv6PXESupport,string=[yn]
    
    The "opt/org.tianocore" prefix follows the "opt/RFQDN/" recommendation
    from QEMU's "docs/specs/fw_cfg.txt".
    
    Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>
    Cc: Jordan Justen <jordan.l.justen@intel.com>
    Cc: Per Sundstrom <per_sundstrom@yahoo.com>
    Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
    Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2681
    Signed-off-by: Laszlo Ersek <lersek@redhat.com>
    
        
file modified
+9 -0
file modified
+10 -0
file modified
+9 -0