Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f13659e0b3907548402ce1f47bf866544b804260
Commit:     f13659e0b3907548402ce1f47bf866544b804260
Parent:     e7273d2a0841612794dff43328d461beee95c986
Author:     Anton Blanchard <[EMAIL PROTECTED]>
AuthorDate: Wed Mar 21 01:48:34 2007 +1100
Committer:  Paul Mackerras <[EMAIL PROTECTED]>
CommitDate: Fri Apr 27 21:13:28 2007 +1000

    [POWERPC] Fix WARN_ON when entering xmon
    
    Whenever we enter xmon we get a WARN_ON out of the rtas code since it
    thinks interrupts are still on:
    
    Unable to handle kernel paging request for data at address 0x00000000
    Faulting instruction address: 0xd000000000080008
    cpu 0x3: Vector: 300 (Data Access) at [c0000000075dba00]
        pc: d000000000080008: .doit+0x8/0x40 [oopser]
        lr: c000000000077704: .sys_init_module+0x1664/0x1824
        sp: c0000000075dbc80
       msr: 9000000000009032
       dar: 0
     dsisr: 42000000
      current = 0xc000000003fa64b0
      paca    = 0xc000000000694280
        pid   = 2260, comm = insmod
    
    ------------[ cut here ]------------
    Badness at arch/powerpc/kernel/entry_64.S:651
    Call Trace:
    [C0000000075DAE70] [C00000000000EB64] .show_stack+0x68/0x1b0 (unreliable)
    [C0000000075DAF10] [C000000000216254] .report_bug+0x94/0xe8
    [C0000000075DAFA0] [C00000000047B140] __kprobes_text_start+0x178/0x584
    [C0000000075DB040] [C0000000000044F4] program_check_common+0xf4/0x100
    
    Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>
---
 arch/powerpc/xmon/xmon.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
index f12687d..b481db1 100644
--- a/arch/powerpc/xmon/xmon.c
+++ b/arch/powerpc/xmon/xmon.c
@@ -330,18 +330,17 @@ static void release_output_lock(void)
 static int xmon_core(struct pt_regs *regs, int fromipi)
 {
        int cmd = 0;
-       unsigned long msr;
        struct bpt *bp;
        long recurse_jmp[JMP_BUF_LEN];
        unsigned long offset;
+       unsigned long flags;
 #ifdef CONFIG_SMP
        int cpu;
        int secondary;
        unsigned long timeout;
 #endif
 
-       msr = mfmsr();
-       mtmsr(msr & ~MSR_EE);   /* disable interrupts */
+       local_irq_save(flags);
 
        bp = in_breakpoint_table(regs->nip, &offset);
        if (bp != NULL) {
@@ -516,7 +515,7 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
 
        insert_cpu_bpts();
 
-       mtmsr(msr);             /* restore interrupt enable */
+       local_irq_restore(flags);
 
        return cmd != 'X' && cmd != EOF;
 }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to