On Wed, Nov 03, 2021 at 03:10:16PM -0500, Brijesh Singh wrote:
Looking at the secondary CPU bring up path it seems that we will not be
getting #VC until the early_setup_idt() is called. I am thinking to add
function to register the GHCB from the early_setup_idt()
early_setup_idt()
{
...
if (IS_ENABLED(CONFIG_MEM_ENCRYPT))
sev_snp_register_ghcb()
...
}
The above will cover the APs
That will cover the APs during early boot as that is being called from
asm.
and for BSP case I can call the same function just after the final IDT
is loaded
Why after and not before?
cpu_init_exception_handling()
{
...
...
/* Finally load the IDT */
load_current_idt();
if (IS_ENABLED(CONFIG_MEM_ENCRYPT))
sev_snp_register_ghcb()
}
That is also called on the APs - not only the BSP. trap_init() calls it
from start_kernel() which is the BSP and cpu_init_secondary() calls it
too, which is ofc the APs.
I guess that should be ok since you're calling the same function from
both but WTH do I know...