lockdep: s390: connect the sysexit hook
Run the lockdep_sys_exit hook before returning to user space. Reviewed-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Peter Zijlstra
parent
10cd706d18
commit
523b44cff2
@@ -68,9 +68,15 @@ STACK_SIZE = 1 << STACK_SHIFT
|
|||||||
l %r1,BASED(.Ltrace_irq_off)
|
l %r1,BASED(.Ltrace_irq_off)
|
||||||
basr %r14,%r1
|
basr %r14,%r1
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro LOCKDEP_SYS_EXIT
|
||||||
|
l %r1,BASED(.Llockdep_sys_exit)
|
||||||
|
basr %r14,%r1
|
||||||
|
.endm
|
||||||
#else
|
#else
|
||||||
#define TRACE_IRQS_ON
|
#define TRACE_IRQS_ON
|
||||||
#define TRACE_IRQS_OFF
|
#define TRACE_IRQS_OFF
|
||||||
|
#define LOCKDEP_SYS_EXIT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -260,6 +266,7 @@ sysc_return:
|
|||||||
bno BASED(sysc_leave)
|
bno BASED(sysc_leave)
|
||||||
tm __TI_flags+3(%r9),_TIF_WORK_SVC
|
tm __TI_flags+3(%r9),_TIF_WORK_SVC
|
||||||
bnz BASED(sysc_work) # there is work to do (signals etc.)
|
bnz BASED(sysc_work) # there is work to do (signals etc.)
|
||||||
|
LOCKDEP_SYS_EXIT
|
||||||
sysc_leave:
|
sysc_leave:
|
||||||
RESTORE_ALL __LC_RETURN_PSW,1
|
RESTORE_ALL __LC_RETURN_PSW,1
|
||||||
|
|
||||||
@@ -283,6 +290,7 @@ sysc_work:
|
|||||||
bo BASED(sysc_restart)
|
bo BASED(sysc_restart)
|
||||||
tm __TI_flags+3(%r9),_TIF_SINGLE_STEP
|
tm __TI_flags+3(%r9),_TIF_SINGLE_STEP
|
||||||
bo BASED(sysc_singlestep)
|
bo BASED(sysc_singlestep)
|
||||||
|
LOCKDEP_SYS_EXIT
|
||||||
b BASED(sysc_leave)
|
b BASED(sysc_leave)
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -572,6 +580,7 @@ io_return:
|
|||||||
#endif
|
#endif
|
||||||
tm __TI_flags+3(%r9),_TIF_WORK_INT
|
tm __TI_flags+3(%r9),_TIF_WORK_INT
|
||||||
bnz BASED(io_work) # there is work to do (signals etc.)
|
bnz BASED(io_work) # there is work to do (signals etc.)
|
||||||
|
LOCKDEP_SYS_EXIT
|
||||||
io_leave:
|
io_leave:
|
||||||
RESTORE_ALL __LC_RETURN_PSW,0
|
RESTORE_ALL __LC_RETURN_PSW,0
|
||||||
io_done:
|
io_done:
|
||||||
@@ -618,6 +627,7 @@ io_work_loop:
|
|||||||
bo BASED(io_reschedule)
|
bo BASED(io_reschedule)
|
||||||
tm __TI_flags+3(%r9),(_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK)
|
tm __TI_flags+3(%r9),(_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK)
|
||||||
bnz BASED(io_sigpending)
|
bnz BASED(io_sigpending)
|
||||||
|
LOCKDEP_SYS_EXIT
|
||||||
b BASED(io_leave)
|
b BASED(io_leave)
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -1040,6 +1050,8 @@ cleanup_io_leave_insn:
|
|||||||
.Ltrace_irq_on: .long trace_hardirqs_on
|
.Ltrace_irq_on: .long trace_hardirqs_on
|
||||||
.Ltrace_irq_off:
|
.Ltrace_irq_off:
|
||||||
.long trace_hardirqs_off
|
.long trace_hardirqs_off
|
||||||
|
.Llockdep_sys_exit:
|
||||||
|
.long lockdep_sys_exit
|
||||||
#endif
|
#endif
|
||||||
.Lcritical_start:
|
.Lcritical_start:
|
||||||
.long __critical_start + 0x80000000
|
.long __critical_start + 0x80000000
|
||||||
|
@@ -66,9 +66,14 @@ _TIF_WORK_INT = (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK | _TIF_NEED_RESCHED | \
|
|||||||
.macro TRACE_IRQS_OFF
|
.macro TRACE_IRQS_OFF
|
||||||
brasl %r14,trace_hardirqs_off
|
brasl %r14,trace_hardirqs_off
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro LOCKDEP_SYS_EXIT
|
||||||
|
brasl %r14,lockdep_sys_exit
|
||||||
|
.endm
|
||||||
#else
|
#else
|
||||||
#define TRACE_IRQS_ON
|
#define TRACE_IRQS_ON
|
||||||
#define TRACE_IRQS_OFF
|
#define TRACE_IRQS_OFF
|
||||||
|
#define LOCKDEP_SYS_EXIT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
.macro STORE_TIMER lc_offset
|
.macro STORE_TIMER lc_offset
|
||||||
@@ -255,6 +260,7 @@ sysc_return:
|
|||||||
jno sysc_leave
|
jno sysc_leave
|
||||||
tm __TI_flags+7(%r9),_TIF_WORK_SVC
|
tm __TI_flags+7(%r9),_TIF_WORK_SVC
|
||||||
jnz sysc_work # there is work to do (signals etc.)
|
jnz sysc_work # there is work to do (signals etc.)
|
||||||
|
LOCKDEP_SYS_EXIT
|
||||||
sysc_leave:
|
sysc_leave:
|
||||||
RESTORE_ALL __LC_RETURN_PSW,1
|
RESTORE_ALL __LC_RETURN_PSW,1
|
||||||
|
|
||||||
@@ -278,6 +284,7 @@ sysc_work:
|
|||||||
jo sysc_restart
|
jo sysc_restart
|
||||||
tm __TI_flags+7(%r9),_TIF_SINGLE_STEP
|
tm __TI_flags+7(%r9),_TIF_SINGLE_STEP
|
||||||
jo sysc_singlestep
|
jo sysc_singlestep
|
||||||
|
LOCKDEP_SYS_EXIT
|
||||||
j sysc_leave
|
j sysc_leave
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -558,6 +565,7 @@ io_return:
|
|||||||
#endif
|
#endif
|
||||||
tm __TI_flags+7(%r9),_TIF_WORK_INT
|
tm __TI_flags+7(%r9),_TIF_WORK_INT
|
||||||
jnz io_work # there is work to do (signals etc.)
|
jnz io_work # there is work to do (signals etc.)
|
||||||
|
LOCKDEP_SYS_EXIT
|
||||||
io_leave:
|
io_leave:
|
||||||
RESTORE_ALL __LC_RETURN_PSW,0
|
RESTORE_ALL __LC_RETURN_PSW,0
|
||||||
io_done:
|
io_done:
|
||||||
@@ -605,6 +613,7 @@ io_work_loop:
|
|||||||
jo io_reschedule
|
jo io_reschedule
|
||||||
tm __TI_flags+7(%r9),(_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK)
|
tm __TI_flags+7(%r9),(_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK)
|
||||||
jnz io_sigpending
|
jnz io_sigpending
|
||||||
|
LOCKDEP_SYS_EXIT
|
||||||
j io_leave
|
j io_leave
|
||||||
|
|
||||||
#
|
#
|
||||||
|
Reference in New Issue
Block a user