On Mon, 26 Jun 2017, Vikas Shivappa wrote: > diff --git a/arch/x86/kernel/cpu/intel_rdt.h b/arch/x86/kernel/cpu/intel_rdt.h > index fdf3654..fec8ba9 100644 > --- a/arch/x86/kernel/cpu/intel_rdt.h > +++ b/arch/x86/kernel/cpu/intel_rdt.h > @@ -37,6 +37,8 @@ struct mon_evt { > extern bool rdt_alloc_enabled; > extern int rdt_mon_features; > > +DECLARE_PER_CPU_READ_MOSTLY(int, cpu_rmid);
u32 > > +DEFINE_PER_CPU_READ_MOSTLY(int, cpu_rmid); > static inline struct rmid_entry *__rmid_entry(u32 rmid) Bah. Please add a new line between the DEFINE... and the function. But that whole thing is wrong. The per cpu default closid and rmid want to be in a single place, not in two distinct per cpu variables. struct rdt_cpu_default { u32 rmid; u32 closid; }; DEFINE_PER_CPU_READ_MOSTLY(struct rdt_cpu_default, rdt_cpu_default); or something like this. That way it's guaranteed that the context switch code touches a single cache line for the per cpu defaults. Thanks, tglx