[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 6/9] x86/genapic: patch indirect calls to direct ones
On Tue, Sep 11, 2018 at 07:35:33AM -0600, Jan Beulich wrote: > For (I hope) obvious reasons only the ones used at runtime get > converted. > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > --- > v2: Drop open-coded numbers from macro invocations. > > --- a/xen/arch/x86/smp.c > +++ b/xen/arch/x86/smp.c > @@ -29,12 +29,12 @@ > > void send_IPI_mask(const cpumask_t *mask, int vector) > { > - genapic.send_IPI_mask(mask, vector); > + alternative_vcall(genapic.send_IPI_mask, mask, vector); > } > > void send_IPI_self(int vector) > { > - genapic.send_IPI_self(vector); > + alternative_vcall(genapic.send_IPI_self, vector); > } > > /* > --- a/xen/include/asm-x86/mach-generic/mach_apic.h > +++ b/xen/include/asm-x86/mach-generic/mach_apic.h > @@ -15,8 +15,18 @@ > #define TARGET_CPUS ((const typeof(cpu_online_map) *)&cpu_online_map) > #define init_apic_ldr (genapic.init_apic_ldr) > #define clustered_apic_check (genapic.clustered_apic_check) > -#define cpu_mask_to_apicid (genapic.cpu_mask_to_apicid) > -#define vector_allocation_cpumask(cpu) > (genapic.vector_allocation_cpumask(cpu)) > +#define cpu_mask_to_apicid(mask) ({ \ > + /* \ > + * There are a number of places where the address of a local variable \ > + * gets passed here. The use of ?: in alternative_call<N>() triggers an > \ > + * "address of ... is always true" warning in such a case with at least > \ > + * gcc 7 and 8. Hence the seemingly pointless local variable here. \ > + */ \ Is this still needed given you have brought back the middle operand in ?: in patch 1? Wei. > + const cpumask_t *m_ = (mask); \ > + alternative_call(genapic.cpu_mask_to_apicid, m_); \ > +}) > +#define vector_allocation_cpumask(cpu) \ > + alternative_call(genapic.vector_allocation_cpumask, cpu) > > static inline void enable_apic_mode(void) > { > > > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |