[PATCH -v2 6/8] kexec jump: fix for lockdep - Kernel

This is a discussion on [PATCH -v2 6/8] kexec jump: fix for lockdep - Kernel ; Replace local_irq_disable() with raw_local_irq_disable() to prevent lockdep complain. Signed-off-by: Huang Ying --- arch/x86/kernel/machine_kexec_32.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/arch/x86/kernel/machine_kexec_32.c +++ b/arch/x86/kernel/machine_kexec_32.c @@ -123,7 +123,7 @@ void machine_kexec(struct kimage *image) tracer_disable(); /* Interrupts aren't acceptable ...

+ Reply to Thread
Results 1 to 5 of 5

Thread: [PATCH -v2 6/8] kexec jump: fix for lockdep

  1. [PATCH -v2 6/8] kexec jump: fix for lockdep

    Replace local_irq_disable() with raw_local_irq_disable() to prevent
    lockdep complain.

    Signed-off-by: Huang Ying

    ---
    arch/x86/kernel/machine_kexec_32.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/arch/x86/kernel/machine_kexec_32.c
    +++ b/arch/x86/kernel/machine_kexec_32.c
    @@ -123,7 +123,7 @@ void machine_kexec(struct kimage *image)
    tracer_disable();

    /* Interrupts aren't acceptable while we reboot */
    - local_irq_disable();
    + raw_local_irq_disable();

    if (image->preserve_context) {
    #ifdef CONFIG_X86_IO_APIC


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

  2. Re: [PATCH -v2 6/8] kexec jump: fix for lockdep

    On Fri, 2008-08-08 at 14:52 +0800, Huang Ying wrote:
    > Replace local_irq_disable() with raw_local_irq_disable() to prevent
    > lockdep complain.



    Uhhm, please provide more information - just using raw_* to silence
    lockdep is generally the wrong thing to do.

    > Signed-off-by: Huang Ying
    >
    > ---
    > arch/x86/kernel/machine_kexec_32.c | 2 +-
    > 1 file changed, 1 insertion(+), 1 deletion(-)
    >
    > --- a/arch/x86/kernel/machine_kexec_32.c
    > +++ b/arch/x86/kernel/machine_kexec_32.c
    > @@ -123,7 +123,7 @@ void machine_kexec(struct kimage *image)
    > tracer_disable();
    >
    > /* Interrupts aren't acceptable while we reboot */
    > - local_irq_disable();
    > + raw_local_irq_disable();
    >
    > if (image->preserve_context) {
    > #ifdef CONFIG_X86_IO_APIC
    >
    >
    > --
    > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    > the body of a message to majordomo@vger.kernel.org
    > More majordomo info at http://vger.kernel.org/majordomo-info.html
    > Please read the FAQ at http://www.tux.org/lkml/


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

  3. Re: [PATCH -v2 6/8] kexec jump: fix for lockdep

    On Fri, 2008-08-08 at 12:13 +0200, Peter Zijlstra wrote:
    > On Fri, 2008-08-08 at 14:52 +0800, Huang Ying wrote:
    > > Replace local_irq_disable() with raw_local_irq_disable() to prevent
    > > lockdep complain.

    > Uhhm, please provide more information - just using raw_* to silence
    > lockdep is generally the wrong thing to do.


    In traditional kexec, the new kernel will replace current one, so the
    irq is simply disabled. But now jumping back from kexeced kernel is
    supported, so the irq should be enabled again.

    The code sequence of irq during kexec jump is as follow:

    local_irq_disable(); /* in kernel_kexec() */
    local_irq_disable(); /* in machine_kexec() */
    local_irq_enable(); /* in kernel_kexec() */

    The disable and enable is not match. Maybe another method is to use
    local_irq_save(), local_irq_restore() pair in machine_kexec(), so the
    disable and enable is matched.

    Best Regrards,
    Huang Ying


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

  4. Re: [PATCH -v2 6/8] kexec jump: fix for lockdep

    On Mon, 2008-08-11 at 08:59 +0800, Huang Ying wrote:
    > On Fri, 2008-08-08 at 12:13 +0200, Peter Zijlstra wrote:
    > > On Fri, 2008-08-08 at 14:52 +0800, Huang Ying wrote:
    > > > Replace local_irq_disable() with raw_local_irq_disable() to prevent
    > > > lockdep complain.

    > > Uhhm, please provide more information - just using raw_* to silence
    > > lockdep is generally the wrong thing to do.

    >
    > In traditional kexec, the new kernel will replace current one, so the
    > irq is simply disabled. But now jumping back from kexeced kernel is
    > supported, so the irq should be enabled again.
    >
    > The code sequence of irq during kexec jump is as follow:
    >
    > local_irq_disable(); /* in kernel_kexec() */
    > local_irq_disable(); /* in machine_kexec() */
    > local_irq_enable(); /* in kernel_kexec() */
    >
    > The disable and enable is not match. Maybe another method is to use
    > local_irq_save(), local_irq_restore() pair in machine_kexec(), so the
    > disable and enable is matched.


    And its the machine kernel's lockdep instance that goes complain?

    whichever annotation gets used - and I think I can agree that raw_*
    might be approriate there, this should be accompanied with a rather
    elaborate changelog and preferably a comment in the code too. Without
    such we'll be wondering in the years to come WTH happens here.


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

  5. Re: [PATCH -v2 6/8] kexec jump: fix for lockdep

    On Mon, 2008-08-11 at 08:09 +0200, Peter Zijlstra wrote:
    > On Mon, 2008-08-11 at 08:59 +0800, Huang Ying wrote:
    > > On Fri, 2008-08-08 at 12:13 +0200, Peter Zijlstra wrote:
    > > > On Fri, 2008-08-08 at 14:52 +0800, Huang Ying wrote:
    > > > > Replace local_irq_disable() with raw_local_irq_disable() to prevent
    > > > > lockdep complain.
    > > > Uhhm, please provide more information - just using raw_* to silence
    > > > lockdep is generally the wrong thing to do.

    > >
    > > In traditional kexec, the new kernel will replace current one, so the
    > > irq is simply disabled. But now jumping back from kexeced kernel is
    > > supported, so the irq should be enabled again.
    > >
    > > The code sequence of irq during kexec jump is as follow:
    > >
    > > local_irq_disable(); /* in kernel_kexec() */
    > > local_irq_disable(); /* in machine_kexec() */
    > > local_irq_enable(); /* in kernel_kexec() */
    > >
    > > The disable and enable is not match. Maybe another method is to use
    > > local_irq_save(), local_irq_restore() pair in machine_kexec(), so the
    > > disable and enable is matched.

    >
    > And its the machine kernel's lockdep instance that goes complain?
    >
    > whichever annotation gets used - and I think I can agree that raw_*
    > might be approriate there, this should be accompanied with a rather
    > elaborate changelog and preferably a comment in the code too. Without
    > such we'll be wondering in the years to come WTH happens here.


    Sorry, I find there is no complain from lockdep. Un-paired irq
    disable/enable has no problem with lockdep, just increase something such
    as "redundant_hardirqs_off". Please ignore this thread.

    Best Regards,
    Huang Ying


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

+ Reply to Thread