• Michael Ellerman's avatar
    powerpc/udbg: Reduce the footgun potential of EARLY_DEBUG_LPAR(_HVSI) · 9227f043
    Michael Ellerman authored
    For debugging very early boot problems we have CONFIG_PPC_EARLY_DEBUG,
    which allows configuring the kernel such that it unconditionally writes
    to a particular type of console, regardless of whether that console
    exists or not. This is useful sometimes when the kernel crashes before
    it can even determine what platform it's on, and therefore what consoles
    exist.
    
    However if you boot a kernel built this way on a different platform, it
    will generally crash because it writes to a console that doesn't exist.
    
    A particularly nasty instance of this is if you enable the hypervisor
    console early debug, and then boot that kernel on bare metal. The result
    is that the kernel calls "the hypervisor" very early in boot, but the
    kernel *is* the hypervisor, so we jump to the system call handler and
    start executing all sorts of code that isn't ready to be run. This may
    lead to a machine check or check stop depending on how lucky you are.
    
    Luckily there is an easy way to avoid this particular case. We simply
    read the MSR before installing the hooks, and if we see MSR_HV is set
    then we are the hypervisor and we definitely should not use the
    hypervisor console.
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    9227f043
hvc_vio.c 11.4 KB