Skip to contentSkip to conversation

ia64: Add accept4() syscall

PATCH In review Jonathan Nieder 4 participants 10 messages May 16, 2012 – May 19, 2012

lore
Share & tools
lore
#0 lore raw

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
index 7c928da35b17..d8de1825b736 100644
@@ -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
index 97dd2abdeb1a..df477f8c9d82 100644
@@ -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
#1 lore raw
Quoted 9 lines · Jonathan Nieder

From: Émeric Maschino <[email protected]>

commit 65cc21b4523e94d5640542a818748cd3be8cd6b4 upstream.

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 missing accept4() 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.
#2 lore raw
In reply to Jonathan Nieder

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

#3 lore raw
In reply to Jonathan Nieder
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
#4 lore raw
In reply to Jonathan Nieder

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

#5 lore raw
In reply to Jonathan Nieder

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

#6 lore raw
In reply to Jonathan Nieder

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

#7 lore raw
In reply to Jonathan Nieder
Quoted 47 lines · Jonathan Nieder

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.)

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

#8 lore raw
In reply to 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. :)

Thanks,
Jonathan

#9 lore raw
In reply to Jonathan Nieder
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