From: Juergen Gross <jgross@suse.com> To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, x86@kernel.org, virtualization@lists.linux-foundation.org, linux-hyperv@vger.kernel.org, kvm@vger.kernel.org, clang-built-linux@googlegroups.com Cc: Juergen Gross <jgross@suse.com>, Peter Zijlstra <peterz@infradead.org>, Josh Poimboeuf <jpoimboe@redhat.com>, Jason Baron <jbaron@akamai.com>, Steven Rostedt <rostedt@goodmis.org>, Ard Biesheuvel <ardb@kernel.org>, Thomas Gleixner <tglx@linutronix.de>, Mel Gorman <mgorman@suse.de>, Ingo Molnar <mingo@redhat.com>, Michal Hocko <mhocko@kernel.org>, "Paul E . McKenney" <paulmck@kernel.org>, Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Stefano Stabellini <sstabellini@kernel.org>, Andy Lutomirski <luto@kernel.org>, Deep Shah <sdeep@vmware.com>, "VMware, Inc." <pv-drivers@vmware.com>, "K. Y. Srinivasan" <kys@microsoft.com>, Haiyang Zhang <haiyangz@microsoft.com>, Stephen Hemminger <sthemmin@microsoft.com>, Wei Liu <wei.liu@kernel.org>, Paolo Bonzini <pbonzini@redhat.com>, Sean Christopherson <seanjc@google.com>, Vitaly Kuznetsov <vkuznets@redhat.com>, Wanpeng Li <wanpengli@tencent.com>, Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>, Daniel Lezcano <daniel.lezcano@linaro.org>, Nathan Chancellor <natechancellor@gmail.com>, Nick Desaulniers <ndesaulniers@google.com> Subject: [PATCH v4 00/15] x86: major paravirt cleanup Date: Wed, 20 Jan 2021 14:55:40 +0100 [thread overview] Message-ID: <20210120135555.32594-1-jgross@suse.com> (raw) [Resend due to all the Cc:'s missing] This is a major cleanup of the paravirt infrastructure aiming at eliminating all custom code patching via paravirt patching. This is achieved by using ALTERNATIVE instead, leading to the ability to give objtool access to the patched in instructions. In order to remove most of the 32-bit special handling from pvops the time related operations are switched to use static_call() instead. At the end of this series all paravirt patching has to do is to replace indirect calls with direct ones. In a further step this could be switched to static_call(), too, but that would require a major header file disentangling. For a clean build without any objtool warnings a modified objtool is required. Currently this is available in the "tip" tree in the objtool/core branch. Changes in V4: - fixed several build failures - removed objtool patch, as objtool patches are in tip now - added patch 1 for making usage of static_call easier - even more cleanup Changes in V3: - added patches 7 and 12 - addressed all comments Changes in V2: - added patches 5-12 Juergen Gross (14): x86/xen: use specific Xen pv interrupt entry for MCE x86/xen: use specific Xen pv interrupt entry for DF x86/pv: switch SWAPGS to ALTERNATIVE x86/xen: drop USERGS_SYSRET64 paravirt call x86: rework arch_local_irq_restore() to not use popf x86/paravirt: switch time pvops functions to use static_call() x86/alternative: support "not feature" and ALTERNATIVE_TERNARY x86: add new features for paravirt patching x86/paravirt: remove no longer needed 32-bit pvops cruft x86/paravirt: simplify paravirt macros x86/paravirt: switch iret pvops to ALTERNATIVE x86/paravirt: add new macros PVOP_ALT* supporting pvops in ALTERNATIVEs x86/paravirt: switch functions with custom code to ALTERNATIVE x86/paravirt: have only one paravirt patch function Peter Zijlstra (1): static_call: Pull some static_call declarations to the type headers arch/x86/Kconfig | 1 + arch/x86/entry/entry_32.S | 4 +- arch/x86/entry/entry_64.S | 28 ++- arch/x86/include/asm/alternative-asm.h | 4 + arch/x86/include/asm/alternative.h | 7 + arch/x86/include/asm/cpufeatures.h | 2 + arch/x86/include/asm/idtentry.h | 6 + arch/x86/include/asm/irqflags.h | 53 ++---- arch/x86/include/asm/mshyperv.h | 2 +- arch/x86/include/asm/paravirt.h | 197 ++++++++------------ arch/x86/include/asm/paravirt_types.h | 227 +++++++++--------------- arch/x86/kernel/Makefile | 3 +- arch/x86/kernel/alternative.c | 49 ++++- arch/x86/kernel/asm-offsets.c | 7 - arch/x86/kernel/asm-offsets_64.c | 3 - arch/x86/kernel/cpu/vmware.c | 5 +- arch/x86/kernel/irqflags.S | 11 -- arch/x86/kernel/kvm.c | 2 +- arch/x86/kernel/kvmclock.c | 2 +- arch/x86/kernel/paravirt-spinlocks.c | 9 + arch/x86/kernel/paravirt.c | 83 +++------ arch/x86/kernel/paravirt_patch.c | 109 ------------ arch/x86/kernel/tsc.c | 2 +- arch/x86/xen/enlighten_pv.c | 36 ++-- arch/x86/xen/irq.c | 23 --- arch/x86/xen/time.c | 11 +- arch/x86/xen/xen-asm.S | 52 +----- arch/x86/xen/xen-ops.h | 3 - drivers/clocksource/hyperv_timer.c | 5 +- drivers/xen/time.c | 2 +- include/linux/static_call.h | 20 --- include/linux/static_call_types.h | 27 +++ tools/include/linux/static_call_types.h | 27 +++ 33 files changed, 376 insertions(+), 646 deletions(-) delete mode 100644 arch/x86/kernel/paravirt_patch.c -- 2.26.2
WARNING: multiple messages have this Message-ID (diff)
From: Juergen Gross via Virtualization <virtualization@lists.linux-foundation.org> To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, x86@kernel.org, virtualization@lists.linux-foundation.org, linux-hyperv@vger.kernel.org, kvm@vger.kernel.org, clang-built-linux@googlegroups.com Cc: Wanpeng Li <wanpengli@tencent.com>, Peter Zijlstra <peterz@infradead.org>, Michal Hocko <mhocko@kernel.org>, Nathan Chancellor <natechancellor@gmail.com>, "H. Peter Anvin" <hpa@zytor.com>, Thomas Gleixner <tglx@linutronix.de>, Wei Liu <wei.liu@kernel.org>, Stefano Stabellini <sstabellini@kernel.org>, Stephen Hemminger <sthemmin@microsoft.com>, Joerg Roedel <joro@8bytes.org>, Daniel Lezcano <daniel.lezcano@linaro.org>, Ard Biesheuvel <ardb@kernel.org>, "VMware, Inc." <pv-drivers@vmware.com>, Ingo Molnar <mingo@redhat.com>, Mel Gorman <mgorman@suse.de>, "Paul E . McKenney" <paulmck@kernel.org>, Haiyang Zhang <haiyangz@microsoft.com>, Steven Rostedt <rostedt@goodmis.org>, Jason Baron <jbaron@akamai.com>, Borislav Petkov <bp@alien8.de>, Andy Lutomirski <luto@kernel.org>, Josh Poimboeuf <jpoimboe@redhat.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Jim Mattson <jmattson@google.com>, Juergen Gross <jgross@suse.com>, Sean Christopherson <seanjc@google.com>, Nick Desaulniers <ndesaulniers@google.com>, Paolo Bonzini <pbonzini@redhat.com> Subject: [PATCH v4 00/15] x86: major paravirt cleanup Date: Wed, 20 Jan 2021 14:55:40 +0100 [thread overview] Message-ID: <20210120135555.32594-1-jgross@suse.com> (raw) [Resend due to all the Cc:'s missing] This is a major cleanup of the paravirt infrastructure aiming at eliminating all custom code patching via paravirt patching. This is achieved by using ALTERNATIVE instead, leading to the ability to give objtool access to the patched in instructions. In order to remove most of the 32-bit special handling from pvops the time related operations are switched to use static_call() instead. At the end of this series all paravirt patching has to do is to replace indirect calls with direct ones. In a further step this could be switched to static_call(), too, but that would require a major header file disentangling. For a clean build without any objtool warnings a modified objtool is required. Currently this is available in the "tip" tree in the objtool/core branch. Changes in V4: - fixed several build failures - removed objtool patch, as objtool patches are in tip now - added patch 1 for making usage of static_call easier - even more cleanup Changes in V3: - added patches 7 and 12 - addressed all comments Changes in V2: - added patches 5-12 Juergen Gross (14): x86/xen: use specific Xen pv interrupt entry for MCE x86/xen: use specific Xen pv interrupt entry for DF x86/pv: switch SWAPGS to ALTERNATIVE x86/xen: drop USERGS_SYSRET64 paravirt call x86: rework arch_local_irq_restore() to not use popf x86/paravirt: switch time pvops functions to use static_call() x86/alternative: support "not feature" and ALTERNATIVE_TERNARY x86: add new features for paravirt patching x86/paravirt: remove no longer needed 32-bit pvops cruft x86/paravirt: simplify paravirt macros x86/paravirt: switch iret pvops to ALTERNATIVE x86/paravirt: add new macros PVOP_ALT* supporting pvops in ALTERNATIVEs x86/paravirt: switch functions with custom code to ALTERNATIVE x86/paravirt: have only one paravirt patch function Peter Zijlstra (1): static_call: Pull some static_call declarations to the type headers arch/x86/Kconfig | 1 + arch/x86/entry/entry_32.S | 4 +- arch/x86/entry/entry_64.S | 28 ++- arch/x86/include/asm/alternative-asm.h | 4 + arch/x86/include/asm/alternative.h | 7 + arch/x86/include/asm/cpufeatures.h | 2 + arch/x86/include/asm/idtentry.h | 6 + arch/x86/include/asm/irqflags.h | 53 ++---- arch/x86/include/asm/mshyperv.h | 2 +- arch/x86/include/asm/paravirt.h | 197 ++++++++------------ arch/x86/include/asm/paravirt_types.h | 227 +++++++++--------------- arch/x86/kernel/Makefile | 3 +- arch/x86/kernel/alternative.c | 49 ++++- arch/x86/kernel/asm-offsets.c | 7 - arch/x86/kernel/asm-offsets_64.c | 3 - arch/x86/kernel/cpu/vmware.c | 5 +- arch/x86/kernel/irqflags.S | 11 -- arch/x86/kernel/kvm.c | 2 +- arch/x86/kernel/kvmclock.c | 2 +- arch/x86/kernel/paravirt-spinlocks.c | 9 + arch/x86/kernel/paravirt.c | 83 +++------ arch/x86/kernel/paravirt_patch.c | 109 ------------ arch/x86/kernel/tsc.c | 2 +- arch/x86/xen/enlighten_pv.c | 36 ++-- arch/x86/xen/irq.c | 23 --- arch/x86/xen/time.c | 11 +- arch/x86/xen/xen-asm.S | 52 +----- arch/x86/xen/xen-ops.h | 3 - drivers/clocksource/hyperv_timer.c | 5 +- drivers/xen/time.c | 2 +- include/linux/static_call.h | 20 --- include/linux/static_call_types.h | 27 +++ tools/include/linux/static_call_types.h | 27 +++ 33 files changed, 376 insertions(+), 646 deletions(-) delete mode 100644 arch/x86/kernel/paravirt_patch.c -- 2.26.2 _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next reply other threads:[~2021-01-20 20:33 UTC|newest] Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-01-20 13:55 Juergen Gross [this message] 2021-01-20 13:55 ` [PATCH v4 00/15] x86: major paravirt cleanup Juergen Gross via Virtualization 2021-01-20 13:55 ` [PATCH v4 01/15] static_call: Pull some static_call declarations to the type headers Juergen Gross 2021-01-20 13:55 ` [PATCH v4 02/15] x86/xen: use specific Xen pv interrupt entry for MCE Juergen Gross 2021-02-10 12:23 ` [tip: x86/paravirt] x86/xen: Use " tip-bot2 for Juergen Gross 2021-01-20 13:55 ` [PATCH v4 03/15] x86/xen: use specific Xen pv interrupt entry for DF Juergen Gross 2021-02-10 12:23 ` [tip: x86/paravirt] x86/xen: Use " tip-bot2 for Juergen Gross 2021-01-20 13:55 ` [PATCH v4 04/15] x86/pv: switch SWAPGS to ALTERNATIVE Juergen Gross 2021-01-20 13:55 ` Juergen Gross via Virtualization 2021-02-10 12:23 ` [tip: x86/paravirt] x86/pv: Switch " tip-bot2 for Juergen Gross 2021-01-20 13:55 ` [PATCH v4 05/15] x86/xen: drop USERGS_SYSRET64 paravirt call Juergen Gross 2021-01-20 13:55 ` Juergen Gross via Virtualization 2021-02-10 12:23 ` [tip: x86/paravirt] x86/xen: Drop " tip-bot2 for Juergen Gross 2021-01-20 13:55 ` [PATCH v4 06/15] x86: rework arch_local_irq_restore() to not use popf Juergen Gross 2021-01-20 13:55 ` Juergen Gross via Virtualization 2021-02-10 12:23 ` [tip: x86/paravirt] x86/pv: Rework " tip-bot2 for Juergen Gross 2021-01-20 13:55 ` [PATCH v4 07/15] x86/paravirt: switch time pvops functions to use static_call() Juergen Gross 2021-01-20 13:55 ` Juergen Gross via Virtualization 2021-01-21 1:49 ` kernel test robot 2021-01-24 16:14 ` Michael Kelley 2021-01-24 16:14 ` Michael Kelley 2021-01-24 16:14 ` Michael Kelley via Virtualization 2021-02-01 19:48 ` Borislav Petkov 2021-02-01 19:48 ` Borislav Petkov 2021-01-20 13:55 ` [PATCH v4 08/15] x86/alternative: support "not feature" and ALTERNATIVE_TERNARY Juergen Gross 2021-01-20 13:55 ` [PATCH v4 09/15] x86: add new features for paravirt patching Juergen Gross 2021-01-20 13:55 ` Juergen Gross via Virtualization 2021-01-20 13:55 ` [PATCH v4 10/15] x86/paravirt: remove no longer needed 32-bit pvops cruft Juergen Gross 2021-01-20 13:55 ` Juergen Gross via Virtualization 2021-01-20 13:55 ` [PATCH v4 11/15] x86/paravirt: simplify paravirt macros Juergen Gross 2021-01-20 13:55 ` Juergen Gross via Virtualization 2021-01-20 13:55 ` [PATCH v4 12/15] x86/paravirt: switch iret pvops to ALTERNATIVE Juergen Gross 2021-01-20 13:55 ` Juergen Gross via Virtualization 2021-01-20 13:55 ` [PATCH v4 13/15] x86/paravirt: add new macros PVOP_ALT* supporting pvops in ALTERNATIVEs Juergen Gross 2021-01-20 13:55 ` Juergen Gross via Virtualization 2021-01-20 13:55 ` [PATCH v4 14/15] x86/paravirt: switch functions with custom code to ALTERNATIVE Juergen Gross 2021-01-20 13:55 ` Juergen Gross via Virtualization 2021-01-20 13:55 ` [PATCH v4 15/15] x86/paravirt: have only one paravirt patch function Juergen Gross 2021-01-20 13:55 ` Juergen Gross via Virtualization -- strict thread matches above, loose matches on Subject: below -- 2021-01-20 13:25 [PATCH v4 00/15] x86: major paravirt cleanup Juergen Gross 2021-01-20 13:25 ` Juergen Gross via Virtualization
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=20210120135555.32594-1-jgross@suse.com \ --to=jgross@suse.com \ --cc=ardb@kernel.org \ --cc=boris.ostrovsky@oracle.com \ --cc=bp@alien8.de \ --cc=clang-built-linux@googlegroups.com \ --cc=daniel.lezcano@linaro.org \ --cc=haiyangz@microsoft.com \ --cc=hpa@zytor.com \ --cc=jbaron@akamai.com \ --cc=jmattson@google.com \ --cc=joro@8bytes.org \ --cc=jpoimboe@redhat.com \ --cc=kvm@vger.kernel.org \ --cc=kys@microsoft.com \ --cc=linux-hyperv@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=luto@kernel.org \ --cc=mgorman@suse.de \ --cc=mhocko@kernel.org \ --cc=mingo@redhat.com \ --cc=natechancellor@gmail.com \ --cc=ndesaulniers@google.com \ --cc=paulmck@kernel.org \ --cc=pbonzini@redhat.com \ --cc=peterz@infradead.org \ --cc=pv-drivers@vmware.com \ --cc=rostedt@goodmis.org \ --cc=sdeep@vmware.com \ --cc=seanjc@google.com \ --cc=sstabellini@kernel.org \ --cc=sthemmin@microsoft.com \ --cc=tglx@linutronix.de \ --cc=virtualization@lists.linux-foundation.org \ --cc=vkuznets@redhat.com \ --cc=wanpengli@tencent.com \ --cc=wei.liu@kernel.org \ --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.