linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] OpenRISC clone3 support
@ 2020-03-01 21:38 Stafford Horne
  2020-03-01 21:38 ` [PATCH v2 1/3] openrisc: Convert copy_thread to copy_thread_tls Stafford Horne
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Stafford Horne @ 2020-03-01 21:38 UTC (permalink / raw)
  To: LKML; +Cc: Openrisc, Stafford Horne, Christian Brauner

This series fixes the clone3 not implemented warnings I have been seeing
during recent builds.  It was a simple case of implementing copy_thread_tls
and turning on clone3 generic support.  Testing shows no issues.

Changes since v1:

 - Fix some comments pointed out in reviews
 - Add Acks to 2/3 and 3/3 from Christian Brauner

Stafford Horne (3):
  openrisc: Convert copy_thread to copy_thread_tls
  openrisc: Enable the clone3 syscall
  openrisc: Cleanup copy_thread_tls docs and comments

 arch/openrisc/Kconfig                   |  1 +
 arch/openrisc/include/uapi/asm/unistd.h |  1 +
 arch/openrisc/kernel/process.c          | 18 ++++++------------
 3 files changed, 8 insertions(+), 12 deletions(-)

-- 
2.21.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 1/3] openrisc: Convert copy_thread to copy_thread_tls
  2020-03-01 21:38 [PATCH v2 0/3] OpenRISC clone3 support Stafford Horne
@ 2020-03-01 21:38 ` Stafford Horne
  2020-03-02  7:43   ` Christian Brauner
  2020-03-01 21:38 ` [PATCH v2 2/3] openrisc: Enable the clone3 syscall Stafford Horne
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Stafford Horne @ 2020-03-01 21:38 UTC (permalink / raw)
  To: LKML
  Cc: Openrisc, Stafford Horne, Jonas Bonn, Stefan Kristiansson,
	Christian Brauner, Greg Kroah-Hartman, Allison Randal,
	Thomas Gleixner

This is required for clone3 which passes the TLS value through a
struct rather than a register.

Signed-off-by: Stafford Horne <shorne@gmail.com>
---
 arch/openrisc/Kconfig          |  1 +
 arch/openrisc/kernel/process.c | 17 ++++++-----------
 2 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig
index 1928e061ff96..5debdbe6fc35 100644
--- a/arch/openrisc/Kconfig
+++ b/arch/openrisc/Kconfig
@@ -14,6 +14,7 @@ config OPENRISC
 	select HANDLE_DOMAIN_IRQ
 	select GPIOLIB
 	select HAVE_ARCH_TRACEHOOK
+	select HAVE_COPY_THREAD_TLS
 	select SPARSE_IRQ
 	select GENERIC_IRQ_CHIP
 	select GENERIC_IRQ_PROBE
diff --git a/arch/openrisc/kernel/process.c b/arch/openrisc/kernel/process.c
index b06f84f6676f..5caa47f7de4f 100644
--- a/arch/openrisc/kernel/process.c
+++ b/arch/openrisc/kernel/process.c
@@ -117,12 +117,13 @@ void release_thread(struct task_struct *dead_task)
 extern asmlinkage void ret_from_fork(void);
 
 /*
- * copy_thread
+ * copy_thread_tls
  * @clone_flags: flags
  * @usp: user stack pointer or fn for kernel thread
  * @arg: arg to fn for kernel thread; always NULL for userspace thread
  * @p: the newly created task
  * @regs: CPU context to copy for userspace thread; always NULL for kthread
+ * @tls: the Thread Local Storage pointer for the new process
  *
  * At the top of a newly initialized kernel stack are two stacked pt_reg
  * structures.  The first (topmost) is the userspace context of the thread.
@@ -148,8 +149,8 @@ extern asmlinkage void ret_from_fork(void);
  */
 
 int
