Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Aug 2017 15:54:42 +0200
From:      Andre Albsmeier <andre@fbsd.e4m.org>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        Andre Albsmeier <andre@fbsd.e4m.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   Re: svn commit: r322345 - stable/11/lib/libc/x86/sys
Message-ID:  <20170813135442.GA28728@voyager>
In-Reply-To: <20170813133736.GO1700@kib.kiev.ua>
References:  <201708100900.v7A90FjI094474@repo.freebsd.org> <20170813131311.GA24473@voyager> <20170813133736.GO1700@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 13-Aug-2017 at 16:37:36 +0300, Konstantin Belousov wrote:
> On Sun, Aug 13, 2017 at 03:13:11PM +0200, Andre Albsmeier wrote:
> > On Thu, 10-Aug-2017 at 09:00:15 +0000, Konstantin Belousov wrote:
> > > Author: kib
> > > Date: Thu Aug 10 09:00:15 2017
> > > New Revision: 322345
> > > URL: https://svnweb.freebsd.org/changeset/base/322345
> > > 
> > > Log:
> > >   MFC r321608:
> > >   Use MFENCE to serialize RDTSC on non-Intel CPUs.
> > 
> > This broke libc on my
> > 
> > FreeBSD clang version 4.0.0 (tags/RELEASE_400/final 297347) (based on LLVM 4.0.0)
> > VT(vga): text 80x25
> > CPU: AMD-K6tm w/ multimedia extensions (199.44-MHz 586-class CPU)
> >   Origin="AuthenticAMD"  Id=0x562  Family=0x5  Model=0x6  Stepping=2
> >   Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX>
> >   AMD Features=0x400<<b10>>
> > 
> > On system start, it actually makes various programmes hang until
> > Ctrl-C is pressed. Reboot is not possible (endlessly hanging with
> > 'zillions of defunct processes).
> > 
> > Going back to r322042 fixes it...
> 
> Indeed code is broken on i386 machines which have CPUID but no SSE.

Wonder how many of these still exist...

> Try this.

I just compiled and installed libc.so.7 with this patch on the machine
in question and the test I used for hunting down the reason (ls -l /lib) 
was OK. I then rebooted the whole box and it looked good as well.

I did not compile stuff which links libc statically and hung before (devd)
but I am pretty sure this will be OK as well...

Thanks,

	-Andre

> 
> diff --git a/lib/libc/x86/sys/__vdso_gettc.c b/lib/libc/x86/sys/__vdso_gettc.c
> index 4ada5e7eac1..ef2ca69edf7 100644
> --- a/lib/libc/x86/sys/__vdso_gettc.c
> +++ b/lib/libc/x86/sys/__vdso_gettc.c
> @@ -101,6 +101,7 @@ init_fence(void)
>  #if defined(__i386__)
>  	u_int cpuid_supported, p[4];
>  
> +	lfence_works = LMB_NONE;
>  	__asm __volatile(
>  	    "	pushfl\n"
>  	    "	popl	%%eax\n"
> @@ -121,8 +122,7 @@ init_fence(void)
>  		cpuidp(0x1, p);
>  		if ((p[3] & CPUID_SSE2) != 0)
>  			lfence_works = select_lmb();
> -	} else
> -		lfence_works = LMB_NONE;
> +	}
>  #elif defined(__amd64__)
>  	lfence_works = select_lmb();
>  #else

-- 
My other computer is your windows box.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170813135442.GA28728>