lkml.org 
[lkml]   [2010]   [Nov]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 1/2] dmar: fix fault interrupt setup
    From
    Date
    On Tue, 2010-11-30 at 00:30 -0800, Kenji Kaneshige wrote: 
    > Fix the problem dmar fault event is not notified in x2apic cluster mode.
    >
    > In the current code, dmar fault event is configured before setting up
    > the x86_cpu_to_logical_apicid percpu variable in x2apic cluster
    > mode. Because of this, invalid apic ID is used for dmar fault
    > interrupt and this cuases the problem.
    >
    > To fix the problem, do dmar fault event configuration after local apic
    > setup (after end_local_APIC_setup()).
    >
    > Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
    >
    >
    > ---
    > arch/x86/kernel/apic/apic.c | 9 +++++++++
    > arch/x86/kernel/apic/probe_64.c | 7 -------
    > 2 files changed, 9 insertions(+), 7 deletions(-)
    >
    > Index: linux-next-20101125/arch/x86/kernel/apic/apic.c
    > ===================================================================
    > --- linux-next-20101125.orig/arch/x86/kernel/apic/apic.c
    > +++ linux-next-20101125/arch/x86/kernel/apic/apic.c
    > @@ -1745,6 +1745,15 @@ int __init APIC_init_uniprocessor(void)
    >
    > end_local_APIC_setup();
    >
    > +#ifdef CONFIG_INTR_REMAP
    > + /*
    > + * Now that local APIC setup is completed, configure the fault
    > + * handling for interrupt remapping.
    > + */
    > + if (intr_remapping_enabled)
    > + enable_drhd_fault_handling();
    > +#endif

    BTW, this is wrong. APIC_init_uniprocessor() gets called only for UP
    kernel. I will move it to the end_local_APIC_setup()

    > +
    > #ifdef CONFIG_X86_IO_APIC
    > if (smp_found_config && !skip_ioapic_setup && nr_ioapics)
    > setup_IO_APIC();
    > Index: linux-next-20101125/arch/x86/kernel/apic/probe_64.c
    > ===================================================================
    > --- linux-next-20101125.orig/arch/x86/kernel/apic/probe_64.c
    > +++ linux-next-20101125/arch/x86/kernel/apic/probe_64.c
    > @@ -79,13 +79,6 @@ void __init default_setup_apic_routing(v
    > /* need to update phys_pkg_id */
    > apic->phys_pkg_id = apicid_phys_pkg_id;
    > }
    > -
    > - /*
    > - * Now that apic routing model is selected, configure the
    > - * fault handling for intr remapping.
    > - */
    > - if (intr_remapping_enabled)
    > - enable_drhd_fault_handling();
    > }
    >
    > /* Same for both flat and physical. */
    >
    >



    \
     
     \ /
      Last update: 2010-11-30 21:21    [W:0.023 / U:89.488 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site