nathanchance added a comment.
It looks like `_paravirt_ident_64()` is the problematic function. This diff on
top of v5.17-rc2 allows me to boot:
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index 4420499f7bb4..c1b68504136c 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -96,7 +96,7 @@ static unsigned paravirt_patch_call(void *insn_buff, const
void *target,
#ifdef CONFIG_PARAVIRT_XXL
/* identity function, which can be inlined */
-u64 notrace _paravirt_ident_64(u64 x)
+u64 notrace __attribute__((zero_call_used_regs("skip")))
_paravirt_ident_64(u64 x)
{
return x;
}
Rather interesting function to have problems with as a result of this patch but
it seems like this function is being used in a very specific way further down
the file with the `__PV_IS_CALLEE_SAVE` macro.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110869/new/
https://reviews.llvm.org/D110869
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits