From: Andy Lutomirski <luto@kernel.org> To: X86 ML <x86@kernel.org> Cc: Paolo Bonzini <pbonzini@redhat.com>, Peter Zijlstra <peterz@infradead.org>, KVM list <kvm@vger.kernel.org>, Arjan van de Ven <arjan@linux.intel.com>, xen-devel <Xen-devel@lists.xen.org>, linux-kernel@vger.kernel.org, Linus Torvalds <torvalds@linux-foundation.org>, Andrew Morton <akpm@linux-foundation.org>, Borislav Petkov <bp@alien8.de>, Andy Lutomirski <luto@kernel.org> Subject: [PATCH v5 5/9] x86/paravirt: Add _safe to the read_msr and write_msr PV hooks Date: Sat, 2 Apr 2016 07:01:36 -0700 [thread overview] Message-ID: <9ee3fb6a196a514c93325bdfa15594beecf04876.1459605520.git.luto@kernel.org> (raw) In-Reply-To: <cover.1459605520.git.luto@kernel.org> In-Reply-To: <cover.1459605520.git.luto@kernel.org> These hooks match the _safe variants, so name them accordingly. This will make room for unsafe PV hooks. Signed-off-by: Andy Lutomirski <luto@kernel.org> --- arch/x86/include/asm/paravirt.h | 33 +++++++++++++++++---------------- arch/x86/include/asm/paravirt_types.h | 8 ++++---- arch/x86/kernel/paravirt.c | 4 ++-- arch/x86/xen/enlighten.c | 4 ++-- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h index f6192502149e..2e49228ed9a3 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h @@ -129,34 +129,35 @@ static inline void wbinvd(void) #define get_kernel_rpl() (pv_info.kernel_rpl) -static inline u64 paravirt_read_msr(unsigned msr, int *err) +static inline u64 paravirt_read_msr_safe(unsigned msr, int *err) { - return PVOP_CALL2(u64, pv_cpu_ops.read_msr, msr, err); + return PVOP_CALL2(u64, pv_cpu_ops.read_msr_safe, msr, err); } -static inline int paravirt_write_msr(unsigned msr, unsigned low, unsigned high) +static inline int paravirt_write_msr_safe(unsigned msr, + unsigned low, unsigned high) { - return PVOP_CALL3(int, pv_cpu_ops.write_msr, msr, low, high); + return PVOP_CALL3(int, pv_cpu_ops.write_msr_safe, msr, low, high); } /* These should all do BUG_ON(_err), but our headers are too tangled. */ #define rdmsr(msr, val1, val2) \ do { \ int _err; \ - u64 _l = paravirt_read_msr(msr, &_err); \ + u64 _l = paravirt_read_msr_safe(msr, &_err); \ val1 = (u32)_l; \ val2 = _l >> 32; \ } while (0) #define wrmsr(msr, val1, val2) \ do { \ - paravirt_write_msr(msr, val1, val2); \ + paravirt_write_msr_safe(msr, val1, val2); \ } while (0) #define rdmsrl(msr, val) \ do { \ int _err; \ - val = paravirt_read_msr(msr, &_err); \ + val = paravirt_read_msr_safe(msr, &_err); \ } while (0) static inline void wrmsrl(unsigned msr, u64 val) @@ -164,23 +165,23 @@ static inline void wrmsrl(unsigned msr, u64 val) wrmsr(msr, (u32)val, (u32)(val>>32)); } -#define wrmsr_safe(msr, a, b) paravirt_write_msr(msr, a, b) +#define wrmsr_safe(msr, a, b) paravirt_write_msr_safe(msr, a, b) /* rdmsr with exception handling */ -#define rdmsr_safe(msr, a, b) \ -({ \ - int _err; \ - u64 _l = paravirt_read_msr(msr, &_err); \ - (*a) = (u32)_l; \ - (*b) = _l >> 32; \ - _err; \ +#define rdmsr_safe(msr, a, b) \ +({ \ + int _err; \ + u64 _l = paravirt_read_msr_safe(msr, &_err); \ + (*a) = (u32)_l; \ + (*b) = _l >> 32; \ + _err; \ }) static inline int rdmsrl_safe(unsigned msr, unsigned long long *p) { int err; - *p = paravirt_read_msr(msr, &err); + *p = paravirt_read_msr_safe(msr, &err); return err; } diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h index 77db5616a473..5a06cccd36f0 100644 --- a/arch/x86/include/asm/paravirt_types.h +++ b/arch/x86/include/asm/paravirt_types.h @@ -155,10 +155,10 @@ struct pv_cpu_ops { void (*cpuid)(unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx); - /* MSR, PMC and TSR operations. - err = 0/-EFAULT. wrmsr returns 0/-EFAULT. */ - u64 (*read_msr)(unsigned int msr, int *err); - int (*write_msr)(unsigned int msr, unsigned low, unsigned high); + /* MSR operations. + err = 0/-EIO. wrmsr returns 0/-EIO. */ + u64 (*read_msr_safe)(unsigned int msr, int *err); + int (*write_msr_safe)(unsigned int msr, unsigned low, unsigned high); u64 (*read_pmc)(int counter); diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c index f08ac28b8136..8aad95478ae5 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c @@ -339,8 +339,8 @@ __visible struct pv_cpu_ops pv_cpu_ops = { .write_cr8 = native_write_cr8, #endif .wbinvd = native_wbinvd, - .read_msr = native_read_msr_safe, - .write_msr = native_write_msr_safe, + .read_msr_safe = native_read_msr_safe, + .write_msr_safe = native_write_msr_safe, .read_pmc = native_read_pmc, .load_tr_desc = native_load_tr_desc, .set_ldt = native_set_ldt, diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index d09e4c9d7cc5..ff2df20d0067 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c @@ -1222,8 +1222,8 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = { .wbinvd = native_wbinvd, - .read_msr = xen_read_msr_safe, - .write_msr = xen_write_msr_safe, + .read_msr_safe = xen_read_msr_safe, + .write_msr_safe = xen_write_msr_safe, .read_pmc = xen_read_pmc, -- 2.5.5
WARNING: multiple messages have this Message-ID (diff)
From: Andy Lutomirski <luto@kernel.org> To: X86 ML <x86@kernel.org> Cc: KVM list <kvm@vger.kernel.org>, Peter Zijlstra <peterz@infradead.org>, Linus Torvalds <torvalds@linux-foundation.org>, linux-kernel@vger.kernel.org, xen-devel <Xen-devel@lists.xen.org>, Borislav Petkov <bp@alien8.de>, Andy Lutomirski <luto@kernel.org>, Paolo Bonzini <pbonzini@redhat.com>, Andrew Morton <akpm@linux-foundation.org>, Arjan van de Ven <arjan@linux.intel.com> Subject: [PATCH v5 5/9] x86/paravirt: Add _safe to the read_msr and write_msr PV hooks Date: Sat, 2 Apr 2016 07:01:36 -0700 [thread overview] Message-ID: <9ee3fb6a196a514c93325bdfa15594beecf04876.1459605520.git.luto@kernel.org> (raw) In-Reply-To: <cover.1459605520.git.luto@kernel.org> In-Reply-To: <cover.1459605520.git.luto@kernel.org> These hooks match the _safe variants, so name them accordingly. This will make room for unsafe PV hooks. Signed-off-by: Andy Lutomirski <luto@kernel.org> --- arch/x86/include/asm/paravirt.h | 33 +++++++++++++++++---------------- arch/x86/include/asm/paravirt_types.h | 8 ++++---- arch/x86/kernel/paravirt.c | 4 ++-- arch/x86/xen/enlighten.c | 4 ++-- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h index f6192502149e..2e49228ed9a3 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h @@ -129,34 +129,35 @@ static inline void wbinvd(void) #define get_kernel_rpl() (pv_info.kernel_rpl) -static inline u64 paravirt_read_msr(unsigned msr, int *err) +static inline u64 paravirt_read_msr_safe(unsigned msr, int *err) { - return PVOP_CALL2(u64, pv_cpu_ops.read_msr, msr, err); + return PVOP_CALL2(u64, pv_cpu_ops.read_msr_safe, msr, err); } -static inline int paravirt_write_msr(unsigned msr, unsigned low, unsigned high) +static inline int paravirt_write_msr_safe(unsigned msr, + unsigned low, unsigned high) { - return PVOP_CALL3(int, pv_cpu_ops.write_msr, msr, low, high); + return PVOP_CALL3(int, pv_cpu_ops.write_msr_safe, msr, low, high); } /* These should all do BUG_ON(_err), but our headers are too tangled. */ #define rdmsr(msr, val1, val2) \ do { \ int _err; \ - u64 _l = paravirt_read_msr(msr, &_err); \ + u64 _l = paravirt_read_msr_safe(msr, &_err); \ val1 = (u32)_l; \ val2 = _l >> 32; \ } while (0) #define wrmsr(msr, val1, val2) \ do { \ - paravirt_write_msr(msr, val1, val2); \ + paravirt_write_msr_safe(msr, val1, val2); \ } while (0) #define rdmsrl(msr, val) \ do { \ int _err; \ - val = paravirt_read_msr(msr, &_err); \ + val = paravirt_read_msr_safe(msr, &_err); \ } while (0) static inline void wrmsrl(unsigned msr, u64 val) @@ -164,23 +165,23 @@ static inline void wrmsrl(unsigned msr, u64 val) wrmsr(msr, (u32)val, (u32)(val>>32)); } -#define wrmsr_safe(msr, a, b) paravirt_write_msr(msr, a, b) +#define wrmsr_safe(msr, a, b) paravirt_write_msr_safe(msr, a, b) /* rdmsr with exception handling */ -#define rdmsr_safe(msr, a, b) \ -({ \ - int _err; \ - u64 _l = paravirt_read_msr(msr, &_err); \ - (*a) = (u32)_l; \ - (*b) = _l >> 32; \ - _err; \ +#define rdmsr_safe(msr, a, b) \ +({ \ + int _err; \ + u64 _l = paravirt_read_msr_safe(msr, &_err); \ + (*a) = (u32)_l; \ + (*b) = _l >> 32; \ + _err; \ }) static inline int rdmsrl_safe(unsigned msr, unsigned long long *p) { int err; - *p = paravirt_read_msr(msr, &err); + *p = paravirt_read_msr_safe(msr, &err); return err; } diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h index 77db5616a473..5a06cccd36f0 100644 --- a/arch/x86/include/asm/paravirt_types.h +++ b/arch/x86/include/asm/paravirt_types.h @@ -155,10 +155,10 @@ struct pv_cpu_ops { void (*cpuid)(unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx); - /* MSR, PMC and TSR operations. - err = 0/-EFAULT. wrmsr returns 0/-EFAULT. */ - u64 (*read_msr)(unsigned int msr, int *err); - int (*write_msr)(unsigned int msr, unsigned low, unsigned high); + /* MSR operations. + err = 0/-EIO. wrmsr returns 0/-EIO. */ + u64 (*read_msr_safe)(unsigned int msr, int *err); + int (*write_msr_safe)(unsigned int msr, unsigned low, unsigned high); u64 (*read_pmc)(int counter); diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c index f08ac28b8136..8aad95478ae5 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c @@ -339,8 +339,8 @@ __visible struct pv_cpu_ops pv_cpu_ops = { .write_cr8 = native_write_cr8, #endif .wbinvd = native_wbinvd, - .read_msr = native_read_msr_safe, - .write_msr = native_write_msr_safe, + .read_msr_safe = native_read_msr_safe, + .write_msr_safe = native_write_msr_safe, .read_pmc = native_read_pmc, .load_tr_desc = native_load_tr_desc, .set_ldt = native_set_ldt, diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index d09e4c9d7cc5..ff2df20d0067 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c @@ -1222,8 +1222,8 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = { .wbinvd = native_wbinvd, - .read_msr = xen_read_msr_safe, - .write_msr = xen_write_msr_safe, + .read_msr_safe = xen_read_msr_safe, + .write_msr_safe = xen_write_msr_safe, .read_pmc = xen_read_pmc, -- 2.5.5 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-04-02 14:03 UTC|newest] Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-04-02 14:01 [PATCH v5 0/9] Improve non-"safe" MSR access failure handling Andy Lutomirski 2016-04-02 14:01 ` [PATCH v5 1/9] x86/head: Pass a real pt_regs and trapnr to early_fixup_exception Andy Lutomirski 2016-04-02 14:01 ` Andy Lutomirski 2016-04-13 11:43 ` [tip:x86/asm] x86/head: Pass a real pt_regs and trapnr to early_fixup_exception() tip-bot for Andy Lutomirski 2016-04-13 11:43 ` tip-bot for Andy Lutomirski 2016-04-02 14:01 ` [PATCH v5 2/9] x86/head: Move the early NMI fixup into C Andy Lutomirski 2016-04-02 14:01 ` Andy Lutomirski 2016-04-13 11:43 ` [tip:x86/asm] " tip-bot for Andy Lutomirski 2016-04-13 11:43 ` tip-bot for Andy Lutomirski 2016-04-02 14:01 ` [PATCH v5 3/9] x86/head: Move early exception panic code into early_fixup_exception Andy Lutomirski 2016-04-02 14:01 ` Andy Lutomirski 2016-04-02 18:39 ` Borislav Petkov 2016-04-02 18:39 ` Borislav Petkov 2016-04-02 20:13 ` Andy Lutomirski 2016-04-02 20:47 ` Borislav Petkov 2016-04-02 20:47 ` Borislav Petkov 2016-04-02 20:58 ` Andy Lutomirski 2016-04-02 20:58 ` Andy Lutomirski 2016-04-04 11:52 ` Jan Kara 2016-04-04 11:52 ` Jan Kara 2016-04-04 12:46 ` Peter Zijlstra 2016-04-04 12:46 ` Peter Zijlstra 2016-04-04 15:32 ` Andy Lutomirski 2016-04-04 15:36 ` Arjan van de Ven 2016-04-04 15:36 ` Arjan van de Ven 2016-04-04 16:00 ` Peter Zijlstra 2016-04-04 16:00 ` Peter Zijlstra 2016-04-04 19:38 ` Borislav Petkov 2016-04-04 19:38 ` Borislav Petkov 2016-04-04 21:31 ` Andy Lutomirski 2016-04-04 21:40 ` Borislav Petkov 2016-04-04 21:40 ` Borislav Petkov 2016-04-04 21:31 ` Andy Lutomirski 2016-04-04 15:32 ` Andy Lutomirski 2016-04-02 20:13 ` Andy Lutomirski 2016-04-13 11:44 ` [tip:x86/asm] x86/head: Move early exception panic code into early_fixup_exception() tip-bot for Andy Lutomirski 2016-04-13 11:44 ` tip-bot for Andy Lutomirski 2016-04-02 14:01 ` [PATCH v5 4/9] x86/traps: Enable all exception handler callbacks early Andy Lutomirski 2016-04-02 18:52 ` Borislav Petkov 2016-04-02 20:16 ` Andy Lutomirski 2016-04-02 20:52 ` Borislav Petkov 2016-04-02 20:52 ` Borislav Petkov 2016-04-03 8:07 ` Borislav Petkov 2016-04-03 8:07 ` Borislav Petkov 2016-04-03 13:22 ` Andy Lutomirski 2016-04-03 13:22 ` Andy Lutomirski 2016-04-03 13:51 ` Linus Torvalds 2016-04-03 13:51 ` Linus Torvalds 2016-04-03 13:55 ` Andy Lutomirski 2016-04-03 14:10 ` Borislav Petkov 2016-04-03 14:10 ` Borislav Petkov 2016-04-04 15:47 ` Andy Lutomirski 2016-04-04 15:47 ` Andy Lutomirski 2016-04-03 14:17 ` Linus Torvalds 2016-04-03 14:17 ` Linus Torvalds 2016-04-03 13:55 ` Andy Lutomirski 2016-04-02 20:16 ` Andy Lutomirski 2016-04-02 18:52 ` Borislav Petkov 2016-04-13 11:44 ` [tip:x86/asm] " tip-bot for Andy Lutomirski 2016-04-13 11:44 ` tip-bot for Andy Lutomirski 2016-04-02 14:01 ` [PATCH v5 4/9] " Andy Lutomirski 2016-04-02 14:01 ` Andy Lutomirski [this message] 2016-04-02 14:01 ` [PATCH v5 5/9] x86/paravirt: Add _safe to the read_msr and write_msr PV hooks Andy Lutomirski 2016-04-03 8:41 ` Borislav Petkov 2016-04-03 13:23 ` Andy Lutomirski 2016-04-03 14:07 ` Borislav Petkov 2016-04-03 14:07 ` Borislav Petkov 2016-04-03 13:23 ` Andy Lutomirski 2016-04-03 8:41 ` Borislav Petkov 2016-04-13 11:44 ` [tip:x86/asm] x86/paravirt: Add _safe to the read_ms()r and write_msr() PV callbacks tip-bot for Andy Lutomirski 2016-04-13 11:44 ` tip-bot for Andy Lutomirski 2016-04-02 14:01 ` [PATCH v5 6/9] x86/msr: Carry on after a non-"safe" MSR access fails Andy Lutomirski 2016-04-02 14:01 ` Andy Lutomirski 2016-04-13 11:45 ` [tip:x86/asm] " tip-bot for Andy Lutomirski 2016-04-13 11:45 ` tip-bot for Andy Lutomirski 2016-04-02 14:01 ` [PATCH v5 7/9] x86/paravirt: Add paravirt_{read, write}_msr Andy Lutomirski 2016-04-02 14:01 ` [PATCH v5 7/9] x86/paravirt: Add paravirt_{read,write}_msr Andy Lutomirski 2016-04-04 16:33 ` [PATCH v5 7/9] x86/paravirt: Add paravirt_{read, write}_msr David Vrabel 2016-04-04 16:33 ` [Xen-devel] " David Vrabel 2016-04-04 16:40 ` Andy Lutomirski 2016-04-04 16:40 ` Andy Lutomirski 2016-04-13 11:45 ` [tip:x86/asm] x86/paravirt: Add paravirt_{read, write}_msr() tip-bot for Andy Lutomirski 2016-04-13 11:45 ` [tip:x86/asm] x86/paravirt: Add paravirt_{read,write}_msr() tip-bot for Andy Lutomirski 2016-04-02 14:01 ` [PATCH v5 8/9] x86/paravirt: Make "unsafe" MSR accesses unsafe even if PARAVIRT=y Andy Lutomirski 2016-04-02 14:01 ` Andy Lutomirski 2016-04-13 11:46 ` [tip:x86/asm] " tip-bot for Andy Lutomirski 2016-04-13 11:46 ` tip-bot for Andy Lutomirski 2016-04-02 14:01 ` [PATCH v5 9/9] x86/msr: Set the return value to zero when native_rdmsr_safe fails Andy Lutomirski 2016-04-13 11:46 ` [tip:x86/asm] x86/msr: Set the return value to zero when native_rdmsr_safe() fails tip-bot for Andy Lutomirski 2016-04-13 11:46 ` tip-bot for Andy Lutomirski 2016-04-02 14:01 ` [PATCH v5 9/9] x86/msr: Set the return value to zero when native_rdmsr_safe fails Andy Lutomirski 2016-04-02 14:24 ` [PATCH v5 0/9] Improve non-"safe" MSR access failure handling Linus Torvalds 2016-04-02 15:13 ` Andy Lutomirski 2016-04-02 15:21 ` Linus Torvalds 2016-04-02 15:21 ` Linus Torvalds 2016-04-02 15:13 ` Andy Lutomirski 2016-04-02 14:24 ` Linus Torvalds 2016-04-04 16:23 ` Borislav Petkov 2016-04-04 16:23 ` Borislav Petkov 2016-04-05 15:38 ` Boris Ostrovsky 2016-04-05 15:38 ` [Xen-devel] " Boris Ostrovsky
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=9ee3fb6a196a514c93325bdfa15594beecf04876.1459605520.git.luto@kernel.org \ --to=luto@kernel.org \ --cc=Xen-devel@lists.xen.org \ --cc=akpm@linux-foundation.org \ --cc=arjan@linux.intel.com \ --cc=bp@alien8.de \ --cc=kvm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=pbonzini@redhat.com \ --cc=peterz@infradead.org \ --cc=torvalds@linux-foundation.org \ --cc=x86@kernel.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.