From: Catalin Marinas <catalin.marinas@arm.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Al Viro <viro@zeniv.linux.org.uk>,
"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3 17/31] arm64: System calls handling
Date: Mon, 10 Sep 2012 16:50:33 +0100 [thread overview]
Message-ID: <20120910155033.GF27042@arm.com> (raw)
In-Reply-To: <201209101424.21344.arnd@arndb.de>
On Mon, Sep 10, 2012 at 03:24:21PM +0100, Arnd Bergmann wrote:
> On Monday 10 September 2012, Catalin Marinas wrote:
> >
> > On Mon, Sep 10, 2012 at 02:51:52PM +0100, Arnd Bergmann wrote:
> > > On Monday 10 September 2012, Catalin Marinas wrote:
> > > > Yes, I've seen these but since Al's patches are not in mainline, I don't
> > > > want to add additional dependencies to the arm64 patches (currently
> > > > based on 3.6-rc4). Once they get into mainline, I'll add a patch that
> > > > converts arm64 to the generic functions above.
> > > >
> > > > For kernel_execve(), I think I can simplify it further and not rely on
> > > > Al's patches (similar to other architectures doing an SVC from kernel):
> > >
> > > Hmm, I thought one of the reasons for Al to do his series was to discourage
> > > people from doing syscalls from kernel space, but I may be misremembering
> > > things. Al?
> >
> > If that was the aim, I'm happy to change the code similar to the
> > arch/arm one. But as I said I would wait until Al's patches get into
> > mainline.
>
> Ok. Another point: I wouldn't be too worried about dependencies for new
> code, because it's not possible to bisect through your series anyway
> (one needs all the patches before anything starts working really),
> so from my point of view you could also write your code in a way that
> expects Al's patches to get merged first.
It's not about bisectability but rather a way to test the branch that I
publish. On its own, my branch wouldn't even compile. Anyway, here's the
update (tested on a local branch with Al's execve2 branch merged):
arm64: Switch to generic sys_execve/kernel_execve
This patch converts the arm64 port to use the generic sys_execve and
kernel_execve() functions. It introduces the ret_from_kernel_execve()
function for starting the new user context and removes the
(compat_)sys_execve_wrapper() functions.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
diff --git a/arch/arm64/include/asm/syscalls.h b/arch/arm64/include/asm/syscalls.h
index 09ff335..81680a0 100644
--- a/arch/arm64/include/asm/syscalls.h
+++ b/arch/arm64/include/asm/syscalls.h
@@ -23,9 +23,6 @@
/*
* System call wrappers implemented in kernel/entry.S.
*/
-asmlinkage long sys_execve_wrapper(const char __user *filename,
- const char __user *const __user *argv,
- const char __user *const __user *envp);
asmlinkage long sys_clone_wrapper(unsigned long clone_flags,
unsigned long newsp,
void __user *parent_tid,
diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h
index fe18a68..948cfb1 100644
--- a/arch/arm64/include/asm/unistd.h
+++ b/arch/arm64/include/asm/unistd.h
@@ -24,4 +24,7 @@
#include <asm/unistd32.h>
#endif
+#define __ARCH_WANT_SYS_EXECVE
+#define __ARCH_WANT_KERNEL_EXECVE
+
#endif /* __ASM_UNISTD_H */
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
index 38cf853..5e0b28c 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -592,7 +592,7 @@ work_resched:
/*
* "slow" syscall return path.
*/
-ENTRY(ret_to_user)
+ret_to_user:
disable_irq // disable interrupts
ldr x1, [tsk, #TI_FLAGS]
and x2, x1, #_TIF_WORK_MASK
@@ -614,6 +614,22 @@ ENTRY(ret_from_fork)
ENDPROC(ret_from_fork)
/*
+ * ret_from_kernel_execve(struct pt_regs *normal, struct pt_regs *new)
+ *
+ * Turn a kernel thread into a user process.
+ */
+ENTRY(ret_from_kernel_execve)
+ str xzr, [x1, #S_X0] // returning 0
+ mov x2, #-1
+ str x2, [x1, #S_SYSCALLNO] // not a syscall
+ mov x2, #S_FRAME_SIZE
+ bl memmove // copy regs to the normal location
+ get_thread_info tsk
+ mov sp, x0 // normal pt_regs
+ b ret_to_user
+ENDPROC(ret_from_kernel_execve)
+
+/*
* SVC handler.
*/
.align 6
@@ -671,11 +687,6 @@ __sys_trace_return:
/*
* Special system call wrappers.
*/
-ENTRY(sys_execve_wrapper)
- mov x3, sp
- b sys_execve
-ENDPROC(sys_execve_wrapper)
-
ENTRY(sys_clone_wrapper)
mov x5, sp
b sys_clone
diff --git a/arch/arm64/kernel/sys.c b/arch/arm64/kernel/sys.c
index 905fcfb..9c77c0b 100644
--- a/arch/arm64/kernel/sys.c
+++ b/arch/arm64/kernel/sys.c
@@ -41,70 +41,6 @@ asmlinkage long sys_clone(unsigned long clone_flags, unsigned long newsp,
return do_fork(clone_flags, newsp, regs, 0, parent_tidptr, child_tidptr);
}
-/*
- * sys_execve() executes a new program.
- */
-asmlinkage long sys_execve(const char __user *filenamei,
- const char __user *const __user *argv,
- const char __user *const __user *envp,
- struct pt_regs *regs)
-{
- long error;
- char * filename;
-
- filename = getname(filenamei);
- error = PTR_ERR(filename);
- if (IS_ERR(filename))
- goto out;
- error = do_execve(filename, argv, envp, regs);
- putname(filename);
-out:
- return error;
-}
-
-int kernel_execve(const char *filename,
- const char *const argv[],
- const char *const envp[])
-{
- struct pt_regs regs;
- int ret;
-
- memset(®s, 0, sizeof(struct pt_regs));
- ret = do_execve(filename,
- (const char __user *const __user *)argv,
- (const char __user *const __user *)envp, ®s);
- if (ret < 0)
- goto out;
-
- /*
- * Save argc to the register structure for userspace.
- */
- regs.regs[0] = ret;
-
- /*
- * We were successful. We won't be returning to our caller, but
- * instead to user space by manipulating the kernel stack.
- */
- asm( "add x0, %0, %1\n\t"
- "mov x1, %2\n\t"
- "mov x2, %3\n\t"
- "bl memmove\n\t" /* copy regs to top of stack */
- "mov x27, #0\n\t" /* not a syscall */
- "mov x28, %0\n\t" /* thread structure */
- "mov sp, x0\n\t" /* reposition stack pointer */
- "b ret_to_user"
- :
- : "r" (current_thread_info()),
- "Ir" (THREAD_START_SP - sizeof(regs)),
- "r" (®s),
- "Ir" (sizeof(regs))
- : "x0", "x1", "x2", "x27", "x28", "x30", "memory");
-
- out:
- return ret;
-}
-EXPORT_SYMBOL(kernel_execve);
-
asmlinkage long sys_mmap(unsigned long addr, unsigned long len,
unsigned long prot, unsigned long flags,
unsigned long fd, off_t off)
@@ -118,7 +54,6 @@ asmlinkage long sys_mmap(unsigned long addr, unsigned long len,
/*
* Wrappers to pass the pt_regs argument.
*/
-#define sys_execve sys_execve_wrapper
#define sys_clone sys_clone_wrapper
#define sys_rt_sigreturn sys_rt_sigreturn_wrapper
#define sys_sigaltstack sys_sigaltstack_wrapper
diff --git a/arch/arm64/kernel/sys32.S b/arch/arm64/kernel/sys32.S
index 5e4dc93..903ba9d 100644
--- a/arch/arm64/kernel/sys32.S
+++ b/arch/arm64/kernel/sys32.S
@@ -36,11 +36,6 @@ compat_sys_vfork_wrapper:
b compat_sys_vfork
ENDPROC(compat_sys_vfork_wrapper)
-compat_sys_execve_wrapper:
- mov x3, sp
- b compat_sys_execve
-ENDPROC(compat_sys_execve_wrapper)
-
compat_sys_clone_wrapper:
mov x5, sp
b compat_sys_clone
@@ -152,7 +147,7 @@ ENDPROC(compat_sys_fanotify_mark_wrapper)
*/
#define sys_fork compat_sys_fork_wrapper
#define sys_open compat_sys_open
-#define sys_execve compat_sys_execve_wrapper
+#define sys_execve compat_sys_execve
#define sys_lseek compat_sys_lseek_wrapper
#define sys_mount compat_sys_mount
#define sys_ptrace compat_sys_ptrace
diff --git a/arch/arm64/kernel/sys_compat.c b/arch/arm64/kernel/sys_compat.c
index 967e92f..d77ba8e 100644
--- a/arch/arm64/kernel/sys_compat.c
+++ b/arch/arm64/kernel/sys_compat.c
@@ -51,24 +51,6 @@ asmlinkage int compat_sys_vfork(struct pt_regs *regs)
regs, 0, NULL, NULL);
}
-asmlinkage int compat_sys_execve(const char __user *filenamei,
- compat_uptr_t argv, compat_uptr_t envp,
- struct pt_regs *regs)
-{
- int error;
- char * filename;
-
- filename = getname(filenamei);
- error = PTR_ERR(filename);
- if (IS_ERR(filename))
- goto out;
- error = compat_do_execve(filename, compat_ptr(argv), compat_ptr(envp),
- regs);
- putname(filename);
-out:
- return error;
-}
-
asmlinkage int compat_sys_sched_rr_get_interval(compat_pid_t pid,
struct compat_timespec __user *interval)
{
WARNING: multiple messages have this Message-ID (diff)
From: catalin.marinas@arm.com (Catalin Marinas)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 17/31] arm64: System calls handling
Date: Mon, 10 Sep 2012 16:50:33 +0100 [thread overview]
Message-ID: <20120910155033.GF27042@arm.com> (raw)
In-Reply-To: <201209101424.21344.arnd@arndb.de>
On Mon, Sep 10, 2012 at 03:24:21PM +0100, Arnd Bergmann wrote:
> On Monday 10 September 2012, Catalin Marinas wrote:
> >
> > On Mon, Sep 10, 2012 at 02:51:52PM +0100, Arnd Bergmann wrote:
> > > On Monday 10 September 2012, Catalin Marinas wrote:
> > > > Yes, I've seen these but since Al's patches are not in mainline, I don't
> > > > want to add additional dependencies to the arm64 patches (currently
> > > > based on 3.6-rc4). Once they get into mainline, I'll add a patch that
> > > > converts arm64 to the generic functions above.
> > > >
> > > > For kernel_execve(), I think I can simplify it further and not rely on
> > > > Al's patches (similar to other architectures doing an SVC from kernel):
> > >
> > > Hmm, I thought one of the reasons for Al to do his series was to discourage
> > > people from doing syscalls from kernel space, but I may be misremembering
> > > things. Al?
> >
> > If that was the aim, I'm happy to change the code similar to the
> > arch/arm one. But as I said I would wait until Al's patches get into
> > mainline.
>
> Ok. Another point: I wouldn't be too worried about dependencies for new
> code, because it's not possible to bisect through your series anyway
> (one needs all the patches before anything starts working really),
> so from my point of view you could also write your code in a way that
> expects Al's patches to get merged first.
It's not about bisectability but rather a way to test the branch that I
publish. On its own, my branch wouldn't even compile. Anyway, here's the
update (tested on a local branch with Al's execve2 branch merged):
arm64: Switch to generic sys_execve/kernel_execve
This patch converts the arm64 port to use the generic sys_execve and
kernel_execve() functions. It introduces the ret_from_kernel_execve()
function for starting the new user context and removes the
(compat_)sys_execve_wrapper() functions.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
diff --git a/arch/arm64/include/asm/syscalls.h b/arch/arm64/include/asm/syscalls.h
index 09ff335..81680a0 100644
--- a/arch/arm64/include/asm/syscalls.h
+++ b/arch/arm64/include/asm/syscalls.h
@@ -23,9 +23,6 @@
/*
* System call wrappers implemented in kernel/entry.S.
*/
-asmlinkage long sys_execve_wrapper(const char __user *filename,
- const char __user *const __user *argv,
- const char __user *const __user *envp);
asmlinkage long sys_clone_wrapper(unsigned long clone_flags,
unsigned long newsp,
void __user *parent_tid,
diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h
index fe18a68..948cfb1 100644
--- a/arch/arm64/include/asm/unistd.h
+++ b/arch/arm64/include/asm/unistd.h
@@ -24,4 +24,7 @@
#include <asm/unistd32.h>
#endif
+#define __ARCH_WANT_SYS_EXECVE
+#define __ARCH_WANT_KERNEL_EXECVE
+
#endif /* __ASM_UNISTD_H */
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
index 38cf853..5e0b28c 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -592,7 +592,7 @@ work_resched:
/*
* "slow" syscall return path.
*/
-ENTRY(ret_to_user)
+ret_to_user:
disable_irq // disable interrupts
ldr x1, [tsk, #TI_FLAGS]
and x2, x1, #_TIF_WORK_MASK
@@ -614,6 +614,22 @@ ENTRY(ret_from_fork)
ENDPROC(ret_from_fork)
/*
+ * ret_from_kernel_execve(struct pt_regs *normal, struct pt_regs *new)
+ *
+ * Turn a kernel thread into a user process.
+ */
+ENTRY(ret_from_kernel_execve)
+ str xzr, [x1, #S_X0] // returning 0
+ mov x2, #-1
+ str x2, [x1, #S_SYSCALLNO] // not a syscall
+ mov x2, #S_FRAME_SIZE
+ bl memmove // copy regs to the normal location
+ get_thread_info tsk
+ mov sp, x0 // normal pt_regs
+ b ret_to_user
+ENDPROC(ret_from_kernel_execve)
+
+/*
* SVC handler.
*/
.align 6
@@ -671,11 +687,6 @@ __sys_trace_return:
/*
* Special system call wrappers.
*/
-ENTRY(sys_execve_wrapper)
- mov x3, sp
- b sys_execve
-ENDPROC(sys_execve_wrapper)
-
ENTRY(sys_clone_wrapper)
mov x5, sp
b sys_clone
diff --git a/arch/arm64/kernel/sys.c b/arch/arm64/kernel/sys.c
index 905fcfb..9c77c0b 100644
--- a/arch/arm64/kernel/sys.c
+++ b/arch/arm64/kernel/sys.c
@@ -41,70 +41,6 @@ asmlinkage long sys_clone(unsigned long clone_flags, unsigned long newsp,
return do_fork(clone_flags, newsp, regs, 0, parent_tidptr, child_tidptr);
}
-/*
- * sys_execve() executes a new program.
- */
-asmlinkage long sys_execve(const char __user *filenamei,
- const char __user *const __user *argv,
- const char __user *const __user *envp,
- struct pt_regs *regs)
-{
- long error;
- char * filename;
-
- filename = getname(filenamei);
- error = PTR_ERR(filename);
- if (IS_ERR(filename))
- goto out;
- error = do_execve(filename, argv, envp, regs);
- putname(filename);
-out:
- return error;
-}
-
-int kernel_execve(const char *filename,
- const char *const argv[],
- const char *const envp[])
-{
- struct pt_regs regs;
- int ret;
-
- memset(®s, 0, sizeof(struct pt_regs));
- ret = do_execve(filename,
- (const char __user *const __user *)argv,
- (const char __user *const __user *)envp, ®s);
- if (ret < 0)
- goto out;
-
- /*
- * Save argc to the register structure for userspace.
- */
- regs.regs[0] = ret;
-
- /*
- * We were successful. We won't be returning to our caller, but
- * instead to user space by manipulating the kernel stack.
- */
- asm( "add x0, %0, %1\n\t"
- "mov x1, %2\n\t"
- "mov x2, %3\n\t"
- "bl memmove\n\t" /* copy regs to top of stack */
- "mov x27, #0\n\t" /* not a syscall */
- "mov x28, %0\n\t" /* thread structure */
- "mov sp, x0\n\t" /* reposition stack pointer */
- "b ret_to_user"
- :
- : "r" (current_thread_info()),
- "Ir" (THREAD_START_SP - sizeof(regs)),
- "r" (®s),
- "Ir" (sizeof(regs))
- : "x0", "x1", "x2", "x27", "x28", "x30", "memory");
-
- out:
- return ret;
-}
-EXPORT_SYMBOL(kernel_execve);
-
asmlinkage long sys_mmap(unsigned long addr, unsigned long len,
unsigned long prot, unsigned long flags,
unsigned long fd, off_t off)
@@ -118,7 +54,6 @@ asmlinkage long sys_mmap(unsigned long addr, unsigned long len,
/*
* Wrappers to pass the pt_regs argument.
*/
-#define sys_execve sys_execve_wrapper
#define sys_clone sys_clone_wrapper
#define sys_rt_sigreturn sys_rt_sigreturn_wrapper
#define sys_sigaltstack sys_sigaltstack_wrapper
diff --git a/arch/arm64/kernel/sys32.S b/arch/arm64/kernel/sys32.S
index 5e4dc93..903ba9d 100644
--- a/arch/arm64/kernel/sys32.S
+++ b/arch/arm64/kernel/sys32.S
@@ -36,11 +36,6 @@ compat_sys_vfork_wrapper:
b compat_sys_vfork
ENDPROC(compat_sys_vfork_wrapper)
-compat_sys_execve_wrapper:
- mov x3, sp
- b compat_sys_execve
-ENDPROC(compat_sys_execve_wrapper)
-
compat_sys_clone_wrapper:
mov x5, sp
b compat_sys_clone
@@ -152,7 +147,7 @@ ENDPROC(compat_sys_fanotify_mark_wrapper)
*/
#define sys_fork compat_sys_fork_wrapper
#define sys_open compat_sys_open
-#define sys_execve compat_sys_execve_wrapper
+#define sys_execve compat_sys_execve
#define sys_lseek compat_sys_lseek_wrapper
#define sys_mount compat_sys_mount
#define sys_ptrace compat_sys_ptrace
diff --git a/arch/arm64/kernel/sys_compat.c b/arch/arm64/kernel/sys_compat.c
index 967e92f..d77ba8e 100644
--- a/arch/arm64/kernel/sys_compat.c
+++ b/arch/arm64/kernel/sys_compat.c
@@ -51,24 +51,6 @@ asmlinkage int compat_sys_vfork(struct pt_regs *regs)
regs, 0, NULL, NULL);
}
-asmlinkage int compat_sys_execve(const char __user *filenamei,
- compat_uptr_t argv, compat_uptr_t envp,
- struct pt_regs *regs)
-{
- int error;
- char * filename;
-
- filename = getname(filenamei);
- error = PTR_ERR(filename);
- if (IS_ERR(filename))
- goto out;
- error = compat_do_execve(filename, compat_ptr(argv), compat_ptr(envp),
- regs);
- putname(filename);
-out:
- return error;
-}
-
asmlinkage int compat_sys_sched_rr_get_interval(compat_pid_t pid,
struct compat_timespec __user *interval)
{
next prev parent reply other threads:[~2012-09-10 15:51 UTC|newest]
Thread overview: 232+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-07 16:26 [PATCH v3 00/31] AArch64 Linux kernel port Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 16:26 ` [PATCH v3 01/31] arm64: Assembly macros and definitions Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 16:26 ` [PATCH v3 02/31] arm64: Kernel booting and initialisation Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:07 ` Arnd Bergmann
2012-09-07 19:07 ` Arnd Bergmann
2012-09-09 17:20 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-09 17:20 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-09 23:29 ` Nicolas Pitre
2012-09-09 23:29 ` Nicolas Pitre
2012-09-10 5:53 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-10 5:53 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-10 12:51 ` Catalin Marinas
2012-09-10 12:51 ` Catalin Marinas
2012-09-10 13:53 ` Arnd Bergmann
2012-09-10 13:53 ` Arnd Bergmann
2012-09-10 14:12 ` Nicolas Pitre
2012-09-10 14:12 ` Nicolas Pitre
2012-09-10 14:48 ` Arnd Bergmann
2012-09-10 14:48 ` Arnd Bergmann
2012-09-10 14:48 ` Arnd Bergmann
2012-09-10 14:53 ` Catalin Marinas
2012-09-10 14:53 ` Catalin Marinas
2012-09-10 15:00 ` Nicolas Pitre
2012-09-10 15:00 ` Nicolas Pitre
2012-09-10 15:21 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-10 15:21 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-10 15:21 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-10 16:08 ` Catalin Marinas
2012-09-10 16:08 ` Catalin Marinas
2012-09-10 16:29 ` Nicolas Pitre
2012-09-10 16:29 ` Nicolas Pitre
2012-09-10 20:28 ` Jon Masters
2012-09-10 20:28 ` Jon Masters
2012-09-10 16:11 ` Catalin Marinas
2012-09-10 16:11 ` Catalin Marinas
2012-09-12 12:08 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-12 12:08 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-12 13:49 ` Catalin Marinas
2012-09-12 13:49 ` Catalin Marinas
2012-09-13 15:56 ` Christopher Covington
2012-09-13 15:56 ` Christopher Covington
2012-09-13 17:11 ` Catalin Marinas
2012-09-13 17:11 ` Catalin Marinas
2012-09-07 16:26 ` [PATCH v3 03/31] arm64: Exception handling Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:09 ` Arnd Bergmann
2012-09-07 19:09 ` Arnd Bergmann
2012-09-07 16:26 ` [PATCH v3 04/31] arm64: MMU definitions Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:10 ` Arnd Bergmann
2012-09-07 19:10 ` Arnd Bergmann
2012-09-07 16:26 ` [PATCH v3 05/31] arm64: MMU initialisation Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:10 ` Arnd Bergmann
2012-09-07 19:10 ` Arnd Bergmann
2012-09-07 16:26 ` [PATCH v3 06/31] arm64: MMU fault handling and page table management Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:11 ` Arnd Bergmann
2012-09-07 19:11 ` Arnd Bergmann
2012-09-07 16:26 ` [PATCH v3 07/31] arm64: Process management Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:20 ` Arnd Bergmann
2012-09-07 19:20 ` Arnd Bergmann
2012-09-07 16:26 ` [PATCH v3 08/31] arm64: CPU support Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:24 ` Arnd Bergmann
2012-09-07 19:24 ` Arnd Bergmann
2012-09-10 16:43 ` Catalin Marinas
2012-09-10 16:43 ` Catalin Marinas
2012-09-07 16:26 ` [PATCH v3 09/31] arm64: Cache maintenance routines Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:28 ` Arnd Bergmann
2012-09-07 19:28 ` Arnd Bergmann
2012-09-10 16:48 ` Catalin Marinas
2012-09-10 16:48 ` Catalin Marinas
2012-09-10 17:29 ` Nicolas Pitre
2012-09-10 17:29 ` Nicolas Pitre
2012-09-14 16:53 ` Catalin Marinas
2012-09-14 16:53 ` Catalin Marinas
2012-09-07 19:35 ` Simon Baatz
2012-09-07 19:35 ` Simon Baatz
2012-09-12 9:29 ` Catalin Marinas
2012-09-12 9:29 ` Catalin Marinas
2012-09-12 21:55 ` Simon Baatz
2012-09-12 21:55 ` Simon Baatz
2012-09-13 12:38 ` Catalin Marinas
2012-09-13 12:38 ` Catalin Marinas
2012-09-13 20:14 ` Simon Baatz
2012-09-13 20:14 ` Simon Baatz
2012-09-07 16:26 ` [PATCH v3 10/31] arm64: TLB maintenance functionality Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:28 ` Arnd Bergmann
2012-09-07 19:28 ` Arnd Bergmann
2012-09-07 16:26 ` [PATCH v3 11/31] arm64: IRQ handling Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:37 ` Arnd Bergmann
2012-09-07 19:37 ` Arnd Bergmann
2012-09-12 10:24 ` Catalin Marinas
2012-09-12 10:24 ` Catalin Marinas
2012-09-07 16:26 ` [PATCH v3 12/31] arm64: Atomic operations Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:37 ` Arnd Bergmann
2012-09-07 19:37 ` Arnd Bergmann
2012-09-07 16:26 ` [PATCH v3 13/31] arm64: Device specific operations Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 16:26 ` [PATCH v3 14/31] arm64: DMA mapping API Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:38 ` Arnd Bergmann
2012-09-07 19:38 ` Arnd Bergmann
2012-09-07 16:26 ` [PATCH v3 15/31] arm64: SMP support Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:39 ` Arnd Bergmann
2012-09-07 19:39 ` Arnd Bergmann
2015-08-06 0:46 ` Timur Tabi
2015-08-06 9:56 ` Catalin Marinas
2015-08-10 11:00 ` Hanjun Guo
2015-08-10 17:05 ` Timur Tabi
2015-08-21 16:45 ` Timur Tabi
2015-08-24 12:14 ` Hanjun Guo
2015-08-27 22:15 ` Timur Tabi
2012-09-07 16:26 ` [PATCH v3 16/31] arm64: ELF definitions Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:40 ` Arnd Bergmann
2012-09-07 19:40 ` Arnd Bergmann
2012-09-07 16:26 ` [PATCH v3 17/31] arm64: System calls handling Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:43 ` Arnd Bergmann
2012-09-07 19:43 ` Arnd Bergmann
2012-09-07 19:54 ` Al Viro
2012-09-07 19:54 ` Al Viro
2012-09-10 9:56 ` Catalin Marinas
2012-09-10 9:56 ` Catalin Marinas
2012-09-10 13:51 ` Arnd Bergmann
2012-09-10 13:51 ` Arnd Bergmann
2012-09-10 14:01 ` Catalin Marinas
2012-09-10 14:01 ` Catalin Marinas
2012-09-10 14:24 ` Arnd Bergmann
2012-09-10 14:24 ` Arnd Bergmann
2012-09-10 15:50 ` Catalin Marinas [this message]
2012-09-10 15:50 ` Catalin Marinas
2012-09-07 16:26 ` [PATCH v3 18/31] arm64: VDSO support Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:44 ` Arnd Bergmann
2012-09-07 19:44 ` Arnd Bergmann
2012-09-07 16:26 ` [PATCH v3 19/31] arm64: Signal handling support Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 16:26 ` [PATCH v3 20/31] arm64: User access library functions Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:46 ` Arnd Bergmann
2012-09-07 19:46 ` Arnd Bergmann
2012-09-07 16:26 ` [PATCH v3 21/31] arm64: 32-bit (compat) applications support Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:47 ` Arnd Bergmann
2012-09-07 19:47 ` Arnd Bergmann
2012-09-13 9:07 ` Catalin Marinas
2012-09-13 9:07 ` Catalin Marinas
2012-09-13 9:07 ` Catalin Marinas
2012-09-13 11:03 ` Arnd Bergmann
2012-09-13 11:03 ` Arnd Bergmann
2012-09-13 15:50 ` Catalin Marinas
2012-09-13 15:50 ` Catalin Marinas
2012-09-13 15:50 ` Catalin Marinas
2012-09-07 16:26 ` [PATCH v3 22/31] arm64: Floating point and SIMD Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 16:26 ` [PATCH v3 23/31] arm64: Debugging support Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 19:49 ` Arnd Bergmann
2012-09-07 19:49 ` Arnd Bergmann
2012-09-07 16:26 ` [PATCH v3 24/31] arm64: Add support for /proc/sys/debug/exception-trace Catalin Marinas
2012-09-07 16:26 ` Catalin Marinas
2012-09-07 16:27 ` [PATCH v3 25/31] arm64: Performance counters support Catalin Marinas
2012-09-07 16:27 ` Catalin Marinas
2012-09-07 16:27 ` [PATCH v3 26/31] arm64: Miscellaneous library functions Catalin Marinas
2012-09-07 16:27 ` Catalin Marinas
2012-09-07 19:52 ` Arnd Bergmann
2012-09-07 19:52 ` Arnd Bergmann
2012-09-12 21:12 ` Catalin Marinas
2012-09-12 21:12 ` Catalin Marinas
2012-09-12 21:12 ` Catalin Marinas
2012-09-13 10:48 ` Arnd Bergmann
2012-09-13 10:48 ` Arnd Bergmann
2012-09-07 16:27 ` [PATCH v3 27/31] arm64: Loadable modules Catalin Marinas
2012-09-07 16:27 ` Catalin Marinas
2012-09-07 19:52 ` Arnd Bergmann
2012-09-07 19:52 ` Arnd Bergmann
2012-09-07 16:27 ` [PATCH v3 28/31] arm64: Generic timers support Catalin Marinas
2012-09-07 16:27 ` Catalin Marinas
2012-09-07 19:53 ` Arnd Bergmann
2012-09-07 19:53 ` Arnd Bergmann
2012-09-08 8:28 ` Shilimkar, Santosh
2012-09-08 8:28 ` Shilimkar, Santosh
2012-09-08 8:28 ` Shilimkar, Santosh
2012-09-07 16:27 ` [PATCH v3 29/31] arm64: Miscellaneous header files Catalin Marinas
2012-09-07 16:27 ` Catalin Marinas
2012-09-07 19:54 ` Arnd Bergmann
2012-09-07 19:54 ` Arnd Bergmann
2012-09-07 16:27 ` [PATCH v3 30/31] arm64: Build infrastructure Catalin Marinas
2012-09-07 16:27 ` Catalin Marinas
2012-09-07 19:55 ` Arnd Bergmann
2012-09-07 19:55 ` Arnd Bergmann
2012-09-07 16:27 ` [PATCH v3 31/31] arm64: MAINTAINERS update Catalin Marinas
2012-09-07 16:27 ` Catalin Marinas
2012-09-09 16:31 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-09 16:31 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-09 16:31 ` Jean-Christophe PLAGNIOL-VILLARD
2012-09-10 17:57 ` Nicolas Pitre
2012-09-10 17:57 ` Nicolas Pitre
2012-09-10 21:17 ` Russell King - ARM Linux
2012-09-10 21:17 ` Russell King - ARM Linux
2012-09-10 23:31 ` Nicolas Pitre
2012-09-10 23:31 ` Nicolas Pitre
2012-09-10 23:31 ` Nicolas Pitre
2012-09-07 23:25 ` [PATCH v3 00/31] AArch64 Linux kernel port Olof Johansson
2012-09-07 23:25 ` Olof Johansson
2012-09-12 14:54 ` Catalin Marinas
2012-09-12 14:54 ` Catalin Marinas
2012-09-08 9:18 ` Santosh Shilimkar
2012-09-08 9:18 ` Santosh Shilimkar
2012-09-08 13:59 ` Nicolas Pitre
2012-09-08 13:59 ` Nicolas Pitre
2012-09-08 14:42 ` Shilimkar, Santosh
2012-09-08 14:42 ` Shilimkar, Santosh
2012-09-10 17:53 ` Nicolas Pitre
2012-09-10 17:53 ` Nicolas Pitre
2012-09-10 20:22 ` Jon Masters
2012-09-10 20:22 ` Jon Masters
2012-09-12 11:54 ` Arnd Bergmann
2012-09-12 11:54 ` Arnd Bergmann
2012-09-12 11:54 ` Arnd Bergmann
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=20120910155033.GF27042@arm.com \
--to=catalin.marinas@arm.com \
--cc=arnd@arndb.de \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/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.