On Fri, Sep 25, 2015 at 7:33 AM, Andy Lutomirski <[email protected]> wrote: > > On Sep 25, 2015 12:03 AM, "Aurelien Jarno" <[email protected]> wrote: >> >> On 2015-09-24 15:15, Andy Lutomirski wrote: >> > On Thu, Sep 24, 2015 at 3:12 PM, Aurelien Jarno <[email protected]> >> > wrote: >> > > On 2015-09-24 14:19, Andy Lutomirski wrote: >> > >> Hi- >> > >> >> > >> It looks like 32-bit x86 Debian glibc doesn't use AT_SYSINFO. This >> > >> kills syscall performance. Upstream glibc as well as Fedora's glibc >> > >> work fine. >> > >> >> > >> This test: >> > >> >> > >> >> > >> https://git.kernel.org/cgit/linux/kernel/git/luto/linux.git/commit/?h=x86/entry_compat&id=9d742073d4c0449b262dbe0a3dab4a7c1d831500 >> > >> >> > >> inadvertently found this issue. >> > >> >> > >> Any ideas? I'm only barely a Debian user -- I have a Debian-based >> > >> test VM. >> > > >> > > By default, the 32-bit glibc on Debian is built for i586, which does >> > > not >> > > have the sysenter/syscall instructions. Therefore it doesn't use >> > > AT_SYSINFO. >> > >> > I find this a bit odd. glibc isn't supposed to have those >> > instructions, and i586 kernels will still provide AT_SYSINFO (I >> > think), and it'll still work. Is this a Debian-specific thing? >> >> Yes, i586 kernels provide AT_SYSINFO, but it can't be used by the glibc, >> as int 0x80 has to be used for syscall on i586 processors. It's nothing >> specific to Debian, it's like that in upstream glibc. See: >> >> >> https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h >> and >> >> https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/i386/dl-sysdep.h >> > > OK, that's weird. I really hope the kernel never had a bug in which > AT_SYSINFO pointed at SYSENTER on a system that didn't support SYSENTER. >
Filed upstream: https://sourceware.org/bugzilla/show_bug.cgi?id=19006