-copy_thread(unsigned long clone_flags, unsigned long usp,
-	    unsigned long arg, struct task_struct *p)
+copy_thread_tls(unsigned long clone_flags, unsigned long usp,
+		unsigned long arg, struct task_struct *p, unsigned long tls)
 {
 	struct pt_regs *userregs;
 	struct pt_regs *kregs;
@@ -179,16 +180,10 @@ copy_thread(unsigned long clone_flags, unsigned long usp,
 			userregs->sp = usp;
 
 		/*
-		 * For CLONE_SETTLS set "tp" (r10) to the TLS pointer passed to sys_clone.
-		 *
-		 * The kernel entry is:
-		 *	int clone (long flags, void *child_stack, int *parent_tid,
-		 *		int *child_tid, struct void *tls)
-		 *
-		 * This makes the source r7 in the kernel registers.
+		 * For CLONE_SETTLS set "tp" (r10) to the TLS pointer.
 		 */
 		if (clone_flags & CLONE_SETTLS)
-			userregs->gpr[10] = userregs->gpr[7];
+			userregs->gpr[10] = tls;
 
 		userregs->gpr[11] = 0;	/* Result from fork() */
 
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 2/3] openrisc: Enable the clone3 syscall
  2020-03-01 21:38 [PATCH v2 0/3] OpenRISC clone3 support Stafford Horne
  2020-03-01 21:38 ` [PATCH v2 1/3] openrisc: Convert copy_thread to copy_thread_tls Stafford Horne
@ 2020-03-01 21:38 ` Stafford Horne
  2020-03-01 21:38 ` [PATCH v2 3/3] openrisc: Cleanup copy_thread_tls docs and comments Stafford Horne
  2020-03-02  7:44 ` [PATCH v2 0/3] OpenRISC clone3 support Christian Brauner
  3 siblings, 0 replies; 7+ messages in thread
From: Stafford Horne @ 2020-03-01 21:38 UTC (permalink / raw)
  To: LKML
  Cc: Openrisc, Stafford Horne, Christian Brauner, Jonas Bonn,
	Stefan Kristiansson, Christian Brauner

Enable the clone3 syscall for OpenRISC.  We use the generic version.

This was tested with the clone3 test from selftests.  Note, for all
tests to pass it required enabling CONFIG_NAMESPACES which is not
enabled in the default OpenRISC kernel config.

Signed-off-by: Stafford Horne <shorne@gmail.com>
Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
---
 arch/openrisc/include/uapi/asm/unistd.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/openrisc/include/uapi/asm/unistd.h b/arch/openrisc/include/uapi/asm/unistd.h
index 566f8c4f8047..fae34c60fa88 100644
--- a/arch/openrisc/include/uapi/asm/unistd.h
+++ b/arch/openrisc/include/uapi/asm/unistd.h
@@ -24,6 +24,7 @@
 #define __ARCH_WANT_SET_GET_RLIMIT
 #define __ARCH_WANT_SYS_FORK
 #define __ARCH_WANT_SYS_CLONE
+#define __ARCH_WANT_SYS_CLONE3
 #define __ARCH_WANT_TIME32_SYSCALLS
 
 #include <asm-generic/unistd.h>
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 3/3] openrisc: Cleanup copy_thread_tls docs and comments
  2020-03-01 21:38 [PATCH v2 0/3] OpenRISC clone3 support Stafford Horne
  2020-03-01 21:38 ` [PATCH v2 1/3] openrisc: Convert copy_thread to copy_thread_tls Stafford Horne
  2020-03-01 21:38 ` [PATCH v2 2/3] openrisc: Enable the clone3 syscall Stafford Horne
@ 2020-03-01 21:38 ` Stafford Horne
  2020-03-02  7:44 ` [PATCH v2 0/3] OpenRISC clone3 support Christian Brauner
  3 siblings, 0 replies; 7+ messages in thread
From: Stafford Horne @ 2020-03-01 21:38 UTC (permalink / raw)
  To: LKML
  Cc: Openrisc, Stafford Horne, Christian Brauner, Jonas Bonn,
	Stefan Kristiansson, Allison Randal, Greg Kroah-Hartman,
	Thomas Gleixner

Previously copy_thread_tls was copy_thread and before that something
else.  Remove the documentation about the regs parameter that didn't
exist in either version.

Next, fix comment wrapping and details about how TLS pointer gets to the
copy_thread_tls function.

Signed-off-by: Stafford Horne <shorne@gmail.com>
Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
---
 arch/openrisc/kernel/process.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/openrisc/kernel/process.c b/arch/openrisc/kernel/process.c
index 5caa47f7de4f..6bcdca424e11 100644
--- a/arch/openrisc/kernel/process.c
+++ b/arch/openrisc/kernel/process.c
@@ -122,7 +122,6 @@ extern asmlinkage void ret_from_fork(void);
  * @usp: user stack pointer or fn for kernel thread
  * @arg: arg to fn for kernel thread; always NULL for userspace thread
  * @p: the newly created task
