From: Juergen Gross <jgross@suse.com> To: linux-kernel@vger.kernel.org, x86@kernel.org, virtualization@lists.linux-foundation.org, kvm@vger.kernel.org Cc: Juergen Gross <jgross@suse.com>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>, "H. Peter Anvin" <hpa@zytor.com>, Ajay Kaher <akaher@vmware.com>, Alexey Makhalov <amakhalov@vmware.com>, VMware PV-Drivers Reviewers <pv-drivers@vmware.com>, Paolo Bonzini <pbonzini@redhat.com>, Wanpeng Li <wanpengli@tencent.com>, Vitaly Kuznetsov <vkuznets@redhat.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, xen-devel@lists.xenproject.org Subject: [PATCH v3 0/5] x86/paravirt: Get rid of paravirt patching Date: Thu, 19 Oct 2023 11:15:15 +0200 [thread overview] Message-ID: <20231019091520.14540-1-jgross@suse.com> (raw) This is a small series getting rid of paravirt patching by switching completely to alternative patching for the same functionality. The basic idea is to add the capability to switch from indirect to direct calls via a special alternative patching option. This removes _some_ of the paravirt macro maze, but most of it needs to stay due to the need of hiding the call instructions from the compiler in order to avoid needless register save/restore. What is going away is the nasty stacking of alternative and paravirt patching and (of course) the special .parainstructions linker section. I have tested the series on bare metal and as Xen PV domain to still work. Note that objtool might need some changes to cope with the new indirect call patching mechanism. Additionally some paravirt handling can probably be removed from it. Changes in V3: - split v2 patch 3 into 2 patches as requested by Peter and Ingo Changes in V2: - split last patch into 2 - rebase of patch 2 as suggested by Peter - addressed Peter's comments for patch 3 Juergen Gross (5): x86/paravirt: move some functions and defines to alternative x86/alternative: add indirect call patching x86/paravirt: introduce ALT_NOT_XEN x86/paravirt: switch mixed paravirt/alternative calls to alternative_2 x86/paravirt: remove no longer needed paravirt patching code arch/x86/include/asm/alternative.h | 26 ++++- arch/x86/include/asm/paravirt.h | 79 +++++---------- arch/x86/include/asm/paravirt_types.h | 73 +++----------- arch/x86/include/asm/qspinlock_paravirt.h | 4 +- arch/x86/include/asm/text-patching.h | 12 --- arch/x86/kernel/alternative.c | 116 ++++++++++------------ arch/x86/kernel/callthunks.c | 17 ++-- arch/x86/kernel/kvm.c | 4 +- arch/x86/kernel/module.c | 20 +--- arch/x86/kernel/paravirt.c | 54 ++-------- arch/x86/kernel/vmlinux.lds.S | 13 --- arch/x86/tools/relocs.c | 2 +- arch/x86/xen/irq.c | 2 +- 13 files changed, 137 insertions(+), 285 deletions(-) -- 2.35.3
WARNING: multiple messages have this Message-ID (diff)
From: Juergen Gross via Virtualization <virtualization@lists.linux-foundation.org> To: linux-kernel@vger.kernel.org, x86@kernel.org, virtualization@lists.linux-foundation.org, kvm@vger.kernel.org Cc: Juergen Gross <jgross@suse.com>, Wanpeng Li <wanpengli@tencent.com>, Alexey Makhalov <amakhalov@vmware.com>, xen-devel@lists.xenproject.org, VMware PV-Drivers Reviewers <pv-drivers@vmware.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Dave Hansen <dave.hansen@linux.intel.com>, Ajay Kaher <akaher@vmware.com>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>, Paolo Bonzini <pbonzini@redhat.com>, Thomas Gleixner <tglx@linutronix.de> Subject: [PATCH v3 0/5] x86/paravirt: Get rid of paravirt patching Date: Thu, 19 Oct 2023 11:15:15 +0200 [thread overview] Message-ID: <20231019091520.14540-1-jgross@suse.com> (raw) This is a small series getting rid of paravirt patching by switching completely to alternative patching for the same functionality. The basic idea is to add the capability to switch from indirect to direct calls via a special alternative patching option. This removes _some_ of the paravirt macro maze, but most of it needs to stay due to the need of hiding the call instructions from the compiler in order to avoid needless register save/restore. What is going away is the nasty stacking of alternative and paravirt patching and (of course) the special .parainstructions linker section. I have tested the series on bare metal and as Xen PV domain to still work. Note that objtool might need some changes to cope with the new indirect call patching mechanism. Additionally some paravirt handling can probably be removed from it. Changes in V3: - split v2 patch 3 into 2 patches as requested by Peter and Ingo Changes in V2: - split last patch into 2 - rebase of patch 2 as suggested by Peter - addressed Peter's comments for patch 3 Juergen Gross (5): x86/paravirt: move some functions and defines to alternative x86/alternative: add indirect call patching x86/paravirt: introduce ALT_NOT_XEN x86/paravirt: switch mixed paravirt/alternative calls to alternative_2 x86/paravirt: remove no longer needed paravirt patching code arch/x86/include/asm/alternative.h | 26 ++++- arch/x86/include/asm/paravirt.h | 79 +++++---------- arch/x86/include/asm/paravirt_types.h | 73 +++----------- arch/x86/include/asm/qspinlock_paravirt.h | 4 +- arch/x86/include/asm/text-patching.h | 12 --- arch/x86/kernel/alternative.c | 116 ++++++++++------------ arch/x86/kernel/callthunks.c | 17 ++-- arch/x86/kernel/kvm.c | 4 +- arch/x86/kernel/module.c | 20 +--- arch/x86/kernel/paravirt.c | 54 ++-------- arch/x86/kernel/vmlinux.lds.S | 13 --- arch/x86/tools/relocs.c | 2 +- arch/x86/xen/irq.c | 2 +- 13 files changed, 137 insertions(+), 285 deletions(-) -- 2.35.3 _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next reply other threads:[~2023-10-19 9:15 UTC|newest] Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-10-19 9:15 Juergen Gross [this message] 2023-10-19 9:15 ` [PATCH v3 0/5] x86/paravirt: Get rid of paravirt patching Juergen Gross via Virtualization 2023-10-19 9:15 ` [PATCH v3 1/5] x86/paravirt: move some functions and defines to alternative Juergen Gross 2023-10-19 9:15 ` Juergen Gross via Virtualization 2023-10-19 11:33 ` kernel test robot 2023-10-19 11:33 ` kernel test robot 2023-10-25 10:34 ` Borislav Petkov 2023-10-25 10:34 ` Borislav Petkov 2023-10-25 13:31 ` Juergen Gross 2023-10-25 13:31 ` Juergen Gross via Virtualization 2023-10-25 13:44 ` Borislav Petkov 2023-10-25 13:44 ` Borislav Petkov 2023-10-25 13:57 ` Juergen Gross 2023-10-25 13:57 ` Juergen Gross via Virtualization 2023-10-30 12:39 ` Juergen Gross 2023-10-30 12:39 ` Juergen Gross via Virtualization 2023-10-19 9:15 ` [PATCH v3 2/5] x86/alternative: add indirect call patching Juergen Gross 2023-10-19 9:15 ` [PATCH v3 3/5] x86/paravirt: introduce ALT_NOT_XEN Juergen Gross 2023-10-19 9:15 ` Juergen Gross via Virtualization 2023-10-19 9:15 ` [PATCH v3 4/5] x86/paravirt: switch mixed paravirt/alternative calls to alternative_2 Juergen Gross 2023-10-19 9:15 ` Juergen Gross via Virtualization 2023-10-19 11:55 ` kernel test robot 2023-10-19 11:55 ` kernel test robot 2023-10-26 2:44 ` kernel test robot 2023-10-26 6:33 ` Juergen Gross 2023-10-26 6:33 ` Juergen Gross via Virtualization 2023-10-26 9:02 ` kernel test robot 2023-10-26 9:02 ` kernel test robot 2023-10-19 9:15 ` [PATCH v3 5/5] x86/paravirt: remove no longer needed paravirt patching code Juergen Gross 2023-10-19 9:15 ` Juergen Gross via Virtualization 2023-10-19 12:06 ` kernel test robot 2023-10-19 12:06 ` kernel test robot
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20231019091520.14540-1-jgross@suse.com \ --to=jgross@suse.com \ --cc=akaher@vmware.com \ --cc=amakhalov@vmware.com \ --cc=boris.ostrovsky@oracle.com \ --cc=bp@alien8.de \ --cc=dave.hansen@linux.intel.com \ --cc=hpa@zytor.com \ --cc=kvm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@redhat.com \ --cc=pbonzini@redhat.com \ --cc=pv-drivers@vmware.com \ --cc=tglx@linutronix.de \ --cc=virtualization@lists.linux-foundation.org \ --cc=vkuznets@redhat.com \ --cc=wanpengli@tencent.com \ --cc=x86@kernel.org \ --cc=xen-devel@lists.xenproject.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.