#include <asm/io_apic.h>
/* should be called last. */
-static __init int probe_default(void)
-{
- return 1;
-}
-
const struct genapic __initconstrel apic_default = {
- APIC_INIT("default", probe_default),
+ APIC_INIT("default", NULL),
GENAPIC_FLAT
};
struct genapic __read_mostly genapic;
-const struct genapic *const __initconstrel apic_probe[] = {
+static const struct genapic *const __initconstrel apic_probe[] = {
&apic_bigsmp,
&apic_default, /* must be last */
NULL,
void __init generic_apic_probe(void)
{
- bool changed;
int i;
record_boot_APIC_mode();
check_x2apic_preenabled();
- cmdline_apic = changed = !!genapic.name;
- for (i = 0; !changed && apic_probe[i]; i++) {
- if (apic_probe[i]->probe()) {
- changed = 1;
+ cmdline_apic = genapic.name;
+
+ for (i = 0; !genapic.name && apic_probe[i]; i++) {
+ if (!apic_probe[i]->probe || apic_probe[i]->probe())
genapic = *apic_probe[i];
- }
}
- if (!changed)
- genapic = apic_default;
+
+ BUG_ON(!genapic.name);
printk(KERN_INFO "Using APIC driver %s\n", genapic.name);
}