[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 06/14] xen/asm-generic: introduce generic header percpu.h
On Tue, 2023-11-21 at 16:56 +0100, Jan Beulich wrote: > On 17.11.2023 13:24, Oleksii Kurochko wrote: > > --- a/xen/arch/ppc/include/asm/current.h > > +++ b/xen/arch/ppc/include/asm/current.h > > @@ -4,6 +4,8 @@ > > > > #include <xen/percpu.h> > > > > +#include <asm/processor.h> > > + > > #ifndef __ASSEMBLY__ > > > > struct vcpu; > > @@ -38,6 +40,10 @@ static inline struct cpu_info > > *get_cpu_info(void) > > > > #define guest_cpu_user_regs() (&get_cpu_info()- > > >guest_cpu_user_regs) > > > > +#define smp_processor_id() 0 /* TODO: Fix this */ > > + > > +#define get_per_cpu_offset() smp_processor_id() > > This 2nd item can't be quite right either, so likely also wants a > FIXME comment. > Shawn will have the ultimate say here anyway. I did so because it is how percpu stuff was implemented before get_per_cpu_offset was introduced. > > > --- a/xen/include/xen/percpu.h > > +++ b/xen/include/xen/percpu.h > > @@ -1,8 +1,6 @@ > > #ifndef __XEN_PERCPU_H__ > > #define __XEN_PERCPU_H__ > > > > -#include <asm/percpu.h> > > - > > #define DECLARE_PER_CPU(type, name) \ > > extern __typeof__(type) per_cpu__ ## name > > > > @@ -29,6 +27,8 @@ > > > > #define get_per_cpu_var(var) (per_cpu__##var) > > > > +#include <asm/percpu.h> > > + > > /* Linux compatibility. */ > > #define get_cpu_var(var) this_cpu(var) > > #define put_cpu_var(var) > > While you explain the reason for this movement, it still feels a > little > fragile to me. The reason for that is #include <asm/processor.h> was added to <asm/percpu.h>. <asm/processor.h> uses DECLARE_PER_CPU(...) so it should be defined before inclusion of <asm/percpu.h>. Otherwise the following error will occur: ./arch/riscv/include/asm/current.h:13:32: error: unknown type name 'curr_vcpu' 13 | DECLARE_PER_CPU(struct vcpu *, curr_vcpu); | ^~~~~~~~~ In file included from ././include/xen/config.h:17, from <command-line>: ./include/xen/sched.h: In function 'rcu_unlock_domain': ./include/asm-generic/percpu.h:19:19: error: 'per_cpu__curr_vcpu' undeclared (first use in this function) 19 | (*RELOC_HIDE(&per_cpu__##var, get_per_cpu_offset())) | ^~~~~~~~~ ./include/xen/compiler.h:146:37: note: in definition of macro 'RELOC_HIDE' 146 | __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ | ^~~ ./arch/riscv/include/asm/current.h:15:29: note: in expansion of macro 'this_cpu' 15 | #define current (this_cpu(curr_vcpu)) | ^~~~~~~~ ./include/xen/sched.h:726:15: note: in expansion of macro 'current' 726 | if ( d != current->domain ) | ^~~~~~~ ./include/asm-generic/percpu.h:19:19: note: each undeclared identifier is reported only once for each function it appears in 19 | (*RELOC_HIDE(&per_cpu__##var, get_per_cpu_offset())) | ^~~~~~~~~ ./include/xen/compiler.h:146:37: note: in definition of macro 'RELOC_HIDE' 146 | __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ | ^~~ ./arch/riscv/include/asm/current.h:15:29: note: in expansion of macro 'this_cpu' 15 | #define current (this_cpu(curr_vcpu)) | ^~~~~~~~ ./include/xen/sched.h:726:15: note: in expansion of macro 'current' 726 | if ( d != current->domain ) ~ Oleksii
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |