Same for TDX, I did not run it but it should cause failure as debugShowPostCode is called OvmfPkg/ResetVector/Ia32/IntelTdx.asm before actually the #VE handlers are installed.
-Erdem On Wed, Jan 24, 2024 at 11:55 AM Tom Lendacky <thomas.lenda...@amd.com> wrote: > On 1/24/24 13:24, Tom Lendacky wrote: > > On 1/24/24 10:47, Laszlo Ersek wrote: > >> On 1/24/24 16:31, Gerd Hoffmann wrote: > >>> Neat when doing ResetVector coding. > >>> > >>> Signed-off-by: Gerd Hoffmann <kra...@redhat.com> > >>> --- > >>> OvmfPkg/ResetVector/DebugCon.asm | 43 > +++++++++++++++++++++++++++ > >>> OvmfPkg/ResetVector/ResetVector.nasmb | 2 +- > >>> 2 files changed, 44 insertions(+), 1 deletion(-) > >>> create mode 100644 OvmfPkg/ResetVector/DebugCon.asm > >>> > >>> diff --git a/OvmfPkg/ResetVector/DebugCon.asm > >>> b/OvmfPkg/ResetVector/DebugCon.asm > >>> new file mode 100644 > >>> index 000000000000..9c57d1a52c75 > >>> --- /dev/null > >>> +++ b/OvmfPkg/ResetVector/DebugCon.asm > >>> @@ -0,0 +1,43 @@ > >>> > +;------------------------------------------------------------------------------ > >>> +; @file > >>> +; qemu debug console support macros (based on serial port macros) > >>> +; > >>> +; Copyright (c) 2008 - 2018, Intel Corporation. All rights > reserved.<BR> > >>> +; SPDX-License-Identifier: BSD-2-Clause-Patent > >>> +; > >>> > +;------------------------------------------------------------------------------ > >>> + > >>> +%macro outToDebugPort 1 > >>> + mov dx, 0x402 > >>> + mov al, %1 > >>> + out dx, al > >>> +%endmacro > >>> + > >>> +%macro debugShowCharacter 1 > >>> + outToDebugPort %1 > >>> +%endmacro > >>> + > >>> +%macro debugShowHexDigit 1 > >>> + %if (%1 < 0xa) > >>> + debugShowCharacter BYTE ('0' + (%1)) > >>> + %else > >>> + debugShowCharacter BYTE ('a' + ((%1) - 0xa)) > >>> + %endif > >>> +%endmacro > >>> + > >>> +%macro debugNewline 0 > >>> + debugShowCharacter `\r` > >>> + debugShowCharacter `\n` > >>> +%endmacro > >>> + > >>> +%macro debugShowPostCode 1 > >>> + debugShowHexDigit (((%1) >> 4) & 0xf) > >>> + debugShowHexDigit ((%1) & 0xf) > >>> + debugNewline > >>> +%endmacro > >>> + > >>> +BITS 16 > >>> + > >>> +%macro debugInitialize 0 > >>> + ; not required > >>> +%endmacro > >>> diff --git a/OvmfPkg/ResetVector/ResetVector.nasmb > >>> b/OvmfPkg/ResetVector/ResetVector.nasmb > >>> index 5832aaa8abf7..f1655ddfcde3 100644 > >>> --- a/OvmfPkg/ResetVector/ResetVector.nasmb > >>> +++ b/OvmfPkg/ResetVector/ResetVector.nasmb > >>> @@ -41,7 +41,7 @@ > >>> %elifdef DEBUG_SERIAL > >>> %include "SerialDebug.asm" > >>> %else > >>> - %include "DebugDisabled.asm" > >>> + %include "DebugCon.asm" > >>> %endif > >>> %include "Ia32/SearchForBfvBase.asm" > >> > >> (1) How much output does this produce? Trapping to QEMU for every single > >> character written to the debug console is very slow. If it only produces > >> a few bytes, that should be OK. > >> > >> (2) debugInitialize could actually be put to use; the presence of the > >> QEMU debug console is detectable. We'd need to allocate a single byte > >> somewhere, detect the console in debugInitialize, save the result in > >> that byte, then check the byte in debugShowPostCode. Eliminates even > >> those few (?) traps if there is no debug console configured. > >> > >> (3) I'm already hating myself for asking about this, but... is there a > >> way for only customizing debugInitialize and debugShowCharacter? The > >> rest is common with "SerialDebug.asm", and I wish I hadn't had to review > >> those (unchanged) macros, they make my eyes bleed :/ > >> > >> Anyway, if you think any of these (or all of these!) means too much > >> work, I'm OK with the patch going-in as is. > > > > My concern would be around SEV-ES/SEV-SNP guest usage. The in and out > > instruction will generate a #VC and would require a #VC handler to be in > > place. > > > > I'm pretty sure this will cause issues for those types of guests, but it > > might be a few days before I can get to it to verify. @Gerd, were you > able > > to test this with those types of guests? > > Had a meeting get canceled and so got a chance to test this. As I thought, > this causes SEV-ES/SEV-SNP guest failures. > > Thanks, > Tom > > > > > Thanks, > > Tom > > > >> > >> I'm a bit concerned about (1), TBH. > >> > >> Laszlo > >> > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#114361): https://edk2.groups.io/g/devel/message/114361 Mute This Topic: https://groups.io/mt/103933942/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-