lkml.org 
[lkml]   [2008]   [May]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC] x86: xsave/xrstor support, ucontext_t extensions
H. Peter Anvin writes:
> Suresh Siddha wrote:
> >
> > hpa, What is the virtualization problem? Are you referring to perf problem?
> > As you noted, regular non-rt signal handlers won't need this cpuid check. It's
> > needed only for those who manually look at non-rt signal frames and interpret it.
> > And also, they can do this check only once and not everytime.
> >
>
> No, relying on CPUID and vdso both have implications for virtualization.
>
> > To me, prtcl() just seems to be an overkill.
>
> I don't think it is ... it's not overkill but rather "underkill"... it's
> a low-performance solution but it's guaranteed to be safe in the
> presence of virtualization of all its various ilk. Note that you don't
> need to be able to *set* the format via prctl(), just *query* (get) it.

I agree. It works, user-space only needs to query it once, so it's not
a big deal that it's a syscall. Admittedly a sigcontext flag would have
been better, but that doesn't seem to be viable.

> > While restoring from the user, kernel also need to find out what layout
> > the user is passing. So it's bi-directional. I prefer the same mechanism
> > (using cookies/magic numbers etc inaddition to uc_flags or cpuid checks) to
> > interpret the fpstate for both user/kernel.
>
> No, it really doesn't: the kernel only needs to be able to read the same
> format as it itself wrote.

The kernel needs to accept one(*) of the formats it can produce, which
is not necessarily what it last produced. It's not inconceivable that
user-space will construct sigframes on the fly (to emulate setcontext),
or that it will mangle sigframes (e.g. to map non-rt to rt before sigreturn).

(*) The format is determined by which version of sys_sigreturn the
user invokes.

/Mikael


\
 
 \ /
  Last update: 2008-05-23 00:41    [W:0.120 / U:1.212 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site