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]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to