Hello,

My recent boot pagetable changes have caused me to work with the EFI
build of Xen rather more than previously.

First, there is a dependency tracking bug in the build system.  Edits to
xen/arch/x86/efi/efi-boot.h don't cause xen.efi to be regenerated.  From
what I can tell, the file doesn't even get recompiled, because syntax
errors even go unnoticed.

Second, and the main point of the email.

The EFI code has some logic which does:

if ( !base_video )
{
    ...

    if ( best != StdOut->Mode->Mode )
        StdOut->SetMode(StdOut, best);
}

just before printing out the Xen banner.  This has a side effect of
causing all further use of StdOut/StdErr to cease working, and
interfering completely with debugging activities.  (Waiting for a
keypress on StdIn however does work, which is how I eventually diagnosed
that it was an output problem.)  Skipping this logic allows debugging to
work.

The code appeared in bf6501a62 "x86-64: EFI boot code" and has no
specific description of what it is doing and/or trying to achieve.

It is also not entirely clear why it is gated on having a cfg file in
the first place (c/s ,c38cf865ec8, not that there is adequate context
for why) or why there is a Xen command line argument "-basevideo"
introduced in the beginning to skip this behaviour.

As a point of reference, I don't see Linux making any SetMode calls.

What is the purpose of changing to a different mode?  Certainly as far
as serial consoles go, sticking with the mode the loader uses certainly
feels like a safer option.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to