From: Chris Metcalf <cmetcalf@tilera.com> To: Al Viro <viro@ZenIV.linux.org.uk> Cc: <linux-kernel@vger.kernel.org>, <linux-arch@vger.kernel.org>, Linus Torvalds <torvalds@linux-foundation.org>, Benjamin Herrenschmidt <benh@kernel.crashing.org>, "David S. Miller" <davem@davemloft.net> Subject: Re: [PATCH] tile: support GENERIC_KERNEL_THREAD and GENERIC_KERNEL_EXECVE Date: Sat, 20 Oct 2012 09:06:57 -0400 [thread overview] Message-ID: <5082A1F1.3080303@tilera.com> (raw) In-Reply-To: <20121019213548.GR2616@ZenIV.linux.org.uk> On 10/19/2012 5:35 PM, Al Viro wrote: > On Fri, Oct 19, 2012 at 04:25:12PM -0400, Chris Metcalf wrote: >> Also provide an optimized current_pt_regs() while we're at it. > Applied. BTW, are you sure you want to record parent's pid and not tid? By recording ->pid rather than ->pgid, we ARE recording the tid :-) > Anyway, here's a followup on top of this one (again, completely untested) - > switching to generic sys_execve(). Does that look right for you? It does look right, but it doesn't quite work as-is. But after some tweaks it did yield a kernel that booted up userspace correctly, so I think it's basically good. First, the compat_sys_execve() declaration provided in arch/tile/include/asm/compat.h isn't right, so I deleted that (you had only deleted the PTREGS_SYSCALL trampoline declaration, _compat_sys_execve). However, then arch/tile/kernel/compat.c failed to build, because <linux/compat.h> is included before <asm/unistd.h>, and <asm/unistd.h> provides __ARCH_WANT_SYS_EXECVE, and so we end up with no declaration at all for compat_sys_execve. For most platforms this is no big deal, but on tile we use the __SYSCALL #define to provide the actual syscall table, and for that to work we need a declaration in scope for each syscall at the time we create the table. The best solution seems likely to be to copy the other place in <linux/compat.h> where we need to do something configurable (that is, CONFIG_ARCH_WANT_OLD_COMPAT_IPC), and just convert __ARCH_WANT_SYS_EXECVE to be a Kconfig option. Another possibility is to pre-include <asm/unistd.h> in the tile compat.c before including <linux/compat.h>. This requires adding some #undefs for _SC_3264, etc., in <asm-generic/unistd.h>, since we'll need to include the header twice, once to satisfy <linux/compat.h>, and then again to actually provide the body of the syscall array. If we go down this path, I suspect we should just make <linux/compat.h> include <asm/unistd.h>, so it gets the __ARCH_WANT_SYS_EXECVE define provided. Otherwise we have the ugly requirement of requiring the C file to include specific headers in specific order for it to work right. > While > we are at it, I wonder if any of PTREGS_SYSCALL wrappers are needed - > current_pt_regs() would do just as well, won't it? It's a couple of > arithmetical operations vs. arith operation + branch; even if the latter > is somehow cheaper, can't be cheaper by much. And I'd expect it to be > costlier, actually, what with the icache effects. Yes, that's a good idea. I'll look at it when I'm back in the office next week. -- Chris Metcalf, Tilera Corp. http://www.tilera.com
WARNING: multiple messages have this Message-ID (diff)
From: Chris Metcalf <cmetcalf@tilera.com> To: Al Viro <viro@ZenIV.linux.org.uk> Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, Linus Torvalds <torvalds@linux-foundation.org>, Benjamin Herrenschmidt <benh@kernel.crashing.org>, "David S. Miller" <davem@davemloft.net> Subject: Re: [PATCH] tile: support GENERIC_KERNEL_THREAD and GENERIC_KERNEL_EXECVE Date: Sat, 20 Oct 2012 09:06:57 -0400 [thread overview] Message-ID: <5082A1F1.3080303@tilera.com> (raw) In-Reply-To: <20121019213548.GR2616@ZenIV.linux.org.uk> On 10/19/2012 5:35 PM, Al Viro wrote: > On Fri, Oct 19, 2012 at 04:25:12PM -0400, Chris Metcalf wrote: >> Also provide an optimized current_pt_regs() while we're at it. > Applied. BTW, are you sure you want to record parent's pid and not tid? By recording ->pid rather than ->pgid, we ARE recording the tid :-) > Anyway, here's a followup on top of this one (again, completely untested) - > switching to generic sys_execve(). Does that look right for you? It does look right, but it doesn't quite work as-is. But after some tweaks it did yield a kernel that booted up userspace correctly, so I think it's basically good. First, the compat_sys_execve() declaration provided in arch/tile/include/asm/compat.h isn't right, so I deleted that (you had only deleted the PTREGS_SYSCALL trampoline declaration, _compat_sys_execve). However, then arch/tile/kernel/compat.c failed to build, because <linux/compat.h> is included before <asm/unistd.h>, and <asm/unistd.h> provides __ARCH_WANT_SYS_EXECVE, and so we end up with no declaration at all for compat_sys_execve. For most platforms this is no big deal, but on tile we use the __SYSCALL #define to provide the actual syscall table, and for that to work we need a declaration in scope for each syscall at the time we create the table. The best solution seems likely to be to copy the other place in <linux/compat.h> where we need to do something configurable (that is, CONFIG_ARCH_WANT_OLD_COMPAT_IPC), and just convert __ARCH_WANT_SYS_EXECVE to be a Kconfig option. Another possibility is to pre-include <asm/unistd.h> in the tile compat.c before including <linux/compat.h>. This requires adding some #undefs for _SC_3264, etc., in <asm-generic/unistd.h>, since we'll need to include the header twice, once to satisfy <linux/compat.h>, and then again to actually provide the body of the syscall array. If we go down this path, I suspect we should just make <linux/compat.h> include <asm/unistd.h>, so it gets the __ARCH_WANT_SYS_EXECVE define provided. Otherwise we have the ugly requirement of requiring the C file to include specific headers in specific order for it to work right. > While > we are at it, I wonder if any of PTREGS_SYSCALL wrappers are needed - > current_pt_regs() would do just as well, won't it? It's a couple of > arithmetical operations vs. arith operation + branch; even if the latter > is somehow cheaper, can't be cheaper by much. And I'd expect it to be > costlier, actually, what with the icache effects. Yes, that's a good idea. I'll look at it when I'm back in the office next week. -- Chris Metcalf, Tilera Corp. http://www.tilera.com
next prev parent reply other threads:[~2012-10-20 13:07 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 21:35 ` Al Viro 2012-10-20 13:06 ` Chris Metcalf [this message] 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-19 20:25 ` Chris Metcalf 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 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=5082A1F1.3080303@tilera.com \ --to=cmetcalf@tilera.com \ --cc=benh@kernel.crashing.org \ --cc=davem@davemloft.net \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=torvalds@linux-foundation.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: linkBe 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.