Re: [PATCH backport] x86, vdso: Use asm volatile in __getcpu

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 13, 2015 at 02:44:09PM -0800, Andy Lutomirski wrote:
> commit 1ddf0b1b11aa8a90cef6706e935fc31c75c406ba upstream
> 
> In Linux 3.18 and below, GCC hoists the lsl instructions in the
> pvclock code all the way to the beginning of __vdso_clock_gettime,
> slowing the non-paravirt case significantly.  For unknown reasons,
> presumably related to the removal of a branch, the performance issue
> is gone as of
> 
> e76b027e6408 x86,vdso: Use LSL unconditionally for vgetcpu
> 
> but I don't trust GCC enough to expect the problem to stay fixed.
> 
> There should be no correctness issue, because the __getcpu calls in
> __vdso_vlock_gettime were never necessary in the first place.
> 
> Note to stable maintainers: In 3.18 and below, depending on
> configuration, gcc 4.9.2 generates code like this:
> 
>      9c3:       44 0f 03 e8             lsl    %ax,%r13d
>      9c7:       45 89 eb                mov    %r13d,%r11d
>      9ca:       0f 03 d8                lsl    %ax,%ebx
> 
> This patch won't apply as is to any released kernel, but I'll send a
> trivial backported version if needed.
> 
> [
>  Backported by Andy Lutomirski.  Should apply to all affected
>  versions.  This fixes a functionality bug as well as a performance
>  bug: buggy kernels can infinite loop in __vdso_clock_gettime on
>  affected compilers.  See, for exammple:
> 
>  https://bugzilla.redhat.com/show_bug.cgi?id=1178975
> ]

Thanks for this, I'll go queue it up.

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]