Commit:     b771aeac32a320ac52bc227252103d7d7fc48cad
Parent:     2b3d8c9e06392d5539aa5d652f3a3c385fd19333
Author:     Heiko Carstens <[EMAIL PROTECTED]>
AuthorDate: Fri Jul 27 12:29:18 2007 +0200
Committer:  Martin Schwidefsky <[EMAIL PROTECTED]>
CommitDate: Fri Jul 27 12:29:19 2007 +0200

    [S390] Fix IRQ tracing.
    If a machine check is pending and the external or I/O interrupt handler
    returns to userspace io_mcck_pending is going to call s390_handle_mcck.
    Before this happens a call to TRACE_IRQS_ON was already made since we
    know that we are going back to userspace and hence interrupts will be
    enabled. So there was an indication that interrupts are enabled while
    in reality they are still disabled.
    s390_handle_mcck will do a local_irq_save/restore pair and confuse
    lockdep which later complains about inconsistent irq tracing.
    To solve this just call trace_hardirqs_off before calling
    s390_handle_mcck and trace_hardirqs_on afterwards.
    Signed-off-by: Heiko Carstens <[EMAIL PROTECTED]>
    Signed-off-by: Martin Schwidefsky <[EMAIL PROTECTED]>
 arch/s390/kernel/entry.S   |    6 ++++--
 arch/s390/kernel/entry64.S |    6 ++++--
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index bc7ff36..f3bceb1 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -624,9 +624,11 @@ io_work_loop:
 # _TIF_MCCK_PENDING is set, call handler
        l       %r1,BASED(.Ls390_handle_mcck)
-       la      %r14,BASED(io_work_loop)
-       br      %r1                     # TIF bit will be cleared by handler
+       basr    %r14,%r1                # TIF bit will be cleared by handler
+       b       BASED(io_work_loop)
 # _TIF_NEED_RESCHED is set, call schedule
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S
index 2a7b130..9c0d5cc 100644
--- a/arch/s390/kernel/entry64.S
+++ b/arch/s390/kernel/entry64.S
@@ -611,8 +611,10 @@ io_work_loop:
 # _TIF_MCCK_PENDING is set, call handler
-       larl    %r14,io_work_loop
-       jg      s390_handle_mcck        # TIF bit will be cleared by handler
+       brasl   %r14,s390_handle_mcck   # TIF bit will be cleared by handler
+       j       io_work_loop
 # _TIF_NEED_RESCHED is set, call schedule
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

Reply via email to