From: Martin Schwidefsky <schwidefsky@de.ibm.com>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Roland McGrath <roland@redhat.com>,
caiqian@redhat.com, Heiko Carstens <heiko.carstens@de.ibm.com>,
Jan Kratochvil <jkratoch@redhat.com>,
linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org,
utrace-devel@redhat.com, stable@kernel.org
Subject: Re: s390 && user_enable_single_step() (Was: odd utrace testing results on s390x)
Date: Tue, 26 Jan 2010 14:13:06 +0100 [thread overview]
Message-ID: <20100126141306.3cb60b14@mschwide.boeblingen.de.ibm.com> (raw)
In-Reply-To: <20100121205113.GB20050@redhat.com>
On Thu, 21 Jan 2010 21:51:13 +0100
Oleg Nesterov <oleg@redhat.com> wrote:
> On 01/07, Roland McGrath wrote:
> >
> > > I am confused as well. Yes, I thought about regs->psw.mask change too,
> > > but I don't understand why it helps..
> > [...]
> > > But. Acoording to the testing I did (unless I did something wrong
> > > again) this patch doesn't make any difference in this particular
> > > case. 6580807da14c423f0d0a708108e6df6ebc8bc83d does.
> >
> > Those results are quite mysterious to me.
> > I think we'll have to get Martin to sort it out definitively.
Finally nailed that one. Grrmpf.. the special case in the program check
handler for single stepped svcs clobbers the argument registers. With our
test case this affects the clone() system call. Funny things happen when
the clone_flags argument is more or less random ..
The following patch fixes the problem for me.
--
Subject: [PATCH] fix single stepped svcs with TRACE_IRQFLAGS=y
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
If irq flags tracing is enabled the TRACE_IRQS_ON macros expands to
a function call which clobbers registers %r0-%r5. The macro is used
in the code path for single stepped system calls. The argument
registers %r2-%r6 need to be restored from the stack before the system
call function is called.
Cc: stable@kernel.org
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
---
arch/s390/kernel/entry.S | 1 +
arch/s390/kernel/entry64.S | 1 +
2 files changed, 2 insertions(+)
diff -urpN linux-2.6/arch/s390/kernel/entry64.S linux-2.6-patched/arch/s390/kernel/entry64.S
--- linux-2.6/arch/s390/kernel/entry64.S 2009-12-03 04:51:21.000000000 +0100
+++ linux-2.6-patched/arch/s390/kernel/entry64.S 2010-01-26 14:04:58.000000000 +0100
@@ -549,6 +549,7 @@ pgm_svcper:
mvc __THREAD_per+__PER_access_id(1,%r8),__LC_PER_ACCESS_ID
oi __TI_flags+7(%r9),_TIF_SINGLE_STEP # set TIF_SINGLE_STEP
TRACE_IRQS_ON
+ lmg %r2,%r6,SP_R2(%r15) # load svc arguments
stosm __SF_EMPTY(%r15),0x03 # reenable interrupts
j sysc_do_svc
diff -urpN linux-2.6/arch/s390/kernel/entry.S linux-2.6-patched/arch/s390/kernel/entry.S
--- linux-2.6/arch/s390/kernel/entry.S 2009-12-03 04:51:21.000000000 +0100
+++ linux-2.6-patched/arch/s390/kernel/entry.S 2010-01-26 14:04:58.000000000 +0100
@@ -571,6 +571,7 @@ pgm_svcper:
mvc __THREAD_per+__PER_access_id(1,%r8),__LC_PER_ACCESS_ID
oi __TI_flags+3(%r9),_TIF_SINGLE_STEP # set TIF_SINGLE_STEP
TRACE_IRQS_ON
+ lm %r2,%r6,SP_R2(%r15) # load svc arguments
stosm __SF_EMPTY(%r15),0x03 # reenable interrupts
b BASED(sysc_do_svc)
--
blue skies,
Martin.
"Reality continues to ruin my life." - Calvin.
next prev parent reply other threads:[~2010-01-26 13:13 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1503844142.2061111261478093776.JavaMail.root@zmail06.collab.prod.int.phx2.redhat.com>
[not found] ` <1257887498.2061171261478252049.JavaMail.root@zmail06.collab.prod.int.phx2.redhat.com>
2010-01-04 15:52 ` s390 && user_enable_single_step() (Was: odd utrace testing results on s390x) Oleg Nesterov
2010-01-04 16:16 ` Martin Schwidefsky
2010-01-04 18:14 ` Oleg Nesterov
2010-01-04 19:30 ` Oleg Nesterov
2010-01-04 21:11 ` Roland McGrath
2010-01-05 9:50 ` Martin Schwidefsky
2010-01-05 15:36 ` Oleg Nesterov
2010-01-05 15:46 ` Martin Schwidefsky
2010-01-05 15:59 ` Oleg Nesterov
2010-01-05 17:03 ` Oleg Nesterov
2010-01-05 19:58 ` Oleg Nesterov
2010-01-06 14:59 ` Heiko Carstens
2010-01-06 20:17 ` Oleg Nesterov
2010-01-06 21:13 ` Roland McGrath
2010-01-07 9:18 ` Martin Schwidefsky
2010-01-07 17:54 ` Oleg Nesterov
2010-01-07 21:48 ` Roland McGrath
2010-01-21 20:51 ` Oleg Nesterov
2010-01-26 13:13 ` Martin Schwidefsky [this message]
2010-01-07 21:46 ` Roland McGrath
2010-01-08 8:30 ` Martin Schwidefsky
2010-01-08 10:25 ` Roland McGrath
2010-01-05 15:47 ` Oleg Nesterov
2010-01-05 15:50 ` Martin Schwidefsky
2010-01-06 21:08 ` Roland McGrath
2010-01-07 9:16 ` Martin Schwidefsky
2010-01-07 18:16 ` Oleg Nesterov
2010-01-07 21:44 ` Roland McGrath
2010-01-08 8:34 ` Martin Schwidefsky
2010-01-07 21:41 ` Roland McGrath
2010-01-07 18:11 ` Oleg Nesterov
2010-01-06 20:23 ` Oleg Nesterov
2010-01-06 20:56 ` Roland McGrath
2010-01-07 9:00 ` Martin Schwidefsky
2010-01-07 21:32 ` Roland McGrath
2010-01-21 20:32 ` Oleg Nesterov
2010-01-05 9:26 ` Martin Schwidefsky
2010-01-06 21:15 ` Roland McGrath
2010-01-04 20:46 ` Roland McGrath
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100126141306.3cb60b14@mschwide.boeblingen.de.ibm.com \
--to=schwidefsky@de.ibm.com \
--cc=caiqian@redhat.com \
--cc=heiko.carstens@de.ibm.com \
--cc=jkratoch@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=roland@redhat.com \
--cc=stable@kernel.org \
--cc=utrace-devel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox