All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Hogan <james.hogan@imgtec.com>
To: Vineet Gupta <Vineet.Gupta1@synopsys.com>
Cc: Arnd Bergmann <arnd@arndb.de>, <linux-arch@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	Markos <markos.chandras@imgtec.com>
Subject: Re: SYSV IPC broken for no-legacy syscall kernels (was Re: [RFC PATCH v1 26/31] ARC: Build system: Makefiles, Kconfig, Linker script)
Date: Mon, 11 Mar 2013 13:07:07 +0000	[thread overview]
Message-ID: <513DD6FB.4000400@imgtec.com> (raw)
In-Reply-To: <513DD464.2060008@synopsys.com>

On 11/03/13 12:56, Vineet Gupta wrote:
> Hi James,
> 
> On Monday 11 March 2013 06:14 PM, James Hogan wrote:
>> Hi Vineet,
>>
>> On 11/03/13 12:29, Vineet Gupta wrote:
>>> On Wednesday 07 November 2012 07:43 PM, Arnd Bergmann wrote:
>>>> On Wednesday 07 November 2012, Vineet Gupta wrote:
>>>>
>>>>> +
>>>>> +config ARC
>>>>> +	def_bool y
>>>>> +	select ARCH_WANT_IPC_PARSE_VERSION
>>>>> +	# ARC Busybox based initramfs absolutely relies on DEVTMPFS for /dev
>>>>> +	# DEVTMPS in turn needs HOTPLUG
>>>>> +	select DEVTMPFS if !INITRAMFS_SOURCE=""
>>>>> +	select GENERIC_ATOMIC64
>>>>> +	select GENERIC_CLOCKEVENTS
>>>>> +	select GENERIC_FIND_FIRST_BIT
>>>>> +	# for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
>>>>> +	select GENERIC_IRQ_SHOW
>>>>> +	select GENERIC_PENDING_IRQ if SMP
>>>>> +	select GENERIC_SMP_IDLE_THREAD
>>>>> +	select HAVE_GENERIC_HARDIRQS
>>>>> +	select HOTPLUG if !INITRAMFS_SOURCE=""
>>>>> +	select MODULES_USE_ELF_RELA
>>>> You should not need ARCH_WANT_IPC_PARSE_VERSION
>>> It seems, we have a small bug in sysV IPC.
>>> A lot of LTP tests have started failing on ARC 3.9-rc1 kernel due to absence of
>>> ARCH_WANT_IPC_PARSE_VERSION.
>>>
>>> I'm assuming that for newer arches, msgctl(2) and friends need to have  need to
>>> have @cmd of type 0x01nn where 0x0100 is IPC_64.
>>> However for ! ARCH_WANT_IPC_PARSE_VERSION, ipc/util.h seems to be defining a dummy
>>> version of ipc_parse_version(), which doesn't strip out the 0x0100 from @cmds,
>>> causing the code to not enter the switch block in SYSCALL_DEFINE3(msgctl) making
>>> it fail.
>>> Adding the above item to arch/arc/Kconfig obviously fixes the breakage.
>>>
>>> It seems there is some bogosity in the way ipc_parse_version() is defined. Given
>>> the way it is used, to strip out the 0x0100 bit, it seems we always need the
>>> function variant - the IA-64 ish comment in there seems to be bit-rot.
>>>
>>> What do you think ?
>> FYI, for metag we assumed this was intentional and that IPC_64 shouldn't
>> be passed since it is the default behaviour for new arches.
>> You may find the following uClibc commit relevant:
>> http://git.uclibc.org/uClibc/commit/?id=6c2fa3451f35f8d78a31689044b2d19efa4eaca2
> 
> I've been using uClibc trunk - ported to ARC - for my testing, so I already have
> that change. Looking at Markos' uClibc branch he is indeed defining __IPC_64 to 0
> in metag port.
> However, looking at the kernel code, it seems newer style is to do the other way
> round - i.e. pass 0x0100 in those cmds - unless the comments in there are bogus.
> 
> include/uapi/linux/ipc.h
> 
> /*
>  * Version flags for semctl, msgctl, and shmctl commands
>  * These are passed as bitflags or-ed with the actual command
>  */
> #define IPC_OLD 0    /* Old version (no 32-bit UID support on many
>                architectures) */
> #define IPC_64  0x0100  /* New version (support 32-bit UIDs, bigger
>                message sizes, etc. */
> 
> So someone with more ABI wisdom needs to suggest what is the right approach.

Agreed.

Note that in uClibc, 64bit arches (excl alpha/mips for some reason) were
already defining __IPC_64 as 0, so there's some precedent for it working
the way it does.

Cheers
James


