Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 91cd9cb7 authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

x86/apic: Move cpumask and to core code



All implementations of apic->cpu_mask_to_apicid_and() and the two incoming
cpumasks to search for the target.

Move that operation to the call site and rename it to cpu_mask_to_apicid()

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Keith Busch <keith.busch@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Christoph Hellwig <hch@lst.de>
Link: http://lkml.kernel.org/r/20170619235446.641575516@linutronix.de
parent 52b166af
Loading
Loading
Loading
Loading
+6 −9
Original line number Original line Diff line number Diff line
@@ -296,8 +296,7 @@ struct apic {
	/* Can't be NULL on 64-bit */
	/* Can't be NULL on 64-bit */
	unsigned long (*set_apic_id)(unsigned int id);
	unsigned long (*set_apic_id)(unsigned int id);


	int (*cpu_mask_to_apicid_and)(const struct cpumask *cpumask,
	int (*cpu_mask_to_apicid)(const struct cpumask *cpumask,
				      const struct cpumask *andmask,
				  unsigned int *apicid);
				  unsigned int *apicid);


	/* ipi */
	/* ipi */
@@ -540,11 +539,9 @@ static inline int default_phys_pkg_id(int cpuid_apic, int index_msb)


#endif
#endif


extern int flat_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
extern int flat_cpu_mask_to_apicid(const struct cpumask *cpumask,
				       const struct cpumask *andmask,
				   unsigned int *apicid);
				   unsigned int *apicid);
extern int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
extern int default_cpu_mask_to_apicid(const struct cpumask *cpumask,
					  const struct cpumask *andmask,
				      unsigned int *apicid);
				      unsigned int *apicid);


static inline void
static inline void
+4 −10
Original line number Original line Diff line number Diff line
@@ -2201,11 +2201,9 @@ void default_init_apic_ldr(void)
	apic_write(APIC_LDR, val);
	apic_write(APIC_LDR, val);
}
}


int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
int default_cpu_mask_to_apicid(const struct cpumask *mask, unsigned int *apicid)
				   const struct cpumask *andmask,
				   unsigned int *apicid)
{
{
	unsigned int cpu = cpumask_first_and(cpumask, andmask);
	unsigned int cpu = cpumask_first(mask);


	if (cpu >= nr_cpu_ids)
	if (cpu >= nr_cpu_ids)
		return -EINVAL;
		return -EINVAL;
@@ -2213,13 +2211,9 @@ int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
	return 0;
	return 0;
}
}


int flat_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
int flat_cpu_mask_to_apicid(const struct cpumask *mask, unsigned int *apicid)
				const struct cpumask *andmask,
				unsigned int *apicid)
{
{
	unsigned long cpu_mask = cpumask_bits(cpumask)[0] &
	unsigned long cpu_mask = cpumask_bits(mask)[0] & APIC_ALL_CPUS;
				 cpumask_bits(andmask)[0] &
				 APIC_ALL_CPUS;


	if (!cpu_mask)
	if (!cpu_mask)
		return -EINVAL;
		return -EINVAL;
+2 −2
Original line number Original line Diff line number Diff line
@@ -172,7 +172,7 @@ static struct apic apic_flat __ro_after_init = {
	.get_apic_id			= flat_get_apic_id,
	.get_apic_id			= flat_get_apic_id,
	.set_apic_id			= set_apic_id,
	.set_apic_id			= set_apic_id,


	.cpu_mask_to_apicid_and		= flat_cpu_mask_to_apicid_and,
	.cpu_mask_to_apicid		= flat_cpu_mask_to_apicid,


	.send_IPI			= default_send_IPI_single,
	.send_IPI			= default_send_IPI_single,
	.send_IPI_mask			= flat_send_IPI_mask,
	.send_IPI_mask			= flat_send_IPI_mask,
@@ -268,7 +268,7 @@ static struct apic apic_physflat __ro_after_init = {
	.get_apic_id			= flat_get_apic_id,
	.get_apic_id			= flat_get_apic_id,
	.set_apic_id			= set_apic_id,
	.set_apic_id			= set_apic_id,


	.cpu_mask_to_apicid_and		= default_cpu_mask_to_apicid_and,
	.cpu_mask_to_apicid		= default_cpu_mask_to_apicid,


	.send_IPI			= default_send_IPI_single_phys,
	.send_IPI			= default_send_IPI_single_phys,
	.send_IPI_mask			= default_send_IPI_mask_sequence_phys,
	.send_IPI_mask			= default_send_IPI_mask_sequence_phys,
+1 −1
Original line number Original line Diff line number Diff line
@@ -141,7 +141,7 @@ struct apic apic_noop __ro_after_init = {
	.get_apic_id			= noop_get_apic_id,
	.get_apic_id			= noop_get_apic_id,
	.set_apic_id			= NULL,
	.set_apic_id			= NULL,


	.cpu_mask_to_apicid_and		= flat_cpu_mask_to_apicid_and,
	.cpu_mask_to_apicid		= flat_cpu_mask_to_apicid,


	.send_IPI			= noop_send_IPI,
	.send_IPI			= noop_send_IPI,
	.send_IPI_mask			= noop_send_IPI_mask,
	.send_IPI_mask			= noop_send_IPI_mask,
+2 −2
Original line number Original line Diff line number Diff line
@@ -267,7 +267,7 @@ static const struct apic apic_numachip1 __refconst = {
	.get_apic_id			= numachip1_get_apic_id,
	.get_apic_id			= numachip1_get_apic_id,
	.set_apic_id			= numachip1_set_apic_id,
	.set_apic_id			= numachip1_set_apic_id,


	.cpu_mask_to_apicid_and		= default_cpu_mask_to_apicid_and,
	.cpu_mask_to_apicid		= default_cpu_mask_to_apicid,


	.send_IPI			= numachip_send_IPI_one,
	.send_IPI			= numachip_send_IPI_one,
	.send_IPI_mask			= numachip_send_IPI_mask,
	.send_IPI_mask			= numachip_send_IPI_mask,
@@ -318,7 +318,7 @@ static const struct apic apic_numachip2 __refconst = {
	.get_apic_id			= numachip2_get_apic_id,
	.get_apic_id			= numachip2_get_apic_id,
	.set_apic_id			= numachip2_set_apic_id,
	.set_apic_id			= numachip2_set_apic_id,


	.cpu_mask_to_apicid_and		= default_cpu_mask_to_apicid_and,
	.cpu_mask_to_apicid		= default_cpu_mask_to_apicid,


	.send_IPI			= numachip_send_IPI_one,
	.send_IPI			= numachip_send_IPI_one,
	.send_IPI_mask			= numachip_send_IPI_mask,
	.send_IPI_mask			= numachip_send_IPI_mask,
Loading