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

Commit 1371be0f authored by Rusty Russell's avatar Rusty Russell
Browse files

cpumask: Use cpu_*_mask accessors code: alpha



Impact: use new API, fix SMP bug.

Use the new accessors rather than frobbing bits directly.

This also removes the bug introduced in ee0c468b (alpha: compile
fixes) which had Alpha setting bits on an on-stack cpumask, not the
cpu_online_map.

Cc: Richard Henderson <rth@twiddle.net>
Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
Signed-off-by: default avatarMike Travis <travis@sgi.com>
Acked-by: default avatarIvan Kokshaysky <ink@jurassic.park.msu.ru>
Acked-by: default avatarIngo Molnar <mingo@elte.hu>
parent a0abd520
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -93,8 +93,8 @@ common_shutdown_1(void *generic_ptr)
	if (cpuid != boot_cpuid) {
		flags |= 0x00040000UL; /* "remain halted" */
		*pflags = flags;
		cpu_clear(cpuid, cpu_present_map);
		cpu_clear(cpuid, cpu_possible_map);
		set_cpu_present(cpuid, false);
		set_cpu_possible(cpuid, false);
		halt();
	}
#endif
@@ -120,8 +120,8 @@ common_shutdown_1(void *generic_ptr)

#ifdef CONFIG_SMP
	/* Wait for the secondaries to halt. */
	cpu_clear(boot_cpuid, cpu_present_map);
	cpu_clear(boot_cpuid, cpu_possible_map);
	set_cpu_present(boot_cpuid, false);
	set_cpu_possible(boot_cpuid, false);
	while (cpus_weight(cpu_present_map))
		barrier();
#endif
+6 −6
Original line number Diff line number Diff line
@@ -120,12 +120,12 @@ void __cpuinit
smp_callin(void)
{
	int cpuid = hard_smp_processor_id();
	cpumask_t mask = cpu_online_map;

	if (cpu_test_and_set(cpuid, mask)) {
	if (cpu_online(cpuid)) {
		printk("??, cpu 0x%x already present??\n", cpuid);
		BUG();
	}
	set_cpu_online(cpuid, true);

	/* Turn on machine checks.  */
	wrmces(7);
@@ -436,8 +436,8 @@ setup_smp(void)
				((char *)cpubase + i*hwrpb->processor_size);
			if ((cpu->flags & 0x1cc) == 0x1cc) {
				smp_num_probed++;
				cpu_set(i, cpu_possible_map);
				cpu_set(i, cpu_present_map);
				set_cpu_possible(i, true);
				set_cpu_present(i, true);
				cpu->pal_revision = boot_cpu_palrev;
			}

@@ -470,8 +470,8 @@ smp_prepare_cpus(unsigned int max_cpus)

	/* Nothing to do on a UP box, or when told not to.  */
	if (smp_num_probed == 1 || max_cpus == 0) {
		cpu_possible_map = cpumask_of_cpu(boot_cpuid);
		cpu_present_map = cpumask_of_cpu(boot_cpuid);
		init_cpu_possible(cpumask_of(boot_cpuid));
		init_cpu_present(cpumask_of(boot_cpuid));
		printk(KERN_INFO "SMP mode deactivated.\n");
		return;
	}