From 3d72e6bedca3e663ec0eb0bd57f63f5e2c8713c4 Mon Sep 17 00:00:00 2001 From: jianghaibo Date: Tue, 8 Jul 2025 09:33:24 +0800 Subject: [PATCH] [BOLT] Fix stuck for x86 linux kernel 5.10 The paravirtualization of kernel will update function implementation at runtime. For funtions involving paravirtualization, mark them as non-optimizable at appropriate locations. --- bolt/lib/Rewrite/LinuxKernelRewriter.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/bolt/lib/Rewrite/LinuxKernelRewriter.cpp b/bolt/lib/Rewrite/LinuxKernelRewriter.cpp index 91a10434b2b2..e5bc107c164e 100644 --- a/bolt/lib/Rewrite/LinuxKernelRewriter.cpp +++ b/bolt/lib/Rewrite/LinuxKernelRewriter.cpp @@ -337,6 +337,7 @@ class LinuxKernelRewriter final : public MetadataRewriter { /// Paravirtual instruction patch sites. Error readParaInstructions(); Error rewriteParaInstructions(); + void processParaInstructionsPostCFG(); /// __bug_table section handling. Error readBugTable(); @@ -445,6 +446,7 @@ public: if (Error E = processORCPostCFG()) return E; + processParaInstructionsPostCFG(); processAltInstructionsPostCFG(); return Error::success(); @@ -1435,10 +1437,6 @@ Error LinuxKernelRewriter::readParaInstructions() { } } - // Disable output of functions with paravirtual instructions before the - // rewrite support is complete. - skipFunctionsWithAnnotation("ParaSite"); - BC.outs() << "BOLT-INFO: parsed " << EntryID << " paravirtual patch sites\n"; return Error::success(); @@ -1461,6 +1459,12 @@ void LinuxKernelRewriter::skipFunctionsWithAnnotation( } } +void LinuxKernelRewriter::processParaInstructionsPostCFG() { + // Disable output of functions with paravirtual instructions before the + // rewrite support is complete. + skipFunctionsWithAnnotation("ParaSite"); +} + Error LinuxKernelRewriter::rewriteParaInstructions() { return Error::success(); } -- Gitee