From: Bodo Stroesser <bstroesser@fujitsu-siemens.com>
To: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Jeff Dike <jdike@addtoit.com>,
linux-kernel@vger.kernel.org,
user-mode-linux devel
<user-mode-linux-devel@lists.sourceforge.net>
Subject: Re: Again: UML on s390 (31Bit)
Date: Thu, 28 Apr 2005 11:54:17 +0200 [thread overview]
Message-ID: <4270B2C9.2030603@fujitsu-siemens.com> (raw)
In-Reply-To: <OF558C84FC.0C649F6F-ONC1256FF1.002D4CEF-C1256FF1.002F4B2C@de.ibm.com>
Martin Schwidefsky wrote:
> Bodo Stroesser <bstroesser@fujitsu-siemens.com> wrote on 04/27/2005
> 10:21:58 PM:
>>1) UML includes some of the subarch's (s390) headers. I had to
>> change one of them with the following one-liner, to make this
>> compile. AFAICS, this change doesn't break compilation of s390
>> itself.
>
>
> This one isn't a problem. I'll add it to the repository.
Thank you!
>
>
>>==============================================================================
>>--- linux-2.6.11.orig/arch/s390/kernel/ptrace.c 2005-04-04 18:57:
>>38.000000000 +0200
>>+++ linux-2.6.11/arch/s390/kernel/ptrace.c 2005-04-04 19:01:51.
>>000000000 +0200
>>@@ -726,6 +726,13 @@
>> ? 0x80 : 0));
>>
>> /*
>>+ * If debugger has set an invalid syscall number,
>>+ * we prepare to skip syscall restart handling
>>+ */
>>+ if (!entryexit && (long )regs->gprs[2] < 0 )
>>+ regs->trap = -1;
>>+
>>+ /*
>> * this isn't the same as continuing with a signal, but it will do
>> * for normal use. strace only continues with a signal if the
>> * stopping signal is not SIGTRAP. -brl
>>==============================================================================
>
>
> This patch is not good. !entryexit indicates that you want to change the trap
> indication on the first of the two calls of syscall_trace for a system call. The
> second condition is gprs[2] < 0 but that can be true for a normal system call as
> well, like sys_exit(-1).
Sorry, that's not right. At that point, gprs[2] holds the syscall number, while the
first argument of the syscall is in origgpr2. If the debugger sets the syscall number
to -1, which is an invalid syscall, changing trap to -1 will result in a changed
behavior only in case, that the debugger on the second syscall interception also sets
the syscall result to ERESTARTXXXXX (This again is modifying gprs[2]). ERESTARTXXXXX
normally would/could be handled by do_signal(), but with the patch it no longer will.
So, I think the patch doesn't hurt in normal cases, but does the trick for UML.
> It might even be true for user addresses if we really
> extent the virtual address space to full 64 bit one day (and the hardware can do
> it with a 5 level paging table). To change regs->trap to -1 with the current
> condition is definitly wrong.
> Independent from that it do not understand why you need it at all. If the
> uml host intercepted and invalidated the guest system call the system restart
> indication bit _TIF_RESTART_SVC shouldn't be set because the guest didn't
> execute a system call.
Let my explain a bit more. UML invalidates UML-user's syscalls on the host, processes
the syscall itself and inserts the result into gprs[2] on the second syscall
interception. For nearly all syscalls ERESTARTXXXXX is a result not returned to user,
but handled in UML kernel internally. But that's not true for sys_(rt_)sigreturn.
The "result" of those is the original contents of gpr2 of the interrupted routine,
which accidentally also might be ERESTARTXXXXXXX (BTW, that's the reason for
sys_(rt_)sigreturn setting trap to -1 also). We skip UML's syscall restart handling
in this case, but we need to skip it in the host, too.
>
> blue skies,
> Martin
>
> Martin Schwidefsky
> Linux for zSeries Development & Services
> IBM Deutschland Entwicklung GmbH
Regards, Bodo
next prev parent reply other threads:[~2005-04-28 9:54 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-27 20:21 Again: UML on s390 (31Bit) Bodo Stroesser
2005-04-28 8:36 ` Martin Schwidefsky
2005-04-28 9:54 ` Bodo Stroesser [this message]
2005-04-28 13:03 ` Martin Schwidefsky
2005-04-28 13:41 ` Bodo Stroesser
2005-04-28 15:02 ` [uml-devel] " Bodo Stroesser
2005-04-28 15:27 ` Martin Schwidefsky
2005-04-28 18:50 ` Bodo Stroesser
2005-04-29 11:47 ` Martin Schwidefsky
2005-04-29 12:47 ` Bodo Stroesser
-- strict thread matches above, loose matches on Subject: below --
2005-05-04 16:04 Martin Schwidefsky
2005-05-04 19:02 ` Bodo Stroesser
2005-05-04 21:33 Ulrich Weigand
2005-05-06 13:04 ` Bodo Stroesser
2005-05-13 15:07 ` Bodo Stroesser
2005-05-13 15:26 ` Martin Schwidefsky
2005-05-13 15:37 ` Bodo Stroesser
2005-05-13 15:40 ` Martin Schwidefsky
2005-05-13 15:45 ` Bodo Stroesser
2005-05-13 15:50 ` Martin Schwidefsky
2005-05-13 16:06 ` Bodo Stroesser
2005-05-20 10:09 ` Bodo Stroesser
2005-05-31 16:57 ` Martin Schwidefsky
2005-06-01 10:50 ` Bodo Stroesser
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=4270B2C9.2030603@fujitsu-siemens.com \
--to=bstroesser@fujitsu-siemens.com \
--cc=jdike@addtoit.com \
--cc=linux-kernel@vger.kernel.org \
--cc=schwidefsky@de.ibm.com \
--cc=user-mode-linux-devel@lists.sourceforge.net \
/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