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

Previous thread: [PATCH -v2 5/8] kexec jump: in sync with hibernation implementation by Huang Ying on Thursday, August 7, 2008 - 11:52 pm. (1 message)

Next thread: [PATCH -v2 7/8] kexec jump: ftrace_enabled_save/restore by Huang Ying on Thursday, August 7, 2008 - 11:52 pm. (7 messages)
From: Huang Ying
Date: Thursday, August 7, 2008 - 11:52 pm

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

Signed-off-by: Huang Ying <ying.huang@intel.com>

---
 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


--

From: Peter Zijlstra
Date: Friday, August 8, 2008 - 3:13 am

Uhhm, please provide more information - just using raw_* to silence

--

From: Huang Ying
Date: Sunday, August 10, 2008 - 5:59 pm

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


--

From: Peter Zijlstra
Date: Sunday, August 10, 2008 - 11:09 pm

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.


--

From: Huang Ying
Date: Sunday, August 10, 2008 - 11:32 pm

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


--

Previous thread: [PATCH -v2 5/8] kexec jump: in sync with hibernation implementation by Huang Ying on Thursday, August 7, 2008 - 11:52 pm. (1 message)

Next thread: [PATCH -v2 7/8] kexec jump: ftrace_enabled_save/restore by Huang Ying on Thursday, August 7, 2008 - 11:52 pm. (7 messages)