WARNING: multiple messages have this Message-ID (diff)
From: James Hogan <james.hogan@imgtec.com>
To: Vineet Gupta <Vineet.Gupta1@synopsys.com>
Cc: Arnd Bergmann <arnd@arndb.de>,
	linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
	Markos <markos.chandras@imgtec.com>
Subject: Re: SYSV IPC broken for no-legacy syscall kernels (was Re: [RFC PATCH v1 26/31] ARC: Build system: Makefiles, Kconfig, Linker script)
Date: Mon, 11 Mar 2013 13:07:07 +0000	[thread overview]
Message-ID: <513DD6FB.4000400@imgtec.com> (raw)
In-Reply-To: <513DD464.2060008@synopsys.com>

On 11/03/13 12:56, Vineet Gupta wrote:
> Hi James,
> 
> On Monday 11 March 2013 06:14 PM, James Hogan wrote:
>> Hi Vineet,
>>
>> On 11/03/13 12:29, Vineet Gupta wrote:
>>> On Wednesday 07 November 2012 07:43 PM, Arnd Bergmann wrote:
>>>> On Wednesday 07 November 2012, Vineet Gupta wrote:
>>>>
>>>>> +
>>>>> +config ARC
>>>>> +	def_bool y
>>>>> +	select ARCH_WANT_IPC_PARSE_VERSION
>>>>> +	# ARC Busybox based initramfs absolutely relies on DEVTMPFS for /dev
>>>>> +	# DEVTMPS in turn needs HOTPLUG
>>>>> +	select DEVTMPFS if !INITRAMFS_SOURCE=""
>>>>> +	select GENERIC_ATOMIC64
>>>>> +	select GENERIC_CLOCKEVENTS
>>>>> +	select GENERIC_FIND_FIRST_BIT
>>>>> +	# for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
>>>>> +	select GENERIC_IRQ_SHOW
>>>>> +	select GENERIC_PENDING_IRQ if SMP
>>>>> +	select GENERIC_SMP_IDLE_THREAD
>>>>> +	select HAVE_GENERIC_HARDIRQS
>>>>> +	select HOTPLUG if !INITRAMFS_SOURCE=""
>>>>> +	select MODULES_USE_ELF_RELA
>>>> You should not need ARCH_WANT_IPC_PARSE_VERSION
>>> It seems, we have a small bug in sysV IPC.
>>> A lot of LTP tests have started failing on ARC 3.9-rc1 kernel due to absence of
>>> ARCH_WANT_IPC_PARSE_VERSION.
>>>
>>> I'm assuming that for newer arches, msgctl(2) and friends need to have  need to
>>> have @cmd of type 0x01nn where 0x0100 is IPC_64.
>>> However for ! ARCH_WANT_IPC_PARSE_VERSION, ipc/util.h seems to be defining a dummy
>>> version of ipc_parse_version(), which doesn't strip out the 0x0100 from @cmds,
>>> causing the code to not enter the switch block in SYSCALL_DEFINE3(msgctl) making
>>> it fail.
>>> Adding the above item to arch/arc/Kconfig obviously fixes the breakage.
>>>
>>> It seems there is some bogosity in the way ipc_parse_version() is defined. Given
>>> the way it is used, to strip out the 0x0100 bit, it seems we always need the
>>> function variant - the IA-64 ish comment in there seems to be bit-rot.
>>>
>>> What do you think ?
>> FYI, for metag we assumed this was intentional and that IPC_64 shouldn't
>> be passed since it is the default behaviour for new arches.
>> You may find the following uClibc commit relevant:
>> http://git.uclibc.org/uClibc/commit/?id=6c2fa3451f35f8d78a31689044b2d19efa4eaca2
> 
> I've been using uClibc trunk - ported to ARC - for my testing, so I already have
> that change. Looking at Markos' uClibc branch he is indeed defining __IPC_64 to 0
> in metag port.
> However, looking at the kernel code, it seems newer style is to do the other way
> round - i.e. pass 0x0100 in those cmds - unless the comments in there are bogus.
> 
> include/uapi/linux/ipc.h
> 
> /*
>  * Version flags for semctl, msgctl, and shmctl commands
>  * These are passed as bitflags or-ed with the actual command
>  */
> #define IPC_OLD 0    /* Old version (no 32-bit UID support on many
>                architectures) */
> #define IPC_64  0x0100  /* New version (support 32-bit UIDs, bigger
>                message sizes, etc. */
> 
> So someone with more ABI wisdom needs to suggest what is the right approach.

Agreed.

Note that in uClibc, 64bit arches (excl alpha/mips for some reason) were
already defining __IPC_64 as 0, so there's some precedent for it working
the way it does.

