On 03/04/20 10:52, Ard Biesheuvel wrote: > Introduce the QemuLoadImageLib library class that we will instantiate > to load the kernel image passed via the QEMU command line using the > standard LoadImage boot service. > > Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2566 > Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> > Reviewed-by: Laszlo Ersek <ler...@redhat.com> > --- > OvmfPkg/Include/Library/QemuLoadImageLib.h | 84 ++++++++++++++++++++ > OvmfPkg/OvmfPkg.dec | 5 ++ > 2 files changed, 89 insertions(+) > > diff --git a/OvmfPkg/Include/Library/QemuLoadImageLib.h > b/OvmfPkg/Include/Library/QemuLoadImageLib.h > new file mode 100644 > index 000000000000..694905a6421b > --- /dev/null > +++ b/OvmfPkg/Include/Library/QemuLoadImageLib.h > @@ -0,0 +1,84 @@ > +/** @file > + Load a kernel image and command line passed to QEMU via > + the command line > + > + Copyright (C) 2020, Arm, Limited. > + > + SPDX-License-Identifier: BSD-2-Clause-Patent > +**/ > + > +#ifndef QEMU_LOAD_IMAGE_LIB_H__ > +#define QEMU_LOAD_IMAGE_LIB_H__ > + > +#include <Uefi/UefiBaseType.h> > +#include <Base.h> > + > +#include <Protocol/LoadedImage.h> > + > +/** > + Download the kernel, the initial ramdisk, and the kernel command line from > + QEMU's fw_cfg. The kernel will be instructed via its command line to load > + the initrd from the same Simple FileSystem where the kernel was loaded > from. > + > + @param[out] ImageHandle The image handle that was allocated for > + loading the image > + > + @retval EFI_SUCCESS The image was loaded successfully. > + @retval EFI_NOT_FOUND Kernel image was not found. > + @retval EFI_OUT_OF_RESOURCES Memory allocation failed. > + @retval EFI_PROTOCOL_ERROR Unterminated kernel command line. > + @retval EFI_ACCESS_DENIED The underlying LoadImage boot service call > + returned EFI_SECURITY_VIOLATION, and the > image > + was unloaded again. > + > + @return Error codes from any of the underlying > + functions. > +**/ > +EFI_STATUS > +EFIAPI > +QemuLoadKernelImage ( > + OUT EFI_HANDLE *ImageHandle > + ); > + > +/** > + Transfer control to a kernel image loaded with QemuLoadKernelImage () > + > + @param[in,out] ImageHandle Handle of image to be started. May assume a > + different value on return if the image was > + reloaded. > + > + @retval EFI_INVALID_PARAMETER ImageHandle is either an invalid image > handle > + or the image has already been initialized > with > + StartImage > + @retval EFI_SECURITY_VIOLATION The current platform policy specifies that > the > + image should not be started. > + > + @return Error codes returned by the started image. > + On success, the function doesn't return. > +**/ > +EFI_STATUS > +EFIAPI > +QemuStartKernelImage ( > + IN OUT EFI_HANDLE *ImageHandle > + ); > + > +/** > + Unloads an image loaded with QemuLoadKernelImage (). > + > + @param ImageHandle Handle that identifies the image to be > + unloaded. > + > + @retval EFI_SUCCESS The image has been unloaded. > + @retval EFI_UNSUPPORTED The image has been started, and does not > + support unload. > + @retval EFI_INVALID_PARAMETER ImageHandle is not a valid image handle. > + > + @return Exit code from the image’s unload function.
(1) The above apostrophe (in the "image’s" expression) is U+2019 ("RIGHT SINGLE QUOTATION MARK"). Please replace it with a normal ASCII 0x27 character (U+0027, "APOSTROPHE") when you push the series. Thanks Laszlo > +**/ > +EFI_STATUS > +EFIAPI > +QemuUnloadKernelImage ( > + IN EFI_HANDLE ImageHandle > + ); > + > +#endif > diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec > index a21b279d140a..055caaa43041 100644 > --- a/OvmfPkg/OvmfPkg.dec > +++ b/OvmfPkg/OvmfPkg.dec > @@ -58,6 +58,11 @@ [LibraryClasses] > # > QemuBootOrderLib|Include/Library/QemuBootOrderLib.h > > + ## @libraryclass Load a kernel image and command line passed to QEMU via > + # the command line > + # > + QemuLoadImageLib|Include/Library/QemuLoadImageLib.h > + > ## @libraryclass Serialize (and deserialize) variables > # > SerializeVariablesLib|Include/Library/SerializeVariablesLib.h > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55487): https://edk2.groups.io/g/devel/message/55487 Mute This Topic: https://groups.io/mt/71722796/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-