Commit 65a4e574 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

smp, generic: introduce arch_disable_smp_support() instead of disable_ioapic_setup()



Impact: cleanup

disable_ioapic_setup() in init/main.c is ugly as the function is
x86-specific. The #ifdef inline prototype there is ugly too.

Replace it with a generic arch_disable_smp_support() function - which
has a weak alias for non-x86 architectures and for non-ioapic x86 builds.

Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent d8106d2e
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -143,15 +143,6 @@ extern int noioapicreroute;
/* 1 if the timer IRQ uses the '8259A Virtual Wire' mode */
extern int timer_through_8259;

static inline void disable_ioapic_setup(void)
{
#ifdef CONFIG_PCI
	noioapicquirk = 1;
	noioapicreroute = -1;
#endif
	skip_ioapic_setup = 1;
}

/*
 * If we use the IO-APIC for IRQ routing, disable automatic
 * assignment of PCI IRQ's.
+1 −3
Original line number Diff line number Diff line
@@ -1138,9 +1138,7 @@ void __cpuinit setup_local_APIC(void)
	int i, j;

	if (disable_apic) {
#ifdef CONFIG_X86_IO_APIC
		disable_ioapic_setup();
#endif
		arch_disable_smp_support();
		return;
	}

+10 −1
Original line number Diff line number Diff line
@@ -98,10 +98,19 @@ DECLARE_BITMAP(mp_bus_not_pci, MAX_MP_BUSSES);

int skip_ioapic_setup;

void arch_disable_smp_support(void)
{
#ifdef CONFIG_PCI
	noioapicquirk = 1;
	noioapicreroute = -1;
#endif
	skip_ioapic_setup = 1;
}

static int __init parse_noapic(char *str)
{
	/* disable IO-APIC */
	disable_ioapic_setup();
	arch_disable_smp_support();
	return 0;
}
early_param("noapic", parse_noapic);
+1 −1
Original line number Diff line number Diff line
@@ -1071,7 +1071,7 @@ static int __init smp_sanity_check(unsigned max_cpus)
		printk(KERN_ERR "... forcing use of dummy APIC emulation."
				"(tell your hw vendor)\n");
		smpboot_clear_io_apic();
		disable_ioapic_setup();
		arch_disable_smp_support();
		return -1;
	}

+6 −0
Original line number Diff line number Diff line
@@ -66,6 +66,12 @@ extern int __cpu_up(unsigned int cpunum);
 */
extern void smp_cpus_done(unsigned int max_cpus);

/*
 * Callback to arch code if there's nosmp or maxcpus=0 on the
 * boot command line:
 */
extern void arch_disable_smp_support(void);

/*
 * Call a function on all other processors
 */
Loading