On Tue, Sep 23, 2008 at 12:30 PM, Jack Steiner <steiner@sgi.com> wrote:
early_acpi_boot_init ==> early_acpi_process_madt ==>
acpi_table_parse(ACPI_SIG_MADT, acpi_parse_madt) ==> acpi_parse_madt
==> acpi_madt_oem_check
==> at last
int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
{
int i;
for (i = 0; apic_probe[i]; ++i) {
if (apic_probe[i]->acpi_madt_oem_check(oem_id, oem_table_id)) {
genapic = apic_probe[i];
printk(KERN_INFO "Setting APIC routing to %s.\n",
genapic->name);
return 1;
}
}
return 0;
}
and
static struct genapic *apic_probe[] __initdata = {
&apic_x2apic_uv_x,
&apic_x2apic_phys,
&apic_x2apic_cluster,
&apic_physflat,
NULL,
};
so apic_x2apic_uv_x's uv_acpi_madt_oem_check is called at first.
YH
--