mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/genapic: patch indirect calls to direct ones
For (I hope) obvious reasons only the ones used at runtime get converted. Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Wei Liu <wei.liu2@citrix.com> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
0d6b9ab1c5
commit
c7ea45bc8b
2 files changed
+14
-4
No files matched your search
+2
-2
@@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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. \
|
||||
*/ \
|
||||
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)
|
||||
{
|
||||
|
||||