[PATCH] D110869: [X86] Implement -fzero-call-used-regs option
Nathan Chancellor via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 3 16:50:16 PST 2022
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
More information about the cfe-commits
mailing list