Commit 6eeb7c5a authored by Mike Travis's avatar Mike Travis
Browse files

x86: update add-cpu_mask_to_apicid_and to use struct cpumask*



Impact: use updated APIs

Various API updates for x86:add-cpu_mask_to_apicid_and

(Note: separate because previous patch has been "backported" to 2.6.27.)

Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
Signed-off-by: default avatarMike Travis <travis@sgi.com>
parent 95d313cf
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -129,8 +129,8 @@ static inline unsigned int cpu_mask_to_apicid(const cpumask_t *cpumask)
	return apicid;
}

static inline unsigned int cpu_mask_to_apicid_and(const cpumask_t *cpumask,
						  const cpumask_t *andmask)
static inline unsigned int cpu_mask_to_apicid_and(const struct cpumask *cpumask,
						  const struct cpumask *andmask)
{
	int cpu;

@@ -138,8 +138,8 @@ static inline unsigned int cpu_mask_to_apicid_and(const cpumask_t *cpumask,
	 * We're using fixed IRQ delivery, can only return one phys APIC ID.
	 * May as well be the first.
	 */
	while ((cpu = next_cpu(-1, *cpumask)) < nr_cpu_ids)
		if (cpu_isset(cpu, *andmask))
	cpu = cpumask_any_and(cpumask, andmask);
	if (cpu < nr_cpu_ids)
		return cpu_to_logical_apicid(cpu);

	return BAD_APICID;
+10 −9
Original line number Diff line number Diff line
@@ -214,8 +214,8 @@ static inline unsigned int cpu_mask_to_apicid(const cpumask_t *cpumask)
	return apicid;
}

static inline unsigned int cpu_mask_to_apicid_and(const cpumask_t *cpumask,
						  const cpumask_t *andmask)
static inline unsigned int cpu_mask_to_apicid_and(const struct cpumask *cpumask,
						  const struct cpumask *andmask)
{
	int num_bits_set;
	int num_bits_set2;
@@ -223,9 +223,9 @@ static inline unsigned int cpu_mask_to_apicid_and(const cpumask_t *cpumask,
	int cpu;
	int apicid = 0;

	num_bits_set = cpus_weight(*cpumask);
	num_bits_set2 = cpus_weight(*andmask);
	num_bits_set = min_t(int, num_bits_set, num_bits_set2);
	num_bits_set = cpumask_weight(cpumask);
	num_bits_set2 = cpumask_weight(andmask);
	num_bits_set = min(num_bits_set, num_bits_set2);
	/* Return id to all */
	if (num_bits_set >= nr_cpu_ids)
#if defined CONFIG_ES7000_CLUSTERED_APIC
@@ -237,11 +237,12 @@ static inline unsigned int cpu_mask_to_apicid_and(const cpumask_t *cpumask,
	 * The cpus in the mask must all be on the apic cluster.  If are not
	 * on the same apicid cluster return default value of TARGET_CPUS.
	 */
	while ((cpu = next_cpu(-1, *cpumask)) < nr_cpu_ids)
		if (cpu_isset(cpu, *andmask)
	cpu = cpumask_first_and(cpumask, andmask);
	apicid = cpu_to_logical_apicid(cpu);

	while (cpus_found < num_bits_set) {
		if (cpu_isset(cpu, *cpumask) && cpu_isset(cpu, *andmask)) {
		if (cpumask_test_cpu(cpu, cpumask) &&
		    cpumask_test_cpu(cpu, andmask)) {
			int new_apicid = cpu_to_logical_apicid(cpu);
			if (apicid_cluster(apicid) !=
					apicid_cluster(new_apicid)) {
+2 −2
Original line number Diff line number Diff line
@@ -58,8 +58,8 @@ struct genapic {
	unsigned (*get_apic_id)(unsigned long x);
	unsigned long apic_id_mask;
	unsigned int (*cpu_mask_to_apicid)(const cpumask_t *cpumask);
	unsigned int (*cpu_mask_to_apicid_and)(const cpumask_t *cpumask,
					       const cpumask_t *andmask);
	unsigned int (*cpu_mask_to_apicid_and)(const struct cpumask *cpumask,
					       const struct cpumask *andmask);
	void (*vector_allocation_domain)(int cpu, cpumask_t *retmask);

#ifdef CONFIG_SMP
+2 −2
Original line number Diff line number Diff line
@@ -31,8 +31,8 @@ struct genapic {
	void (*send_IPI_self)(int vector);
	/* */
	unsigned int (*cpu_mask_to_apicid)(const cpumask_t *cpumask);
	unsigned int (*cpu_mask_to_apicid_and)(const cpumask_t *cpumask,
					       const cpumask_t *andmask);
	unsigned int (*cpu_mask_to_apicid_and)(const struct cpumask *cpumask,
					       const struct cpumask *andmask);
	unsigned int (*phys_pkg_id)(int index_msb);
	unsigned int (*get_apic_id)(unsigned long x);
	unsigned long (*set_apic_id)(unsigned int id);
+4 −4
Original line number Diff line number Diff line
@@ -67,11 +67,11 @@ static inline unsigned int cpu_mask_to_apicid(const cpumask_t *cpumask)
	return cpus_addr(*cpumask)[0];
}

static inline unsigned int cpu_mask_to_apicid(const cpumask_t *cpumask,
					      const cpumask_t *andmask)
static inline unsigned int cpu_mask_to_apicid_and(const struct cpumask *cpumask,
						  const struct cpumask *andmask)
{
	unsigned long mask1 = cpus_addr(*cpumask)[0];
	unsigned long mask2 = cpus_addr(*andmask)[0];
	unsigned long mask1 = cpumask_bits(cpumask)[0];
	unsigned long mask2 = cpumask_bits(andmask)[0];

	return (unsigned int)(mask1 & mask2);
}
Loading