From: Boris Ostrovsky <boris.ostrovsky@oracle.com> To: Josh Poimboeuf <jpoimboe@redhat.com> Cc: x86@kernel.org, linux-kernel@vger.kernel.org, Juergen Gross <jgross@suse.com>, Andy Lutomirski <luto@kernel.org>, Linus Torvalds <torvalds@linux-foundation.org>, Sasha Levin <alexander.levin@verizon.com>, live-patching@vger.kernel.org, Jiri Slaby <jslaby@suse.cz>, Ingo Molnar <mingo@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>, Peter Zijlstra <peterz@infradead.org>, Mike Galbraith <efault@gmx.de>, Chris Wright <chrisw@sous-sol.org>, Alok Kataria <akataria@vmware.com>, Rusty Russell <rusty@rustcorp.com.au>, virtualization@lists.linux-foundation.org, xen-devel@lists.xenproject.org, Thomas Gleixner <tglx@linutronix.de>, Borislav Petkov <bp@alien8.de> Subject: Re: [PATCH 11/13] x86/paravirt: Add paravirt alternatives infrastructure Date: Fri, 6 Oct 2017 11:29:52 -0400 [thread overview] Message-ID: <8ba871e6-5f61-6441-f0ed-7542327f7164@oracle.com> (raw) In-Reply-To: <20171006143259.rs3zh7k5tmsgesqy@treble> On 10/06/2017 10:32 AM, Josh Poimboeuf wrote: > On Thu, Oct 05, 2017 at 04:35:03PM -0400, Boris Ostrovsky wrote: >>> #ifdef CONFIG_PARAVIRT >>> +/* >>> + * Paravirt alternatives are applied much earlier than normal alternatives. >>> + * They are only applied when running on a hypervisor. They replace some >>> + * native instructions with calls to pv ops. >>> + */ >>> +void __init apply_pv_alternatives(void) >>> +{ >>> + setup_force_cpu_cap(X86_FEATURE_PV_OPS); >> Not for Xen HVM guests. > From what I can tell, HVM guests still use pv_time_ops and > pv_mmu_ops.exit_mmap, right? Right, I forgot about that one. >>> + >>> void __init_or_module apply_paravirt(struct paravirt_patch_site *start, >>> struct paravirt_patch_site *end) >>> { >>> diff --git a/arch/x86/kernel/cpu/hypervisor.c b/arch/x86/kernel/cpu/hypervisor.c >>> index 4fa90006ac68..17243fe0f5ce 100644 >>> --- a/arch/x86/kernel/cpu/hypervisor.c >>> +++ b/arch/x86/kernel/cpu/hypervisor.c >>> @@ -71,6 +71,8 @@ void __init init_hypervisor_platform(void) >>> if (!x86_hyper) >>> return; >>> >>> + apply_pv_alternatives(); >> Not for Xen PV guests who have already done this. > I think it would be harmless, but yeah, it's probably best to only write > it once. I also wonder whether calling apply_pv_alternatives() here before x86_hyper->init_platform() will work since the latter may be setting those op. In fact, that's what Xen HVM does for pv_mmu_ops.exit_mmap. -boris
WARNING: multiple messages have this Message-ID (diff)
From: Boris Ostrovsky <boris.ostrovsky@oracle.com> To: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Juergen Gross <jgross@suse.com>, Rusty Russell <rusty@rustcorp.com.au>, Mike Galbraith <efault@gmx.de>, xen-devel@lists.xenproject.org, Peter Zijlstra <peterz@infradead.org>, Jiri Slaby <jslaby@suse.cz>, x86@kernel.org, linux-kernel@vger.kernel.org, Sasha Levin <alexander.levin@verizon.com>, Chris Wright <chrisw@sous-sol.org>, Thomas Gleixner <tglx@linutronix.de>, Andy Lutomirski <luto@kernel.org>, "H. Peter Anvin" <hpa@zytor.com>, Borislav Petkov <bp@alien8.de>, live-patching@vger.kernel.org, Alok Kataria <akataria@vmware.com>, virtualization@lists.linux-foundation.org, Linus Torvalds <torvalds@linux-foundation.org>, Ingo Molnar <mingo@kernel.org> Subject: Re: [PATCH 11/13] x86/paravirt: Add paravirt alternatives infrastructure Date: Fri, 6 Oct 2017 11:29:52 -0400 [thread overview] Message-ID: <8ba871e6-5f61-6441-f0ed-7542327f7164@oracle.com> (raw) In-Reply-To: <20171006143259.rs3zh7k5tmsgesqy@treble> On 10/06/2017 10:32 AM, Josh Poimboeuf wrote: > On Thu, Oct 05, 2017 at 04:35:03PM -0400, Boris Ostrovsky wrote: >>> #ifdef CONFIG_PARAVIRT >>> +/* >>> + * Paravirt alternatives are applied much earlier than normal alternatives. >>> + * They are only applied when running on a hypervisor. They replace some >>> + * native instructions with calls to pv ops. >>> + */ >>> +void __init apply_pv_alternatives(void) >>> +{ >>> + setup_force_cpu_cap(X86_FEATURE_PV_OPS); >> Not for Xen HVM guests. > From what I can tell, HVM guests still use pv_time_ops and > pv_mmu_ops.exit_mmap, right? Right, I forgot about that one. >>> + >>> void __init_or_module apply_paravirt(struct paravirt_patch_site *start, >>> struct paravirt_patch_site *end) >>> { >>> diff --git a/arch/x86/kernel/cpu/hypervisor.c b/arch/x86/kernel/cpu/hypervisor.c >>> index 4fa90006ac68..17243fe0f5ce 100644 >>> --- a/arch/x86/kernel/cpu/hypervisor.c >>> +++ b/arch/x86/kernel/cpu/hypervisor.c >>> @@ -71,6 +71,8 @@ void __init init_hypervisor_platform(void) >>> if (!x86_hyper) >>> return; >>> >>> + apply_pv_alternatives(); >> Not for Xen PV guests who have already done this. > I think it would be harmless, but yeah, it's probably best to only write > it once. I also wonder whether calling apply_pv_alternatives() here before x86_hyper->init_platform() will work since the latter may be setting those op. In fact, that's what Xen HVM does for pv_mmu_ops.exit_mmap. -boris
next prev parent reply other threads:[~2017-10-06 15:31 UTC|newest] Thread overview: 175+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-10-04 15:58 [PATCH 00/13] x86/paravirt: Make pv ops code generation more closely match reality Josh Poimboeuf 2017-10-04 15:58 ` [PATCH 01/13] x86/paravirt: remove wbinvd() paravirt interface Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-24 13:17 ` Juergen Gross 2017-10-24 13:17 ` Juergen Gross 2017-10-24 13:17 ` Juergen Gross 2017-11-17 14:39 ` Borislav Petkov 2017-11-17 14:39 ` Borislav Petkov 2017-11-17 14:39 ` Borislav Petkov 2017-10-04 15:58 ` [PATCH 02/13] x86/paravirt: Fix output constraint macro names Josh Poimboeuf 2017-10-25 9:33 ` Juergen Gross 2017-10-25 9:33 ` Juergen Gross 2017-11-16 20:50 ` Josh Poimboeuf 2017-11-16 20:50 ` Josh Poimboeuf 2017-11-16 20:50 ` Josh Poimboeuf 2017-11-17 6:55 ` Juergen Gross 2017-11-17 6:55 ` Juergen Gross 2017-11-17 6:55 ` Juergen Gross 2017-10-25 9:33 ` Juergen Gross 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` [PATCH 03/13] x86/paravirt: Convert native patch assembly code strings to macros Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-25 9:46 ` Juergen Gross 2017-10-25 9:46 ` Juergen Gross 2017-10-25 9:46 ` Juergen Gross 2017-11-16 21:04 ` Josh Poimboeuf 2017-11-16 21:04 ` Josh Poimboeuf 2017-11-16 21:04 ` Josh Poimboeuf 2017-11-17 18:07 ` Borislav Petkov 2017-11-17 18:07 ` Borislav Petkov 2017-11-17 18:07 ` Borislav Petkov 2017-11-17 19:10 ` Juergen Gross 2017-11-17 19:10 ` Juergen Gross 2017-11-17 19:10 ` Juergen Gross 2017-11-17 19:42 ` Josh Poimboeuf 2017-11-17 19:42 ` Josh Poimboeuf 2017-11-18 10:20 ` Juergen Gross 2017-11-18 10:20 ` Juergen Gross 2017-11-18 13:17 ` Josh Poimboeuf 2017-11-18 13:17 ` Josh Poimboeuf 2017-11-18 13:17 ` Josh Poimboeuf 2017-11-18 10:20 ` Juergen Gross 2017-11-17 19:42 ` Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` [PATCH 04/13] x86/paravirt: Convert DEF_NATIVE macro to GCC extended asm syntax Josh Poimboeuf 2017-10-25 10:03 ` Juergen Gross 2017-10-25 10:03 ` Juergen Gross 2017-10-25 10:03 ` Juergen Gross 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` [PATCH 05/13] x86/paravirt: Move paravirt asm macros to paravirt-asm.h Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-25 10:32 ` Juergen Gross 2017-10-25 10:32 ` Juergen Gross 2017-10-25 10:32 ` Juergen Gross 2017-10-04 15:58 ` [PATCH 06/13] x86/paravirt: Clean up paravirt-asm.h Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-25 10:59 ` Juergen Gross 2017-10-25 10:59 ` Juergen Gross 2017-10-25 10:59 ` Juergen Gross 2017-10-04 15:58 ` [PATCH 07/13] x86/paravirt: Simplify ____PVOP_CALL() Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-25 11:01 ` Juergen Gross 2017-10-25 11:01 ` Juergen Gross 2017-10-25 11:01 ` Juergen Gross 2017-11-22 16:35 ` Borislav Petkov 2017-11-22 16:35 ` Borislav Petkov 2017-11-22 16:35 ` Borislav Petkov 2017-10-04 15:58 ` [PATCH 08/13] x86/paravirt: Clean up paravirt_types.h Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-25 11:08 ` Juergen Gross 2017-10-25 11:08 ` Juergen Gross 2017-10-25 11:08 ` Juergen Gross 2017-11-22 20:46 ` Borislav Petkov 2017-11-22 20:46 ` Borislav Petkov 2017-11-22 20:46 ` Borislav Petkov 2017-10-04 15:58 ` [PATCH 09/13] x86/asm: Convert ALTERNATIVE*() assembler macros to preprocessor macros Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-25 11:14 ` Juergen Gross 2017-10-25 11:14 ` Juergen Gross 2017-10-25 11:14 ` Juergen Gross 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` [PATCH 10/13] x86/alternative: Support indirect call replacement Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-25 11:25 ` Juergen Gross 2017-10-25 11:25 ` Juergen Gross 2017-10-25 11:25 ` Juergen Gross 2017-11-16 21:19 ` Josh Poimboeuf 2017-11-16 21:19 ` Josh Poimboeuf 2017-11-16 21:19 ` Josh Poimboeuf 2017-11-17 5:46 ` Juergen Gross 2017-11-17 5:46 ` Juergen Gross 2017-11-17 5:46 ` Juergen Gross 2017-11-17 19:52 ` H. Peter Anvin 2017-11-17 19:52 ` H. Peter Anvin 2017-11-17 19:52 ` H. Peter Anvin 2017-10-04 15:58 ` [PATCH 11/13] x86/paravirt: Add paravirt alternatives infrastructure Josh Poimboeuf 2017-10-05 20:35 ` Boris Ostrovsky 2017-10-05 20:35 ` Boris Ostrovsky 2017-10-06 14:32 ` Josh Poimboeuf 2017-10-06 15:29 ` Boris Ostrovsky [this message] 2017-10-06 15:29 ` Boris Ostrovsky 2017-10-06 16:30 ` Josh Poimboeuf 2017-10-06 16:30 ` Josh Poimboeuf 2017-10-06 16:30 ` Josh Poimboeuf 2017-10-06 15:29 ` Boris Ostrovsky 2017-10-12 19:11 ` Boris Ostrovsky 2017-10-12 19:11 ` Boris Ostrovsky 2017-10-12 19:11 ` Boris Ostrovsky 2017-10-12 19:27 ` Andrew Cooper 2017-10-12 19:27 ` [Xen-devel] " Andrew Cooper 2017-10-12 19:27 ` Andrew Cooper 2017-10-12 19:53 ` Boris Ostrovsky 2017-10-12 19:53 ` [Xen-devel] " Boris Ostrovsky 2017-10-12 19:53 ` Boris Ostrovsky 2017-10-16 18:18 ` Boris Ostrovsky 2017-10-16 18:18 ` [Xen-devel] " Boris Ostrovsky 2017-10-16 18:18 ` Boris Ostrovsky 2017-10-17 5:24 ` Josh Poimboeuf 2017-10-17 5:24 ` Josh Poimboeuf 2017-10-17 13:58 ` Boris Ostrovsky 2017-10-17 13:58 ` Boris Ostrovsky 2017-10-17 14:36 ` Josh Poimboeuf 2017-10-17 14:36 ` [Xen-devel] " Josh Poimboeuf 2017-10-17 14:36 ` Josh Poimboeuf 2017-10-17 15:36 ` Boris Ostrovsky 2017-10-17 15:36 ` [Xen-devel] " Boris Ostrovsky 2017-10-17 15:36 ` Boris Ostrovsky 2017-10-17 20:17 ` Josh Poimboeuf 2017-10-17 20:17 ` Josh Poimboeuf 2017-10-17 20:36 ` Boris Ostrovsky 2017-10-17 20:36 ` Boris Ostrovsky 2017-10-17 20:50 ` Josh Poimboeuf 2017-10-17 20:50 ` [Xen-devel] " Josh Poimboeuf 2017-10-17 20:59 ` Boris Ostrovsky 2017-10-17 20:59 ` Boris Ostrovsky 2017-10-17 21:03 ` Josh Poimboeuf 2017-10-17 21:03 ` [Xen-devel] " Josh Poimboeuf 2017-10-17 21:03 ` Josh Poimboeuf 2017-10-17 20:59 ` Boris Ostrovsky 2017-10-17 20:50 ` [Xen-devel] " Josh Poimboeuf 2017-10-17 20:36 ` Boris Ostrovsky 2017-10-17 20:17 ` Josh Poimboeuf 2017-10-17 13:58 ` Boris Ostrovsky 2017-10-17 5:24 ` Josh Poimboeuf 2017-10-17 13:10 ` [Xen-devel] " Brian Gerst 2017-10-17 13:10 ` Brian Gerst 2017-10-17 13:10 ` [Xen-devel] " Brian Gerst 2017-10-17 14:05 ` Boris Ostrovsky 2017-10-17 14:05 ` [Xen-devel] " Boris Ostrovsky 2017-10-17 14:05 ` Boris Ostrovsky 2017-10-06 14:32 ` Josh Poimboeuf 2017-10-06 14:32 ` Josh Poimboeuf 2017-10-05 20:35 ` Boris Ostrovsky 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` [PATCH 12/13] objtool: Add support for new .pv_altinstructions section Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` [PATCH 13/13] x86/paravirt: Convert natively patched pv ops to use paravirt alternatives Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-04 15:58 ` Josh Poimboeuf 2017-10-06 7:35 ` [Xen-devel] [PATCH 00/13] x86/paravirt: Make pv ops code generation more closely match reality Vitaly Kuznetsov 2017-10-06 7:35 ` Vitaly Kuznetsov 2017-10-06 14:36 ` Josh Poimboeuf 2017-10-06 14:36 ` Josh Poimboeuf 2017-10-06 14:36 ` [Xen-devel] " Josh Poimboeuf 2017-10-06 7:35 ` Vitaly Kuznetsov
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=8ba871e6-5f61-6441-f0ed-7542327f7164@oracle.com \ --to=boris.ostrovsky@oracle.com \ --cc=akataria@vmware.com \ --cc=alexander.levin@verizon.com \ --cc=bp@alien8.de \ --cc=chrisw@sous-sol.org \ --cc=efault@gmx.de \ --cc=hpa@zytor.com \ --cc=jgross@suse.com \ --cc=jpoimboe@redhat.com \ --cc=jslaby@suse.cz \ --cc=linux-kernel@vger.kernel.org \ --cc=live-patching@vger.kernel.org \ --cc=luto@kernel.org \ --cc=mingo@kernel.org \ --cc=peterz@infradead.org \ --cc=rusty@rustcorp.com.au \ --cc=tglx@linutronix.de \ --cc=torvalds@linux-foundation.org \ --cc=virtualization@lists.linux-foundation.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.