mbox series

[kvm-unit-tests,v2,00/10] x86_64 UEFI set up process refactor and scripts fixes

Message ID 20211116204053.220523-1-zxwang42@gmail.com (mailing list archive)
Headers show
Series x86_64 UEFI set up process refactor and scripts fixes | expand

Message

Zixuan Wang Nov. 16, 2021, 8:40 p.m. UTC
Hello,

This patch series refactors the x86_64 UEFI set up process, fixes the
`run-tests.sh` script to run under UEFI, and improves the boot speed
under UEFI. The patches are organized as four parts.

The first part (patches 1-3) refactors the x86_64 UEFI set up process.
The previous UEFI setup calls arch-specific setup functions twice and
generates arch-specific data structure. As Andrew suggested [1], we
refactor this process to make only one call to the arch-specific
function and generate arch-neutral data structures. This simplifies the
set up process and makes it easier to develop UEFI support for other
architectures.

The second part (patch 4) converts several x86 test cases to
position-independent code (PIC) to run under UEFI. This patch is ported
from the initial UEFI support patchset [2] with fixes to the 32-bit
compilation.

The third part (patches 5-8) fixes the UEFI runner scripts. Patch 5
sets UEFI OVMF image as read-only. Patch 6 fixes test cases' return
code under UEFI, enabling Patch 7-8 to fix the `run-tests.sh` script
under UEFI.

The fourth part (patches 9-10) improves the boot speed under UEFI.
Patch 9 renames the EFI executables to EFI/BOOT/BOOTX64.EFI. UEFI OVMF
recognizes this file by default and skips the 5-second user input
waiting. Patch 10 makes `run-tests.sh` work with this new EFI
executable filename.

This patchset is based on the `uefi` branch.

Changes since V1:
V2 Patch #  Changes
----------  -------
     03/10  (New patch from Sean) Skip SEV-ES setup if SEV is not
            available
     04/10  Add more details to the commit message
     06/10  Add UEFI shutdown in case exit() doesn't work
     07/10  Simplify variable usages in scripts
     08/10  Simplify variable usages in scripts
     09/10  (New patch) Improve UEFI boot speed
     10/10  (New patch) Update run-tests.sh

Best regards,
Zixuan Wang and Marc Orr

[1] https://lore.kernel.org/kvm/20211005060549.clar5nakynz2zecl@gator.home/
[2] https://lore.kernel.org/kvm/20211004204931.1537823-1-zxwang42@gmail.com/


Marc Orr (3):
  scripts: Generalize EFI check
  x86 UEFI: Make run_tests.sh (mostly) work under UEFI
  x86 UEFI: Make _NO_FILE_4Uhere_ work w/ BOOTX64.EFI

Sean Christopherson (1):
  x86 AMD SEV: Skip SEV-ES if SEV is unsupported

Zixuan Wang (6):
  x86 UEFI: Remove mixed_mode
  x86 UEFI: Refactor set up process
  x86 UEFI: Convert x86 test cases to PIC
  x86 UEFI: Set UEFI OVMF as readonly
  x86 UEFI: Exit QEMU with return code
  x86 UEFI: Improve Boot Speed

 lib/efi.c            |  63 +++++++--
 lib/efi.h            |  19 ++-
 lib/linux/efi.h      | 317 ++++++++++++++-----------------------------
 lib/x86/acpi.c       |  36 +++--
 lib/x86/acpi.h       |   5 +-
 lib/x86/asm/setup.h  |  16 +--
 lib/x86/setup.c      | 145 +++++++++-----------
 lib/x86/usermode.c   |   3 +-
 scripts/runtime.bash |  14 +-
 x86/Makefile.common  |  10 +-
 x86/Makefile.x86_64  |   7 +-
 x86/access.c         |   9 +-
 x86/cet.c            |   8 +-
 x86/efi/run          |  45 +++---
 x86/emulator.c       |   5 +-
 x86/eventinj.c       |   8 ++
 x86/run              |   6 +-
 x86/smap.c           |  13 +-
 x86/umip.c           |  26 +++-
 19 files changed, 361 insertions(+), 394 deletions(-)

Comments

Paolo Bonzini Jan. 18, 2022, 4:51 p.m. UTC | #1
On 11/16/21 21:40, Zixuan Wang wrote:
> Hello,
> 
> This patch series refactors the x86_64 UEFI set up process, fixes the
> `run-tests.sh` script to run under UEFI, and improves the boot speed
> under UEFI. The patches are organized as four parts.
> 
> The first part (patches 1-3) refactors the x86_64 UEFI set up process.
> The previous UEFI setup calls arch-specific setup functions twice and
> generates arch-specific data structure. As Andrew suggested [1], we
> refactor this process to make only one call to the arch-specific
> function and generate arch-neutral data structures. This simplifies the
> set up process and makes it easier to develop UEFI support for other
> architectures.
> 
> The second part (patch 4) converts several x86 test cases to
> position-independent code (PIC) to run under UEFI. This patch is ported
> from the initial UEFI support patchset [2] with fixes to the 32-bit
> compilation.
> 
> The third part (patches 5-8) fixes the UEFI runner scripts. Patch 5
> sets UEFI OVMF image as read-only. Patch 6 fixes test cases' return
> code under UEFI, enabling Patch 7-8 to fix the `run-tests.sh` script
> under UEFI.
> 
> The fourth part (patches 9-10) improves the boot speed under UEFI.
> Patch 9 renames the EFI executables to EFI/BOOT/BOOTX64.EFI. UEFI OVMF
> recognizes this file by default and skips the 5-second user input
> waiting. Patch 10 makes `run-tests.sh` work with this new EFI
> executable filename.
> 
> This patchset is based on the `uefi` branch.

Hi, I have now merged this series and the uefi branch into master.

Paolo
Marc Orr Jan. 18, 2022, 5:29 p.m. UTC | #2
On Tue, Jan 18, 2022 at 8:51 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> On 11/16/21 21:40, Zixuan Wang wrote:
> > Hello,
> >
> > This patch series refactors the x86_64 UEFI set up process, fixes the
> > `run-tests.sh` script to run under UEFI, and improves the boot speed
> > under UEFI. The patches are organized as four parts.
> >
> > The first part (patches 1-3) refactors the x86_64 UEFI set up process.
> > The previous UEFI setup calls arch-specific setup functions twice and
> > generates arch-specific data structure. As Andrew suggested [1], we
> > refactor this process to make only one call to the arch-specific
> > function and generate arch-neutral data structures. This simplifies the
> > set up process and makes it easier to develop UEFI support for other
> > architectures.
> >
> > The second part (patch 4) converts several x86 test cases to
> > position-independent code (PIC) to run under UEFI. This patch is ported
> > from the initial UEFI support patchset [2] with fixes to the 32-bit
> > compilation.
> >
> > The third part (patches 5-8) fixes the UEFI runner scripts. Patch 5
> > sets UEFI OVMF image as read-only. Patch 6 fixes test cases' return
> > code under UEFI, enabling Patch 7-8 to fix the `run-tests.sh` script
> > under UEFI.
> >
> > The fourth part (patches 9-10) improves the boot speed under UEFI.
> > Patch 9 renames the EFI executables to EFI/BOOT/BOOTX64.EFI. UEFI OVMF
> > recognizes this file by default and skips the 5-second user input
> > waiting. Patch 10 makes `run-tests.sh` work with this new EFI
> > executable filename.
> >
> > This patchset is based on the `uefi` branch.
>
> Hi, I have now merged this series and the uefi branch into master.
>
> Paolo
>

Excellent! The change to the last patch looks good to me by the way.