From: Al Viro <viro@ZenIV.linux.org.uk>
To: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Haavard Skinnemoen <hskinnemoen@gmail.com>,
Mike Frysinger <vapier@gentoo.org>,
Jesper Nilsson <jesper.nilsson@axis.com>,
David Howells <dhowells@redhat.com>,
Tony Luck <tony.luck@intel.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Hirokazu Takata <takata@linux-m32r.org>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Michal Simek <monstr@monstr.eu>, Jonas Bonn <jonas@southpole.se>,
"James E.J. Bottomley" <jejb@parisc-linux.org>,
Richard Kuo <rkuo@codeaurora.org>,
Lennox Wu <lennox.wu@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Paul Mundt <lethal@linux-sh.org>, Chris Zankel <chris@zankel.net>,
Chris Metcalf <cmetcalf@tilera.com>,
Yoshinori Sato <ysato@users.sourceforge.jp>,
Guan Xuetao <gxt@mprc.pku.e>
Subject: Re: [update] Re: new execve/kernel_thread design
Date: Mon, 29 Oct 2012 13:25:21 +0000 [thread overview]
Message-ID: <20121029132521.GW2616@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20121029085339.0ea11bc6@mschwide>
On Mon, Oct 29, 2012 at 08:53:39AM +0100, Martin Schwidefsky wrote:
> Oops, sorry. I tested this weeks ago but it seems I never wrote a mail to
> indicate success. The current git kernel works just fine.
"Current git" being what? Linus' tree? linux-next? signal.git#arch-s390?
FWIW, the relevant diff against mainline is below, linux-next already
contains it.
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index 3f3d9ca..3cdc0f1 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -136,6 +136,7 @@ config S390
select KTIME_SCALAR if 32BIT
select HAVE_ARCH_SECCOMP_FILTER
select GENERIC_KERNEL_THREAD
+ select GENERIC_KERNEL_EXECVE
select HAVE_MOD_ARCH_SPECIFIC
select MODULES_USE_ELF_RELA
diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h
index bbbae41..ccbcab7 100644
--- a/arch/s390/include/asm/unistd.h
+++ b/arch/s390/include/asm/unistd.h
@@ -54,7 +54,6 @@
# define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
# endif
#define __ARCH_WANT_SYS_EXECVE
-#define __ARCH_WANT_KERNEL_EXECVE
/*
* "Conditional" syscalls
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index ef46f66..aa8f2ba 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -330,40 +330,18 @@ ENTRY(ret_from_fork)
la %r11,STACK_FRAME_OVERHEAD(%r15)
l %r12,__LC_THREAD_INFO
l %r13,__LC_SVC_NEW_PSW+4
- tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ?
- je 1f
l %r1,BASED(.Lschedule_tail)
basr %r14,%r1 # call schedule_tail
TRACE_IRQS_ON
ssm __LC_SVC_NEW_PSW # reenable interrupts
- j sysc_tracenogo
-
-1: # it's a kernel thread
- st %r15,__PT_R15(%r11) # store stack pointer for new kthread
- l %r1,BASED(.Lschedule_tail)
- basr %r14,%r1 # call schedule_tail
- TRACE_IRQS_ON
- ssm __LC_SVC_NEW_PSW # reenable interrupts
- lm %r9,%r11,__PT_R9(%r11) # load gprs
+ tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ?
+ jne sysc_tracenogo
+ # it's a kernel thread
+ lm %r9,%r10,__PT_R9(%r11) # load gprs
ENTRY(kernel_thread_starter)
la %r2,0(%r10)
basr %r14,%r9
- la %r2,0
- br %r11 # do_exit
-
-#
-# kernel_execve function needs to deal with pt_regs that is not
-# at the usual place
-#
-ENTRY(ret_from_kernel_execve)
- ssm __LC_PGM_NEW_PSW # disable I/O and ext. interrupts
- lr %r15,%r2
- lr %r11,%r2
- ahi %r15,-STACK_FRAME_OVERHEAD
- xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15)
- l %r12,__LC_THREAD_INFO
- ssm __LC_SVC_NEW_PSW # reenable interrupts
- j sysc_return
+ j sysc_tracenogo
/*
* Program check handler routine
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S
index 07d8de3..499e95e 100644
--- a/arch/s390/kernel/entry64.S
+++ b/arch/s390/kernel/entry64.S
@@ -352,33 +352,17 @@ sysc_tracenogo:
ENTRY(ret_from_fork)
la %r11,STACK_FRAME_OVERHEAD(%r15)
lg %r12,__LC_THREAD_INFO
- tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ?
- je 1f
brasl %r14,schedule_tail
TRACE_IRQS_ON
ssm __LC_SVC_NEW_PSW # reenable interrupts
- j sysc_tracenogo
-1: # it's a kernel thread
- stg %r15,__PT_R15(%r11) # store stack pointer for new kthread
- brasl %r14,schedule_tail
- TRACE_IRQS_ON
- ssm __LC_SVC_NEW_PSW # reenable interrupts
- lmg %r9,%r11,__PT_R9(%r11) # load gprs
+ tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ?
+ jne sysc_tracenogo
+ # it's a kernel thread
+ lmg %r9,%r10,__PT_R9(%r11) # load gprs
ENTRY(kernel_thread_starter)
la %r2,0(%r10)
basr %r14,%r9
- la %r2,0
- br %r11 # do_exit
-
-ENTRY(ret_from_kernel_execve)
- ssm __LC_PGM_NEW_PSW # disable I/O and ext. interrupts
- lgr %r15,%r2
- lgr %r11,%r2
- aghi %r15,-STACK_FRAME_OVERHEAD
- xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15)
- lg %r12,__LC_THREAD_INFO
- ssm __LC_SVC_NEW_PSW # reenable interrupts
- j sysc_return
+ j sysc_tracenogo
/*
* Program check handler routine
WARNING: multiple messages have this Message-ID (diff)
From: Al Viro <viro@ZenIV.linux.org.uk>
To: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Haavard Skinnemoen <hskinnemoen@gmail.com>,
Mike Frysinger <vapier@gentoo.org>,
Jesper Nilsson <jesper.nilsson@axis.com>,
David Howells <dhowells@redhat.com>,
Tony Luck <tony.luck@intel.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Hirokazu Takata <takata@linux-m32r.org>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Michal Simek <monstr@monstr.eu>, Jonas Bonn <jonas@southpole.se>,
"James E.J. Bottomley" <jejb@parisc-linux.org>,
Richard Kuo <rkuo@codeaurora.org>,
Lennox Wu <lennox.wu@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Paul Mundt <lethal@linux-sh.org>, Chris Zankel <chris@zankel.net>,
Chris Metcalf <cmetcalf@tilera.com>,
Yoshinori Sato <ysato@users.sourceforge.jp>,
Guan Xuetao <gxt@mprc.pku.edu.cn>
Subject: Re: [update] Re: new execve/kernel_thread design
Date: Mon, 29 Oct 2012 13:25:21 +0000 [thread overview]
Message-ID: <20121029132521.GW2616@ZenIV.linux.org.uk> (raw)
Message-ID: <20121029132521.0e-Q1DnHXgkOfcnyqYJeZLuss8vL0jBBvxhsfwRYQWw@z> (raw)
In-Reply-To: <20121029085339.0ea11bc6@mschwide>
On Mon, Oct 29, 2012 at 08:53:39AM +0100, Martin Schwidefsky wrote:
> Oops, sorry. I tested this weeks ago but it seems I never wrote a mail to
> indicate success. The current git kernel works just fine.
"Current git" being what? Linus' tree? linux-next? signal.git#arch-s390?
FWIW, the relevant diff against mainline is below, linux-next already
contains it.
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index 3f3d9ca..3cdc0f1 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -136,6 +136,7 @@ config S390
select KTIME_SCALAR if 32BIT
select HAVE_ARCH_SECCOMP_FILTER
select GENERIC_KERNEL_THREAD
+ select GENERIC_KERNEL_EXECVE
select HAVE_MOD_ARCH_SPECIFIC
select MODULES_USE_ELF_RELA
diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h
index bbbae41..ccbcab7 100644
--- a/arch/s390/include/asm/unistd.h
+++ b/arch/s390/include/asm/unistd.h
@@ -54,7 +54,6 @@
# define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
# endif
#define __ARCH_WANT_SYS_EXECVE
-#define __ARCH_WANT_KERNEL_EXECVE
/*
* "Conditional" syscalls
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S
index ef46f66..aa8f2ba 100644
--- a/arch/s390/kernel/entry.S
+++ b/arch/s390/kernel/entry.S
@@ -330,40 +330,18 @@ ENTRY(ret_from_fork)
la %r11,STACK_FRAME_OVERHEAD(%r15)
l %r12,__LC_THREAD_INFO
l %r13,__LC_SVC_NEW_PSW+4
- tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ?
- je 1f
l %r1,BASED(.Lschedule_tail)
basr %r14,%r1 # call schedule_tail
TRACE_IRQS_ON
ssm __LC_SVC_NEW_PSW # reenable interrupts
- j sysc_tracenogo
-
-1: # it's a kernel thread
- st %r15,__PT_R15(%r11) # store stack pointer for new kthread
- l %r1,BASED(.Lschedule_tail)
- basr %r14,%r1 # call schedule_tail
- TRACE_IRQS_ON
- ssm __LC_SVC_NEW_PSW # reenable interrupts
- lm %r9,%r11,__PT_R9(%r11) # load gprs
+ tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ?
+ jne sysc_tracenogo
+ # it's a kernel thread
+ lm %r9,%r10,__PT_R9(%r11) # load gprs
ENTRY(kernel_thread_starter)
la %r2,0(%r10)
basr %r14,%r9
- la %r2,0
- br %r11 # do_exit
-
-#
-# kernel_execve function needs to deal with pt_regs that is not
-# at the usual place
-#
-ENTRY(ret_from_kernel_execve)
- ssm __LC_PGM_NEW_PSW # disable I/O and ext. interrupts
- lr %r15,%r2
- lr %r11,%r2
- ahi %r15,-STACK_FRAME_OVERHEAD
- xc __SF_BACKCHAIN(4,%r15),__SF_BACKCHAIN(%r15)
- l %r12,__LC_THREAD_INFO
- ssm __LC_SVC_NEW_PSW # reenable interrupts
- j sysc_return
+ j sysc_tracenogo
/*
* Program check handler routine
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S
index 07d8de3..499e95e 100644
--- a/arch/s390/kernel/entry64.S
+++ b/arch/s390/kernel/entry64.S
@@ -352,33 +352,17 @@ sysc_tracenogo:
ENTRY(ret_from_fork)
la %r11,STACK_FRAME_OVERHEAD(%r15)
lg %r12,__LC_THREAD_INFO
- tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ?
- je 1f
brasl %r14,schedule_tail
TRACE_IRQS_ON
ssm __LC_SVC_NEW_PSW # reenable interrupts
- j sysc_tracenogo
-1: # it's a kernel thread
- stg %r15,__PT_R15(%r11) # store stack pointer for new kthread
- brasl %r14,schedule_tail
- TRACE_IRQS_ON
- ssm __LC_SVC_NEW_PSW # reenable interrupts
- lmg %r9,%r11,__PT_R9(%r11) # load gprs
+ tm __PT_PSW+1(%r11),0x01 # forking a kernel thread ?
+ jne sysc_tracenogo
+ # it's a kernel thread
+ lmg %r9,%r10,__PT_R9(%r11) # load gprs
ENTRY(kernel_thread_starter)
la %r2,0(%r10)
basr %r14,%r9
- la %r2,0
- br %r11 # do_exit
-
-ENTRY(ret_from_kernel_execve)
- ssm __LC_PGM_NEW_PSW # disable I/O and ext. interrupts
- lgr %r15,%r2
- lgr %r11,%r2
- aghi %r15,-STACK_FRAME_OVERHEAD
- xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15)
- lg %r12,__LC_THREAD_INFO
- ssm __LC_SVC_NEW_PSW # reenable interrupts
- j sysc_return
+ j sysc_tracenogo
/*
* Program check handler routine
next prev parent reply other threads:[~2012-10-29 13:25 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-16 22:35 new execve/kernel_thread design Al Viro
2012-10-17 5:32 ` Max Filippov
2012-10-17 5:43 ` Al Viro
2012-10-17 14:07 ` Jonas Bonn
2012-10-17 14:27 ` Michal Simek
2012-10-17 14:27 ` Michal Simek
2012-10-17 16:07 ` Al Viro
2012-10-17 16:07 ` Al Viro
2012-10-17 16:19 ` Al Viro
2012-10-17 16:19 ` Al Viro
2012-11-15 16:41 ` Michal Simek
2012-11-15 16:41 ` Michal Simek
2012-11-15 21:55 ` Al Viro
2012-11-15 21:55 ` Al Viro
2012-11-16 7:59 ` Michal Simek
2012-11-18 5:45 ` sigaltstack fun (was Re: new execve/kernel_thread design) Al Viro
2012-11-18 18:45 ` Linus Torvalds
2012-11-18 19:03 ` sigaltstack fun David Miller
2012-11-18 19:59 ` Al Viro
2012-11-18 20:48 ` David Miller
2012-11-19 4:55 ` Greg KH
2012-11-18 21:02 ` Al Viro
2012-11-18 21:18 ` David Miller
2012-11-19 1:10 ` Al Viro
2012-11-19 1:30 ` David Miller
2012-11-19 2:35 ` Al Viro
2012-11-19 3:27 ` David Miller
2012-11-26 5:10 ` Al Viro
2012-11-26 5:15 ` Al Viro
2012-12-04 3:03 ` David Miller
2012-12-04 2:58 ` David Miller
2012-11-21 1:53 ` sigaltstack fun (was Re: new execve/kernel_thread design) Al Viro
2012-10-19 15:49 ` new execve/kernel_thread design Al Viro
2012-10-19 17:16 ` Luck, Tony
2012-10-19 17:30 ` Al Viro
2012-10-19 18:01 ` Tony Luck
2012-10-19 18:33 ` Al Viro
2012-10-19 20:25 ` [PATCH] tile: support GENERIC_KERNEL_THREAD and GENERIC_KERNEL_EXECVE Chris Metcalf
2012-10-19 20:25 ` Chris Metcalf
2012-10-19 20:25 ` Chris Metcalf
2012-10-19 21:35 ` Al Viro
2012-10-20 13:06 ` Chris Metcalf
2012-10-20 13:06 ` Chris Metcalf
2012-10-20 15:34 ` Al Viro
2012-10-20 17:16 ` Al Viro
2012-10-23 17:30 ` Chris Metcalf
2012-10-23 17:30 ` Chris Metcalf
2012-10-23 18:41 ` Al Viro
2012-10-23 19:22 ` Chris Metcalf
2012-10-23 19:22 ` Chris Metcalf
2012-10-23 20:36 ` Al Viro
2012-10-25 13:31 ` Chris Metcalf
2012-10-25 13:31 ` Chris Metcalf
2012-10-25 14:25 ` Al Viro
2012-10-23 20:47 ` Thomas Gleixner
2012-10-23 20:51 ` Jeff King
2012-10-23 21:09 ` Catalin Marinas
2012-10-23 21:22 ` Jeff King
2012-10-24 11:18 ` Catalin Marinas
2012-10-23 21:25 ` Thomas Gleixner
2012-10-23 21:47 ` Jeff King
2012-10-23 22:06 ` Marc Gauthier
2012-10-23 22:23 ` Jeff King
2012-10-24 6:02 ` Johannes Sixt
2012-10-24 1:02 ` Linus Torvalds
2012-10-24 1:56 ` Al Viro
2012-10-24 2:14 ` Linus Torvalds
2012-10-24 6:02 ` Ingo Molnar
2012-10-23 17:30 ` [PATCH] arch/tile: eliminate pt_regs trampolines for syscalls Chris Metcalf
2012-10-23 17:30 ` Chris Metcalf
2012-10-22 14:23 ` [PATCH] tile: support GENERIC_KERNEL_THREAD and GENERIC_KERNEL_EXECVE Catalin Marinas
2012-10-25 16:54 ` new execve/kernel_thread design Richard Kuo
2012-10-26 18:31 ` [update] " Al Viro
2012-10-26 18:31 ` Al Viro
2012-10-27 3:32 ` Al Viro
2012-10-27 3:32 ` Al Viro
2012-10-29 7:53 ` Martin Schwidefsky
2012-10-29 7:53 ` Martin Schwidefsky
2012-10-29 13:25 ` Al Viro [this message]
2012-10-29 13:25 ` Al Viro
2012-10-29 14:38 ` Martin Schwidefsky
2012-10-29 14:38 ` Martin Schwidefsky
2012-10-29 14:57 ` Al Viro
2012-10-29 14:57 ` Al Viro
2012-12-07 22:23 ` Al Viro
2012-12-07 22:23 ` Al Viro
2012-12-08 2:40 ` Chris Metcalf
2012-12-08 2:40 ` Chris Metcalf
2012-12-08 2:40 ` Chris Metcalf
2012-12-13 1:54 ` Hirokazu Takata
2012-12-13 1:54 ` Hirokazu Takata
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=20121029132521.GW2616@ZenIV.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=benh@kernel.crashing.org \
--cc=catalin.marinas@arm.com \
--cc=chris@zankel.net \
--cc=cmetcalf@tilera.com \
--cc=davem@davemloft.net \
--cc=dhowells@redhat.com \
--cc=geert@linux-m68k.org \
--cc=gxt@mprc.pku.e \
--cc=hskinnemoen@gmail.com \
--cc=jejb@parisc-linux.org \
--cc=jesper.nilsson@axis.com \
--cc=jonas@southpole.se \
--cc=lennox.wu@gmail.com \
--cc=lethal@linux-sh.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=monstr@monstr.eu \
--cc=rkuo@codeaurora.org \
--cc=schwidefsky@de.ibm.com \
--cc=takata@linux-m32r.org \
--cc=tony.luck@intel.com \
--cc=torvalds@linux-foundation.org \
--cc=vapier@gentoo.org \
--cc=ysato@users.sourceforge.jp \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.