Re: [patch 4/6] x86: irqinit - merge native_init_IRQ

From: Cyrill Gorcunov
Date: Wed Apr 01 2009 - 12:39:18 EST


[Ingo Molnar - Wed, Apr 01, 2009 at 06:22:50PM +0200]
...
| > I just remember -- I thought about that and since
| > x86_quirk_pre_intr_init described as external BUT implemented for
| > x86-32 only I needed to indroduce new x86-64 versions for this
| > (and since I know that there no need to do anything else except
| > calling init_ISA_irqs I desided to have separate wrapper for
| > that).
| >
| > And btw x86-32 already has init_ISA_irqs call and quirks are used
| > in x86-32 mode only so for 64bit it will be just a not needed
| > check. Which means - I could just use original
| > x86_quirk_pre_intr_init function which will call all I need.
| >
| > Or you meant something else?
|
| The typical solution there is to make the entry NULL in the 64-bit
| case. All the quirk handlers are conditional like this:
|
| arch/x86/kernel/mpparse.c: if (x86_quirks->mpc_apic_id)
| arch/x86/kernel/mpparse.c: apicid = x86_quirks->mpc_apic_id(m);
|
| or am i missing something?
|
| Ingo
|

The problem is that

x86_quirk_pre_intr_init
x86_quirk_intr_init
...

are guarded by CONFIG_X86_32. So I thought
to call x86_quirk_pre_intr_init which is implemented
as following

void __init x86_quirk_pre_intr_init(void)
{
if (x86_quirks->arch_pre_intr_init) {
if (x86_quirks->arch_pre_intr_init())
return;
}
init_ISA_irqs();
}

-- it will call init_ISA_irqs for us. But as I said
it's bound by CONFIG_X86_32. So we could remove this
limitation and use these function on x86-64 as well
and don't call for x86_quirks->arch_pre_intr_init.

The only reason I didn't do that -- we test
if x86_quirks->arch_pre_intr_init is defined for
nothing -- it's always NULL on x86-64.

Another reason for that -- irqinit_32.c calls for
x86_quirk_pre_intr_init and using the same name
for x86-64 will make code a bit cleaner I believe.

Maybe I better post a patch for review -- it'll
say more then me with my english :) ?

Cyrill
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/