Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1571217 > unrolled thread
| Started by | Andrew Morton <akpm@linux-foundation.org> |
|---|---|
| First post | 2017-02-01 01:30 +0100 |
| Last post | 2017-02-05 14:20 +0100 |
| Articles | 7 — 6 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH] prctl: implement PR_GET_ENDIAN for all architectures Andrew Morton <akpm@linux-foundation.org> - 2017-02-01 01:30 +0100
Re: [PATCH] prctl: implement PR_GET_ENDIAN for all architectures Helge Deller <deller@gmx.de> - 2017-02-01 20:50 +0100
Re: [PATCH] prctl: implement PR_GET_ENDIAN for all architectures Andrew Morton <akpm@linux-foundation.org> - 2017-02-01 23:10 +0100
Re: [PATCH] prctl: implement PR_GET_ENDIAN for all architectures James Bottomley <James.Bottomley@HansenPartnership.com> - 2017-02-02 00:20 +0100
Re: [PATCH] prctl: implement PR_GET_ENDIAN for all architectures Andy Lutomirski <luto@kernel.org> - 2017-02-02 06:10 +0100
Re: [PATCH] prctl: implement PR_GET_ENDIAN for all architectures Matt Turner <mattst88@gmail.com> - 2017-02-05 12:50 +0100
Re: [PATCH] prctl: implement PR_GET_ENDIAN for all architectures "Maciej W. Rozycki" <macro@linux-mips.org> - 2017-02-05 14:20 +0100
| From | Andrew Morton <akpm@linux-foundation.org> |
|---|---|
| Date | 2017-02-01 01:30 +0100 |
| Subject | Re: [PATCH] prctl: implement PR_GET_ENDIAN for all architectures |
| Message-ID | <t5QY9-7lX-1@gated-at.bofh.it> |
On Sat, 28 Jan 2017 12:13:10 +0100 Helge Deller <deller@gmx.de> wrote: > The prctl(PR_GET_ENDIAN) syscall was added to Kernel 2.6.18, but > implemented for PowerPC only. > This trivial patch adds support for this syscall for all other architectures. Seems reasonable. I guess. Why is this needed? The man page will need updating. It says "PowerPC only". > > diff --git a/kernel/sys.c b/kernel/sys.c > index 842914e..5818e5e 100644 > --- a/kernel/sys.c > +++ b/kernel/sys.c > @@ -79,9 +79,6 @@ > #ifndef GET_FPEXC_CTL > # define GET_FPEXC_CTL(a, b) (-EINVAL) > #endif > -#ifndef GET_ENDIAN > -# define GET_ENDIAN(a, b) (-EINVAL) > -#endif > #ifndef SET_ENDIAN > # define SET_ENDIAN(a, b) (-EINVAL) > #endif > @@ -2136,7 +2133,13 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, > return -EFAULT; > break; > case PR_GET_ENDIAN: > +#ifdef GET_ENDIAN > error = GET_ENDIAN(me, arg2); > +#elif defined(__BIG_ENDIAN) > + error = put_user(PR_ENDIAN_BIG, (unsigned int __user *)arg2); > +#else > + error = put_user(PR_ENDIAN_LITTLE, (unsigned int __user *)arg2); > +#endif > break; > case PR_SET_ENDIAN: > error = SET_ENDIAN(me, arg2);
[toc] | [next] | [standalone]
| From | Helge Deller <deller@gmx.de> |
|---|---|
| Date | 2017-02-01 20:50 +0100 |
| Message-ID | <t694K-1Kd-23@gated-at.bofh.it> |
| In reply to | #1571217 |
Hi Andrew, On 01.02.2017 01:26, Andrew Morton wrote: > On Sat, 28 Jan 2017 12:13:10 +0100 Helge Deller <deller@gmx.de> wrote: > >> The prctl(PR_GET_ENDIAN) syscall was added to Kernel 2.6.18, but >> implemented for PowerPC only. >> This trivial patch adds support for this syscall for all other architectures. > > Seems reasonable. I guess. Heck, I did forgot but I submitted a similar patch 8 years ago: http://www.serverphorums.com/read.php?12,51902 > Why is this needed? It's not actually needed beside the trivial reason of providing an interface not just for one single architecture. After reading the discussion from 2009 again, I'm fine if you would simply drop the patch. The decision up to you. > The man page will need updating. It says "PowerPC only". In case you would include the patch I'd send patches to update the manpage. Thanks, Helge >> diff --git a/kernel/sys.c b/kernel/sys.c >> index 842914e..5818e5e 100644 >> --- a/kernel/sys.c >> +++ b/kernel/sys.c >> @@ -79,9 +79,6 @@ >> #ifndef GET_FPEXC_CTL >> # define GET_FPEXC_CTL(a, b) (-EINVAL) >> #endif >> -#ifndef GET_ENDIAN >> -# define GET_ENDIAN(a, b) (-EINVAL) >> -#endif >> #ifndef SET_ENDIAN >> # define SET_ENDIAN(a, b) (-EINVAL) >> #endif >> @@ -2136,7 +2133,13 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, >> return -EFAULT; >> break; >> case PR_GET_ENDIAN: >> +#ifdef GET_ENDIAN >> error = GET_ENDIAN(me, arg2); >> +#elif defined(__BIG_ENDIAN) >> + error = put_user(PR_ENDIAN_BIG, (unsigned int __user *)arg2); >> +#else >> + error = put_user(PR_ENDIAN_LITTLE, (unsigned int __user *)arg2); >> +#endif >> break; >> case PR_SET_ENDIAN: >> error = SET_ENDIAN(me, arg2);
[toc] | [prev] | [next] | [standalone]
| From | Andrew Morton <akpm@linux-foundation.org> |
|---|---|
| Date | 2017-02-01 23:10 +0100 |
| Message-ID | <t6bgd-3A1-13@gated-at.bofh.it> |
| In reply to | #1571925 |
On Wed, 1 Feb 2017 20:47:06 +0100 Helge Deller <deller@gmx.de> wrote: > Hi Andrew, > > On 01.02.2017 01:26, Andrew Morton wrote: > > On Sat, 28 Jan 2017 12:13:10 +0100 Helge Deller <deller@gmx.de> wrote: > > > >> The prctl(PR_GET_ENDIAN) syscall was added to Kernel 2.6.18, but > >> implemented for PowerPC only. > >> This trivial patch adds support for this syscall for all other architectures. > > > > Seems reasonable. I guess. > > Heck, I did forgot but I submitted a similar patch 8 years ago: > http://www.serverphorums.com/read.php?12,51902 > > > Why is this needed? > > It's not actually needed beside the trivial reason of providing an interface > not just for one single architecture. > > After reading the discussion from 2009 again, I'm fine if > you would simply drop the patch. The decision up to you. Can't decide. I guess that moving it into the kernel will, over time, eliminate some irritating ifdefs from userspace code. The implementation itself is a bit half-assed. The put_user() in arch/powerpc/kernel/process.c:get_endian() should be moved into kernel/sys.c. So the arch code only does the "what endianness am I" function and common code copies that out to userspace.
[toc] | [prev] | [next] | [standalone]
| From | James Bottomley <James.Bottomley@HansenPartnership.com> |
|---|---|
| Date | 2017-02-02 00:20 +0100 |
| Message-ID | <t6clX-4e8-1@gated-at.bofh.it> |
| In reply to | #1571217 |
On Tue, 2017-01-31 at 16:26 -0800, Andrew Morton wrote: > On Sat, 28 Jan 2017 12:13:10 +0100 Helge Deller <deller@gmx.de> > wrote: > > > The prctl(PR_GET_ENDIAN) syscall was added to Kernel 2.6.18, but > > implemented for PowerPC only. This trivial patch adds support for > > this syscall for all other architectures. > > Seems reasonable. I guess. Why is this needed? I don't think it is other than for PPC. If you're not variable endian (which is only PPC to date), then you should know a priori what endian you are from the #defines in userspace. James
[toc] | [prev] | [next] | [standalone]
| From | Andy Lutomirski <luto@kernel.org> |
|---|---|
| Date | 2017-02-02 06:10 +0100 |
| Message-ID | <t6hOF-7HV-3@gated-at.bofh.it> |
| In reply to | #1572042 |
On Wed, Feb 1, 2017 at 3:12 PM, James Bottomley <James.Bottomley@hansenpartnership.com> wrote: > On Tue, 2017-01-31 at 16:26 -0800, Andrew Morton wrote: >> On Sat, 28 Jan 2017 12:13:10 +0100 Helge Deller <deller@gmx.de> >> wrote: >> >> > The prctl(PR_GET_ENDIAN) syscall was added to Kernel 2.6.18, but >> > implemented for PowerPC only. This trivial patch adds support for >> > this syscall for all other architectures. >> >> Seems reasonable. I guess. Why is this needed? > > I don't think it is other than for PPC. If you're not variable endian > (which is only PPC to date), then you should know a priori what endian > you are from the #defines in userspace. I find it vaguely odd even on PPC. Surely you can tell what your endianness is directly. (An API to query the endianness of another task would be useful, though.)
[toc] | [prev] | [next] | [standalone]
| From | Matt Turner <mattst88@gmail.com> |
|---|---|
| Date | 2017-02-05 12:50 +0100 |
| Message-ID | <t7tup-6OR-3@gated-at.bofh.it> |
| In reply to | #1572042 |
On Thu, Feb 2, 2017 at 12:12 AM, James Bottomley <James.Bottomley@hansenpartnership.com> wrote: > On Tue, 2017-01-31 at 16:26 -0800, Andrew Morton wrote: >> On Sat, 28 Jan 2017 12:13:10 +0100 Helge Deller <deller@gmx.de> >> wrote: >> >> > The prctl(PR_GET_ENDIAN) syscall was added to Kernel 2.6.18, but >> > implemented for PowerPC only. This trivial patch adds support for >> > this syscall for all other architectures. >> >> Seems reasonable. I guess. Why is this needed? > > I don't think it is other than for PPC. If you're not variable endian > (which is only PPC to date), then you should know a priori what endian > you are from the #defines in userspace. MIPS as well, but it seems strange to require the kernel to tell you your endianness, when you can easily determine it yourself. Unless there's something about this I don't understand.
[toc] | [prev] | [next] | [standalone]
| From | "Maciej W. Rozycki" <macro@linux-mips.org> |
|---|---|
| Date | 2017-02-05 14:20 +0100 |
| Message-ID | <t7uTv-7PU-1@gated-at.bofh.it> |
| In reply to | #1573875 |
On Sun, 5 Feb 2017, Matt Turner wrote: > > I don't think it is other than for PPC. If you're not variable endian > > (which is only PPC to date), then you should know a priori what endian > > you are from the #defines in userspace. > > MIPS as well, but it seems strange to require the kernel to tell you > your endianness, when you can easily determine it yourself. Unless > there's something about this I don't understand. Many MIPS processors do have a reverse-endian control bit, which allows a user process to execute in the endianness opposite to the endianness the kernel runs in. The feature has been around since 1991 and the R4000 CPU, however support is unlikely to be ever added to the MIPS/Linux port, due to the complexity required for byte-swapping all the data structures passed in memory between the kernel and the userland. Does the PPC/Linux port actually implement this swapping? Maciej
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web