Messages in this thread Patch in this message | | | Date | Mon, 17 Aug 2009 13:47:10 -0700 | From | Yinghai Lu <> | Subject | Re: [PATCH] x86: move dmar_table_init out of enable_IR |
| |
Suresh Siddha wrote: > On Mon, 2009-08-17 at 11:19 -0700, Yinghai Lu wrote: >> --- >> arch/x86/kernel/apic/apic.c | 22 +++++++++++++--------- >> 1 file changed, 13 insertions(+), 9 deletions(-) >> >> Index: linux-2.6/arch/x86/kernel/apic/apic.c >> =================================================================== >> --- linux-2.6.orig/arch/x86/kernel/apic/apic.c >> +++ linux-2.6/arch/x86/kernel/apic/apic.c >> @@ -1365,14 +1365,6 @@ void enable_x2apic(void) >> int __init enable_IR(void) >> { >> #ifdef CONFIG_INTR_REMAP >> - int ret; >> - >> - ret = dmar_table_init(); >> - if (ret) { >> - pr_debug("dmar_table_init() failed with %d:\n", ret); >> - return 0; >> - } >> - >> if (!intr_remapping_supported()) { >> pr_debug("intr-remapping not supported\n"); >> return 0; >> @@ -1400,6 +1392,14 @@ void __init enable_IR_x2apic(void) >> unsigned long flags; >> struct IO_APIC_route_entry **ioapic_entries = NULL; >> int ret, x2apic_enabled = 0; >> + int dmar_table_init_ret = 0; >> + >> +#ifdef CONFIG_INTR_REMAP >> + dmar_table_init_ret = dmar_table_init(); >> + if (dmar_table_init_ret) >> + pr_debug("dmar_table_init() failed with %d:\n", >> + dmar_table_init_ret); >> +#endif > > We can remove this ifdef check, as dmar_table_init() already handles > the !config_intr_remap > > Also, at this error condition, we should simply return if the cpu has no > x2apic support. There is no x2apic support and we failed to enable > interrupt-remapping. No need to go further down.
like this ?
--- arch/x86/kernel/apic/apic.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
Index: linux-2.6/arch/x86/kernel/apic/apic.c =================================================================== --- linux-2.6.orig/arch/x86/kernel/apic/apic.c +++ linux-2.6/arch/x86/kernel/apic/apic.c @@ -1392,14 +1392,11 @@ void __init enable_IR_x2apic(void) unsigned long flags; struct IO_APIC_route_entry **ioapic_entries = NULL; int ret, x2apic_enabled = 0; - int dmar_table_init_ret = 0; + int dmar_table_init_ret; -#ifdef CONFIG_INTR_REMAP dmar_table_init_ret = dmar_table_init(); - if (dmar_table_init_ret) - pr_debug("dmar_table_init() failed with %d:\n", - dmar_table_init_ret); -#endif + if (dmar_table_init_ret && !x2apic_supported()) + return; ioapic_entries = alloc_ioapic_entries(); if (!ioapic_entries) {
| |