- * @regs: CPU context to copy for userspace thread; always NULL for kthread
  * @tls: the Thread Local Storage pointer for the new process
  *
  * At the top of a newly initialized kernel stack are two stacked pt_reg
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/3] openrisc: Convert copy_thread to copy_thread_tls
  2020-03-01 21:38 ` [PATCH v2 1/3] openrisc: Convert copy_thread to copy_thread_tls Stafford Horne
@ 2020-03-02  7:43   ` Christian Brauner
  0 siblings, 0 replies; 7+ messages in thread
From: Christian Brauner @ 2020-03-02  7:43 UTC (permalink / raw)
  To: Stafford Horne
  Cc: LKML, Openrisc, Jonas Bonn, Stefan Kristiansson,
	Christian Brauner, Greg Kroah-Hartman, Allison Randal,
	Thomas Gleixner

On Mon, Mar 02, 2020 at 06:38:49AM +0900, Stafford Horne wrote:
> This is required for clone3 which passes the TLS value through a
> struct rather than a register.
> 
> Signed-off-by: Stafford Horne <shorne@gmail.com>

Thanks!
Acked-by: Christian Brauner <christian.brauner@ubuntu.com>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 0/3] OpenRISC clone3 support
  2020-03-01 21:38 [PATCH v2 0/3] OpenRISC clone3 support Stafford Horne
                   ` (2 preceding siblings ...)
  2020-03-01 21:38 ` [PATCH v2 3/3] openrisc: Cleanup copy_thread_tls docs and comments Stafford Horne
@ 2020-03-02  7:44 ` Christian Brauner
  2020-03-02  9:14   ` Stafford Horne
  3 siblings, 1 reply; 7+ messages in thread
From: Christian Brauner @ 2020-03-02  7:44 UTC (permalink / raw)
  To: Stafford Horne; +Cc: LKML, Openrisc, Christian Brauner

On Mon, Mar 02, 2020 at 06:38:48AM +0900, Stafford Horne wrote:
> This series fixes the clone3 not implemented warnings I have been seeing
> during recent builds.  It was a simple case of implementing copy_thread_tls
> and turning on clone3 generic support.  Testing shows no issues.
> 
> Changes since v1:
> 
>  - Fix some comments pointed out in reviews
>  - Add Acks to 2/3 and 3/3 from Christian Brauner

Excellent. I acked all individual patches now. But the whole series:

Acked-by: Christian Brauner <christian.brauner@ubuntu.com>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 0/3] OpenRISC clone3 support
  2020-03-02  7:44 ` [PATCH v2 0/3] OpenRISC clone3 support Christian Brauner
@ 2020-03-02  9:14   ` Stafford Horne
  0 siblings, 0 replies; 7+ messages in thread
From: Stafford Horne @ 2020-03-02  9:14 UTC (permalink / raw)
  To: Christian Brauner; +Cc: LKML, Openrisc, Christian Brauner

On Mon, Mar 02, 2020 at 08:44:11AM +0100, Christian Brauner wrote:
> On Mon, Mar 02, 2020 at 06:38:48AM +0900, Stafford Horne wrote:
> > This series fixes the clone3 not implemented warnings I have been seeing
> > during recent builds.  It was a simple case of implementing copy_thread_tls
> > and turning on clone3 generic support.  Testing shows no issues.
> > 
> > Changes since v1:
> > 
> >  - Fix some comments pointed out in reviews
> >  - Add Acks to 2/3 and 3/3 from Christian Brauner
> 
> Excellent. I acked all individual patches now. But the whole series:
> 
> Acked-by: Christian Brauner <christian.brauner@ubuntu.com>

Thanks a lot for the review.

-Stafford

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-03-02  9:14 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-01 21:38 [PATCH v2 0/3] OpenRISC clone3 support Stafford Horne
2020-03-01 21:38 ` [PATCH v2 1/3] openrisc: Convert copy_thread to copy_thread_tls Stafford Horne
2020-03-02  7:43   ` Christian Brauner
2020-03-01 21:38 ` [PATCH v2 2/3] openrisc: Enable the clone3 syscall Stafford Horne
2020-03-01 21:38 ` [PATCH v2 3/3] openrisc: Cleanup copy_thread_tls docs and comments Stafford Horne
2020-03-02  7:44 ` [PATCH v2 0/3] OpenRISC clone3 support Christian Brauner
2020-03-02  9:14   ` Stafford Horne

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).