Cheers
James

  reply	other threads:[~2013-03-11 13:07 UTC|newest]

Thread overview: 141+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-07  9:47 [RFC Patch v1 00/31] Synopsys ARC Linux kernel Port Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 01/31] ARC: Generic Headers Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 02/31] ARC: irqflags Vineet Gupta
2012-11-12 19:50   ` Thomas Gleixner
2013-01-01  7:44     ` Vineet Gupta
2013-01-01  7:44       ` Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 03/31] ARC: atomic/bitops/cmpxchg/barriers Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 04/31] asm-generic headers: uaccess.h to conditionally define segment_eq() Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 05/31] ARC: uaccess friends Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 06/31] asm-generic headers: Allow yet more arch overrides in checksum.h Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 07/31] ARC: checksum/byteorder/swab routines Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 08/31] ARC: Fundamental ARCH data-types/defines Vineet Gupta
2012-11-08  7:10   ` Jonas Bonn
2012-11-08 18:52     ` Vineet Gupta
2012-11-08 20:36       ` Jonas Bonn
2012-11-12 13:58         ` Vineet Gupta
2012-11-12 14:12           ` Arnd Bergmann
2012-11-07  9:47 ` [RFC PATCH v1 09/31] ARC: spinlock/rwlock/mutex primitives Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 10/31] ARC: string library Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 11/31] ARC: Low level IRQ/Trap/Exception(non-MMU) Handling Vineet Gupta
2012-11-16  4:58   ` Al Viro
2012-12-27  9:00     ` Vineet Gupta
2012-12-27  9:00       ` Vineet Gupta
2012-12-27 13:29       ` Vineet Gupta
2012-12-27 13:29         ` Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 12/31] ARC: Interrupt Handling Vineet Gupta
2012-11-12 20:08   ` Thomas Gleixner
2013-01-01 10:46     ` Vineet Gupta
2013-01-01 10:46       ` Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 13/31] ARC: Non-MMU Exception Handling Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 14/31] ARC: syscall support Vineet Gupta
2012-11-07 14:21   ` Arnd Bergmann
2012-11-09  9:50     ` James Hogan
2012-11-09  9:50       ` James Hogan
2012-11-13 11:41       ` James Hogan
2012-11-13 11:41         ` James Hogan
2012-11-13 12:01         ` Jonas Bonn
2012-11-13 12:11           ` James Hogan
2012-11-13 12:11             ` James Hogan
2012-11-14 12:23             ` Arnd Bergmann
2012-11-14 12:31               ` James Hogan
2012-11-14 12:31                 ` James Hogan
2012-11-13 10:13     ` Gilad Ben-Yossef
2012-11-13 10:37       ` Arnd Bergmann
2012-11-15  6:15         ` Vineet Gupta
2012-11-15  6:15           ` Vineet Gupta
2012-11-15 12:35           ` Arnd Bergmann
2013-01-17  5:13             ` Vineet Gupta
2013-01-17  5:13               ` Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 15/31] ARC: Process/scheduling/clock/Timers/Delay Management Vineet Gupta
2012-11-12 20:29   ` Thomas Gleixner
2013-01-02  7:13     ` Vineet Gupta
2013-01-02  7:13       ` Vineet Gupta
2013-01-02  8:45       ` Vineet Gupta
2013-01-02  8:45         ` Vineet Gupta
2013-01-04 13:01       ` Frederic Weisbecker
2012-11-07  9:47 ` [RFC PATCH v1 16/31] ARC: Signal handling Vineet Gupta
2012-11-16  5:26   ` Al Viro
2012-12-28 12:34     ` Vineet Gupta
2012-12-28 12:34       ` Vineet Gupta
2012-12-28 12:42       ` [PATCH 1/2] ARC: [Review] Preparing to fix incorrect syscall restarts due to signals Vineet Gupta
2012-12-28 12:42         ` Vineet Gupta
2012-12-28 12:42         ` [PATCH 2/2] ARC: [Review] Prevent incorrect syscall restarts Vineet Gupta
2012-12-28 12:42           ` Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 17/31] ARC: Cache Flush Management Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 18/31] ARC: Page Table Management Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 19/31] ARC: MMU Context Management Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 20/31] ARC: MMU Exception Handling Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 21/31] ARC: TLB flush Handling Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 22/31] ARC: Page Fault handling (incl uaccess fixup) Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 23/31] ARC: I/O and DMA Mappings Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 24/31] ARC: startup #1: low-level, setup_arch(), /proc/cpuinfo, mem init Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 25/31] ARC: [plat-arcfpga] Hooking up platform to ARC UART Vineet Gupta
2012-11-07 14:16   ` Arnd Bergmann
2013-01-07 13:10     ` Vineet Gupta
2013-01-07 13:10       ` Vineet Gupta
2013-01-07 13:46       ` Arnd Bergmann
2013-01-07 14:04         ` Vineet Gupta
2013-01-07 14:04           ` Vineet Gupta
2013-01-07 14:36           ` Arnd Bergmann
2013-01-14  7:35     ` early init dt for earlyprintk (was Re: [RFC PATCH v1 25/31] ARC: [plat-arcfpga] Hooking up platform to ARC UART) Vineet Gupta
2013-01-14  7:35       ` Vineet Gupta
2013-01-14  9:48       ` James Hogan
2013-01-14  9:48         ` James Hogan
2013-01-14 10:09         ` Vineet Gupta
2013-01-14 10:09           ` Vineet Gupta
2013-01-14 10:54       ` Arnd Bergmann
2013-01-17  7:29     ` [RFC PATCH v1 25/31] ARC: [plat-arcfpga] Hooking up platform to ARC UART Vineet Gupta
2013-01-17  7:29       ` Vineet Gupta
2013-01-17 10:52       ` Arnd Bergmann
2012-11-07  9:47 ` [RFC PATCH v1 26/31] ARC: Build system: Makefiles, Kconfig, Linker script Vineet Gupta
2012-11-07 14:13   ` Arnd Bergmann
2013-01-02 14:30     ` Vineet Gupta
2013-01-02 14:48       ` Arnd Bergmann
2013-01-03  7:58         ` Vineet Gupta
2013-01-03  7:58           ` Vineet Gupta
2013-01-03  8:25           ` Arnd Bergmann
2013-03-11 12:29     ` SYSV IPC broken for no-legacy syscall kernels (was Re: [RFC PATCH v1 26/31] ARC: Build system: Makefiles, Kconfig, Linker script) Vineet Gupta
2013-03-11 12:29       ` Vineet Gupta
2013-03-11 12:44       ` James Hogan
2013-03-11 12:44         ` James Hogan
2013-03-11 12:56         ` Vineet Gupta
2013-03-11 12:56           ` Vineet Gupta
2013-03-11 13:07           ` James Hogan [this message]
2013-03-11 13:07             ` James Hogan
2013-03-11 13:30             ` Arnd Bergmann
2013-03-11 13:48               ` Vineet Gupta
2013-03-11 13:48                 ` Vineet Gupta
2013-03-11 14:50                 ` Arnd Bergmann
2012-11-15 17:49   ` [RFC PATCH v1 26/31] ARC: Build system: Makefiles, Kconfig, Linker script James Hogan
2012-11-15 17:49     ` James Hogan
2012-11-15 19:30     ` Ralf Baechle
2012-11-16  6:36       ` Vineet Gupta
2012-11-16  6:36         ` Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 27/31] ARC: Last bits (stubs) to get to a running kernel with UART Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 28/31] ARC: split ret_from_fork, simplify kernel_thread() Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 29/31] ARC: switch to generic kernel_thread() Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 30/31] ARC: switch to generic kernel_execve() and sys_execve() Vineet Gupta
2012-11-16  4:08   ` Al Viro
2012-11-17 14:01     ` Vineet Gupta
2012-11-17 14:01       ` Vineet Gupta
2012-11-07  9:47 ` [RFC PATCH v1 31/31] ARC: [plat-arcfpga] defconfig Vineet Gupta
2012-11-07 14:06   ` Arnd Bergmann
2012-11-12 14:18     ` James Hogan
2012-11-12 14:18       ` James Hogan
2012-11-12 14:21       ` Arnd Bergmann
2012-11-07 14:36 ` [RFC Patch v1 00/31] Synopsys ARC Linux kernel Port Arnd Bergmann
2012-11-08 19:09   ` Vineet Gupta
2012-11-07 20:46 ` Gilad Ben-Yossef
2012-11-20 13:47 ` Pavel Machek
2012-11-20 13:49   ` Vineet Gupta
2012-11-20 13:49     ` Vineet Gupta
2012-11-20 13:59   ` Pavel Machek
2012-11-20 14:17     ` Vineet Gupta
2012-11-20 14:17       ` Vineet Gupta
2013-01-18 19:46       ` Pavel Machek
2013-01-18 22:17         ` Arnd Bergmann
2013-01-19 10:15           ` Pavel Machek
2013-01-19 12:32         ` Vineet Gupta
2013-01-19 12:32           ` Vineet Gupta
2013-01-19 17:02           ` Pavel Machek

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=513DD6FB.4000400@imgtec.com \
    --to=james.hogan@imgtec.com \
    --cc=Vineet.Gupta1@synopsys.com \
    --cc=arnd@arndb.de \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=markos.chandras@imgtec.com \
    /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.