Messages in this thread | | | Date | Mon, 21 Mar 2016 14:49:44 -0400 | Subject | Re: [PATCH 4/9] x86: Enumerate kernel FSGS capability in AT_HWCAP2 | From | Brian Gerst <> |
| |
On Mon, Mar 21, 2016 at 12:16 PM, Andi Kleen <andi@firstfloor.org> wrote: > From: Andi Kleen <ak@linux.intel.com> > > The kernel needs to explicitely enable RD/WRFSBASE to handle context > switch correctly. So the application needs to know if it can safely use > these instruction. Just looking at the CPUID bit is not enough because it > may be running in a kernel that does not enable the instructions. > > One way for the application would be to just try and catch the SIGILL. > But that is difficult to do in libraries which may not want > to overwrite the signal handlers of the main application. > > So we need to provide a way for the application to discover the kernel > capability. > > I used AT_HWCAP2 in the ELF aux vector which is already used by > PPC for similar things. We define a new Linux defined bitmap > returned in AT_HWCAP. Currently it has only one bit set, > for kernel is FSGSBASE capable. > > The application can then access it manually or using > the getauxval() function in newer glibc.
How about adding a VDSO function instead? The VDSO can use alternatives, so it can use the new instructions if supported, or else use the old syscall.
-- Brian Gerst
| |