X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fi386%2Fkernel%2Fmpparse.c;h=e5ad7e03fc7fed6b476cc2ed1ff8cd2c1ee19654;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=41cb82604f7f835c648ac13fbccce1a7c6ec130e;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c index 41cb82604..e5ad7e03f 100644 --- a/arch/i386/kernel/mpparse.c +++ b/arch/i386/kernel/mpparse.c @@ -309,8 +309,8 @@ static void __init MP_translation_info (struct mpc_config_translation *m) printk(KERN_ERR "MAX_MPC_ENTRY exceeded!\n"); else translation_table[mpc_record] = m; /* stash this for later */ - if (m->trans_quad+1 > numnodes) - numnodes = m->trans_quad+1; + if (m->trans_quad < MAX_NUMNODES && !node_online(m->trans_quad)) + node_set_online(m->trans_quad); } /* @@ -808,7 +808,6 @@ void __init find_smp_config (void) smp_scan_config(address, 0x400); } - /* -------------------------------------------------------------------------- ACPI-based MP Configuration -------------------------------------------------------------------------- */ @@ -996,6 +995,12 @@ void __init mp_config_acpi_legacy_irqs (void) mp_bus_id_to_type[MP_ISA_BUS] = MP_BUS_ISA; Dprintk("Bus #%d is ISA\n", MP_ISA_BUS); + /* + * ES7000 has no legacy identity mappings + */ + if (es7000_plat) + return; + /* * Locate the IOAPIC that manages the ISA IRQs (0-15). */ @@ -1049,9 +1054,7 @@ void __init mp_config_acpi_legacy_irqs (void) } } -int (*platform_rename_gsi)(int ioapic, int gsi); - -void mp_register_gsi (u32 gsi, int edge_level, int active_high_low) +int mp_register_gsi (u32 gsi, int edge_level, int active_high_low) { int ioapic = -1; int ioapic_pin = 0; @@ -1060,19 +1063,19 @@ void mp_register_gsi (u32 gsi, int edge_level, int active_high_low) #ifdef CONFIG_ACPI_BUS /* Don't set up the ACPI SCI because it's already set up */ if (acpi_fadt.sci_int == gsi) - return; + return gsi; #endif ioapic = mp_find_ioapic(gsi); if (ioapic < 0) { printk(KERN_WARNING "No IOAPIC for GSI %u\n", gsi); - return; + return gsi; } ioapic_pin = gsi - mp_ioapic_routing[ioapic].gsi_base; - if (platform_rename_gsi) - gsi = platform_rename_gsi(ioapic, gsi); + if (ioapic_renumber_irq) + gsi = ioapic_renumber_irq(ioapic, gsi); /* * Avoid pin reprogramming. PRTs typically include entries @@ -1085,12 +1088,12 @@ void mp_register_gsi (u32 gsi, int edge_level, int active_high_low) printk(KERN_ERR "Invalid reference to IOAPIC pin " "%d-%d\n", mp_ioapic_routing[ioapic].apic_id, ioapic_pin); - return; + return gsi; } if ((1<