ia64: Add accept4() syscall
PATCH 1/1 ia64: Add accept4() syscall
From: Émeric Maschino <[email protected]>
commit 65cc21b4523e94d5640542a818748cd3be8cd6b4 upstream.
While debugging udev > 170 failure on Debian Wheezy
(http://bugs.debian.org/cgi-bin/bugreport.cgi?bugd8325), it appears that the issue was in fact due to missing accept4() in ia64.
This patch simply adds accept4() to ia64.
---
Hi Ben and Greg,
Émeric Maschino wrote[1]:
Quoted 7 lines
Starting with udev 170 (well, IIRC!), console is flooded at startup with:
udevd[XXX]: unable to receive ctrl connection: Function not implemented
where XXX is a number (PID?).
And system takes ~3 min. to get login prompt.
Indeed, udev versions since 168 (2011-04-22) require the accept4() syscall. That syscall was added to the kernel in 2.6.28 (2008-11-19), but arches were slow to pick it up because checksyscalls.sh didn't catch it[2] (it was implemented on 32-bit x86 using sys_socketcall). Here is a list of when each arch added the syscall:
x86 and arches using socketcall (2008-11-19) v2.6.28-rc6~45 sparc64 (2008-11-19) v2.6.28-rc6~44
MIPS (2009-08-03) v2.6.31-rc6~64^2
microblaze (2009-12-28) v2.6.33-rc5~19^2~3
sh64 (2010-01-19) v2.6.33-rc5~13^2
parisc (2009-12-26) v2.6.34-rc1~13^2~6
ARM (2010-08-15) v2.6.36-rc2~52^2~2
sh (2010-12-13) v2.6.37-rc6~10^2
alpha (2011-10-31) v3.2-rc1~108^2~58
ia64 (2012-01-09) v3.3-rc1~73^2
Lots of arches are not listed above because they use the multiplexed socketcall call and got support right away. (sh and sh64 provide both the direct syscall and socketcall.)
This patch was merged upstream during the 3.3 merge window and has been in use in Debian's 3.2.y-based kernel since January.
As long as libc was built to use the syscall, applying this patch makes udev work properly again on ia64. What do you think?
Jonathan
[1] http://bugs.debian.org/648325
[2] http://thread.gmane.org/gmane.linux.kernel.cross-arch/11888/focus907
arch/ia64/include/asm/unistd.h | 3 ++- arch/ia64/kernel/entry.S | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-)
arch/ia64/include/asm/unistd.h +2 -1
@@ -321,11 +321,12 @@#define __NR_syncfs 1329#define __NR_setns 1330#define __NR_sendmmsg 1331 +#define __NR_accept4 1334#ifdef __KERNEL__ -#define NR_syscalls 308/* length of syscall table */ +#define NR_syscalls 311/* length of syscall table */ /* * The following defines stop scripts/checksyscalls.sh from complaining about
arch/ia64/kernel/entry.S +3 -0
@@ -1777,6 +1777,9 @@ sys_call_table: data8 sys_syncfs data8 sys_setns // 1330 data8 sys_sendmmsg + data8 sys_ni_syscall /* process_vm_readv */ + data8 sys_ni_syscall /* process_vm_writev */ + data8 sys_accept4 .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls #endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */
Signature · 1 line
1.7.10.2
Quoted 9 lines · Jonathan Nieder
From: Émeric Maschino <[email protected]>
commit
65cc21b4523e94d5640542a818748cd3be8cd6b4upstream.While debugging udev > 170 failure on Debian Wheezy
(http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648325), it appears that the issue was in fact due to missingaccept4()in ia64.This patch simply adds
accept4()to ia64.
[...]
Queued up for 3.2.y.
Ben.
Signature · 2 lines
Ben Hutchings The two most common things in the universe are hydrogen and stupidity.
2012/5/17 Ben Hutchings <[email protected]>:
Quoted 9 lines · Jonathan Nieder
Quoted 5 lines
From: Émeric Maschino <[email protected]>
[...]
This patch simply adds
accept4()to ia64.[...]
Queued up for 3.2.y.
Hasn't it been already added [1]?
Indeed, I'm no more having this issue with (at least) Debian kernel 3.2.14-1 and 3.2.16-1.
Discussion about direct syscalls and indirect socketcalls [2], with PPC deprecating socketcalls, is beyond my knowledge. Jonathan, was it your point?
Emeric
[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bugd7825#123
[2] http://thread.gmane.org/gmane.linux.kernel.cross-arch/11888/focus907
Quoted 7 lines · Émeric Maschino
2012/5/17 Ben Hutchings <[email protected]>:
Quoted 6 lines · Jonathan Nieder
Quoted 5 lines
From: Émeric Maschino <[email protected]>
[...]
This patch simply adds
accept4()to ia64.
Quoted 8 lines
Quoted 3 lines
[...]
Queued up for 3.2.y.
Hasn't it been already added [1]?
Indeed, I'm no more having this issue with (at least) Debian kernel 3.2.14-1 and 3.2.16-1.
[...]
Right, but this is not just for Debian.
Ben.
Signature · 2 lines
Ben Hutchings Every program is either trivial or else contains at least one bug
2012/5/17 Ben Hutchings <[email protected]>:
Quoted 8 lines · Émeric Maschino
Quoted 7 lines
2012/5/17 Ben Hutchings <[email protected]>:
Quoted 6 lines · Jonathan Nieder
Quoted 5 lines
From: Émeric Maschino <[email protected]>
[...]
This patch simply adds
accept4()to ia64.
Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
[...]
Queued up for 3.2.y.
Hasn't it been already added [1]?
Right, but this is not just for Debian.
Uh? I thought that Debian was the latest Linux distribution to support IA-64.
Emeric
Hi Émeric,
Quoted 5 lines · Émeric Maschino
2012/5/17 Ben Hutchings <[email protected]>:
Quoted 1 line
Right, but this is not just for Debian.
Uh? I thought that Debian was the latest Linux distribution to support IA-64.
Gentoo and Linux From Scratch include support for Itanium. It is also not too unusual to upgrade some components (especially the kernel) on an older system when one wants newer features.
My original message was proposing to include this patch in the 3.0.y and 3.2.y kernels available from kernel.org. Ben made that change for 3.2.y so it will be included in 3.2.18 (unless some problem comes up before then). Sorry for the lack of context.
Ciao,
Jonathan
2012/5/18 Jonathan Nieder <[email protected]>:
Quoted 7 lines
Quoted 5 lines · Émeric Maschino
2012/5/17 Ben Hutchings <[email protected]>:
Quoted 1 line
Right, but this is not just for Debian.
Uh? I thought that Debian was the latest Linux distribution to support IA-64.
Quoted 8 lines
Gentoo and Linux From Scratch include support for Itanium. It is also not too unusual to upgrade some components (especially the kernel) on an older system when one wants newer features.
My original message was proposing to include this patch in the 3.0.y and 3.2.y kernels available from kernel.org. Ben made that change for 3.2.y so it will be included in 3.2.18 (unless some problem comes up before then). Sorry for the lack of context.
I didn't understand you were talking about upstream. Thank you for the clarification. And for pointing out that Gentoo is still alive ;-)
Emeric
Quoted 47 lines · Jonathan Nieder
From: Émeric Maschino <[email protected]>
commit
65cc21b4523e94d5640542a818748cd3be8cd6b4upstream.While debugging udev > 170 failure on Debian Wheezy
(http://bugs.debian.org/cgi-bin/bugreport.cgi?bugd8325), it appears that the issue was in fact due to missingaccept4()in ia64.This patch simply adds
accept4()to ia64.Signed-off-by Émeric Maschino <[email protected]>Signed-off-by Tony Luck <[email protected]>Signed-off-by Jonathan Nieder <[email protected]>---
Hi Ben and Greg,Émeric Maschino wrote[1]:
Quoted 7 lines
Starting with udev 170 (well, IIRC!), console is flooded at startup with:
udevd[XXX]: unable to receive ctrl connection: Function not implemented
where XXX is a number (PID?).
And system takes ~3 min. to get login prompt.
Indeed, udev versions since 168 (2011-04-22) require the
accept4()syscall. That syscall was added to the kernel in 2.6.28 (2008-11-19), but arches were slow to pick it up becausechecksyscalls.shdidn't catch it[2] (it was implemented on 32-bit x86 usingsys_socketcall). Here is a list of when each arch added the syscall:x86 and arches using socketcall (2008-11-19) v2.6.28-rc6~45 sparc64 (2008-11-19) v2.6.28-rc6~44
MIPS (2009-08-03) v2.6.31-rc6~64^2
microblaze (2009-12-28) v2.6.33-rc5~19^2~3
sh64 (2010-01-19) v2.6.33-rc5~13^2
parisc (2009-12-26) v2.6.34-rc1~13^2~6
ARM (2010-08-15) v2.6.36-rc2~52^2~2
sh (2010-12-13) v2.6.37-rc6~10^2
alpha (2011-10-31) v3.2-rc1~108^2~58
ia64 (2012-01-09) v3.3-rc1~73^2Lots of arches are not listed above because they use the multiplexed socketcall call and got support right away. (sh and sh64 provide both the direct syscall and socketcall.)
Quoted 5 lines
This patch was merged upstream during the 3.3 merge window and has been in use in Debian's 3.2.y-based kernel since January.
As long as libc was built to use the syscall, applying this patch makes udev work properly again on ia64. What do you think?
I'd accept it for the 3.0-stable kernel, but it doesn't apply, care to provide a backported version that does?
thanks,
greg k-h
Quoted 2 lines · Greg KH
I'd accept it for the 3.0-stable kernel, but it doesn't apply, care to provide a backported version that does?
The message you were replying to is such a backported version. :)
Thanks,
Jonathan
Quoted 6 lines · Jonathan Nieder
Quoted 2 lines · Greg KH
I'd accept it for the 3.0-stable kernel, but it doesn't apply, care to provide a backported version that does?
The message you were replying to is such a backported version. :)
Ugh, you are right, it is, I thought I had tried that, sorry for the noise, I'll go apply it now...
greg k-h