Message ID | 5D03BF8E020000780023861C@prv1-mh.provo.novell.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | x86 MCE adjustments for AMD / general per-CPU accessor cleanup | expand |
Hi Jan, On 14/06/2019 16:38, Jan Beulich wrote: > this_cpu{,_ptr}() are shorter, and have previously been marked as > preferred in Xen anyway. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Julien Grall <julien.grall@arm.com> > > --- a/xen/common/rcupdate.c > +++ b/xen/common/rcupdate.c > @@ -225,7 +225,7 @@ void call_rcu(struct rcu_head *head, > head->func = func; > head->next = NULL; > local_irq_save(flags); > - rdp = &__get_cpu_var(rcu_data); > + rdp = &this_cpu(rcu_data); > *rdp->nxttail = head; > rdp->nxttail = &head->next; > if (unlikely(++rdp->qlen > qhimark)) { > @@ -409,7 +409,7 @@ static void __rcu_process_callbacks(stru > > static void rcu_process_callbacks(void) > { > - __rcu_process_callbacks(&rcu_ctrlblk, &__get_cpu_var(rcu_data)); > + __rcu_process_callbacks(&rcu_ctrlblk, &this_cpu(rcu_data)); > } > > static int __rcu_pending(struct rcu_ctrlblk *rcp, struct rcu_data *rdp) > --- a/xen/include/asm-arm/percpu.h > +++ b/xen/include/asm-arm/percpu.h > @@ -17,12 +17,12 @@ void percpu_init_areas(void); > > #define per_cpu(var, cpu) \ > (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset[cpu])) > -#define __get_cpu_var(var) \ > +#define this_cpu(var) \ > (*RELOC_HIDE(&per_cpu__##var, READ_SYSREG(TPIDR_EL2))) > > #define per_cpu_ptr(var, cpu) \ > (*RELOC_HIDE(var, __per_cpu_offset[cpu])) > -#define __get_cpu_ptr(var) \ > +#define this_cpu_ptr(var) \ > (*RELOC_HIDE(var, READ_SYSREG(TPIDR_EL2))) > > #define DECLARE_PER_CPU(type, name) extern __typeof__(type) per_cpu__##name > --- a/xen/include/asm-x86/percpu.h > +++ b/xen/include/asm-x86/percpu.h > @@ -15,12 +15,12 @@ void percpu_init_areas(void); > /* var is in discarded region: offset to particular copy we want */ > #define per_cpu(var, cpu) \ > (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset[cpu])) > -#define __get_cpu_var(var) \ > +#define this_cpu(var) \ > (*RELOC_HIDE(&per_cpu__##var, get_cpu_info()->per_cpu_offset)) > > #define DECLARE_PER_CPU(type, name) extern __typeof__(type) per_cpu__##name > > -#define __get_cpu_ptr(var) \ > +#define this_cpu_ptr(var) \ > (*RELOC_HIDE(var, get_cpu_info()->per_cpu_offset)) > > #define per_cpu_ptr(var, cpu) \ > --- a/xen/include/xen/percpu.h > +++ b/xen/include/xen/percpu.h > @@ -13,11 +13,6 @@ > #define DEFINE_PER_CPU_READ_MOSTLY(type, name) \ > __DEFINE_PER_CPU(type, _##name, .read_mostly) > > -/* Preferred on Xen. Also see arch-defined per_cpu(). */ > -#define this_cpu(var) __get_cpu_var(var) > - > -#define this_cpu_ptr(ptr) __get_cpu_ptr(ptr) > - > #define get_per_cpu_var(var) (per_cpu__##var) > > /* Linux compatibility. */ > --- a/xen/xsm/flask/avc.c > +++ b/xen/xsm/flask/avc.c > @@ -57,9 +57,9 @@ const struct selinux_class_perm selinux_ > #define AVC_CACHE_RECLAIM 16 > > #ifdef CONFIG_XSM_FLASK_AVC_STATS > -#define avc_cache_stats_incr(field) \ > -do { \ > - __get_cpu_var(avc_cache_stats).field++; \ > +#define avc_cache_stats_incr(field) \ > +do { \ > + this_cpu(avc_cache_stats).field++; \ > } while (0) > #else > #define avc_cache_stats_incr(field) do {} while (0) > > > >
On 6/14/19 11:38 AM, Jan Beulich wrote: > this_cpu{,_ptr}() are shorter, and have previously been marked as > preferred in Xen anyway. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
On 14/06/2019 16:38, Jan Beulich wrote: > this_cpu{,_ptr}() are shorter, and have previously been marked as > preferred in Xen anyway. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
--- a/xen/common/rcupdate.c +++ b/xen/common/rcupdate.c @@ -225,7 +225,7 @@ void call_rcu(struct rcu_head *head, head->func = func; head->next = NULL; local_irq_save(flags); - rdp = &__get_cpu_var(rcu_data); + rdp = &this_cpu(rcu_data); *rdp->nxttail = head; rdp->nxttail = &head->next; if (unlikely(++rdp->qlen > qhimark)) { @@ -409,7 +409,7 @@ static void __rcu_process_callbacks(stru static void rcu_process_callbacks(void) { - __rcu_process_callbacks(&rcu_ctrlblk, &__get_cpu_var(rcu_data)); + __rcu_process_callbacks(&rcu_ctrlblk, &this_cpu(rcu_data)); } static int __rcu_pending(struct rcu_ctrlblk *rcp, struct rcu_data *rdp) --- a/xen/include/asm-arm/percpu.h +++ b/xen/include/asm-arm/percpu.h @@ -17,12 +17,12 @@ void percpu_init_areas(void); #define per_cpu(var, cpu) \ (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset[cpu])) -#define __get_cpu_var(var) \ +#define this_cpu(var) \ (*RELOC_HIDE(&per_cpu__##var, READ_SYSREG(TPIDR_EL2))) #define per_cpu_ptr(var, cpu) \ (*RELOC_HIDE(var, __per_cpu_offset[cpu])) -#define __get_cpu_ptr(var) \ +#define this_cpu_ptr(var) \ (*RELOC_HIDE(var, READ_SYSREG(TPIDR_EL2))) #define DECLARE_PER_CPU(type, name) extern __typeof__(type) per_cpu__##name --- a/xen/include/asm-x86/percpu.h +++ b/xen/include/asm-x86/percpu.h @@ -15,12 +15,12 @@ void percpu_init_areas(void); /* var is in discarded region: offset to particular copy we want */ #define per_cpu(var, cpu) \ (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset[cpu])) -#define __get_cpu_var(var) \ +#define this_cpu(var) \ (*RELOC_HIDE(&per_cpu__##var, get_cpu_info()->per_cpu_offset)) #define DECLARE_PER_CPU(type, name) extern __typeof__(type) per_cpu__##name -#define __get_cpu_ptr(var) \ +#define this_cpu_ptr(var) \ (*RELOC_HIDE(var, get_cpu_info()->per_cpu_offset)) #define per_cpu_ptr(var, cpu) \ --- a/xen/include/xen/percpu.h +++ b/xen/include/xen/percpu.h @@ -13,11 +13,6 @@ #define DEFINE_PER_CPU_READ_MOSTLY(type, name) \ __DEFINE_PER_CPU(type, _##name, .read_mostly) -/* Preferred on Xen. Also see arch-defined per_cpu(). */ -#define this_cpu(var) __get_cpu_var(var) - -#define this_cpu_ptr(ptr) __get_cpu_ptr(ptr) - #define get_per_cpu_var(var) (per_cpu__##var) /* Linux compatibility. */ --- a/xen/xsm/flask/avc.c +++ b/xen/xsm/flask/avc.c @@ -57,9 +57,9 @@ const struct selinux_class_perm selinux_ #define AVC_CACHE_RECLAIM 16 #ifdef CONFIG_XSM_FLASK_AVC_STATS -#define avc_cache_stats_incr(field) \ -do { \ - __get_cpu_var(avc_cache_stats).field++; \ +#define avc_cache_stats_incr(field) \ +do { \ + this_cpu(avc_cache_stats).field++; \ } while (0) #else #define avc_cache_stats_incr(field) do {} while (0)
this_cpu{,_ptr}() are shorter, and have previously been marked as preferred in Xen anyway. Signed-off-by: Jan Beulich <jbeulich@suse.com>