mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Mikael Pettersson <mikpe@it.uu.se>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>,
	Mikael Pettersson <mikpe@it.uu.se>,
	Andi Kleen <andi@firstfloor.org>,
	mingo@elte.hu, tglx@linutronix.de, torvalds@linux-foundation.org,
	akpm@linux-foundation.org, roland@redhat.com, drepper@redhat.com,
	Hongjiu.lu@intel.com, linux-kernel@vger.kernel.org,
	arjan@linux.intel.com, rmk+lkml@arm.linux.org.uk, dan@debian.org,
	asit.k.mallick@intel.com
Subject: Re: [RFC] x86: xsave/xrstor support, ucontext_t extensions
Date: Fri, 23 May 2008 13:46:25 +0200	[thread overview]
Message-ID: <18486.44689.203792.818972@harpo.it.uu.se> (raw)
In-Reply-To: <48362FD0.9030104@zytor.com>

H. Peter Anvin writes:
 > Michael, you wrote:
 > 
 > > Hmm, right now it seems this field has a de-facto ABI of being
 > > either 0xffff (plain) or 0x0000 (fxsr). Using other values would
 > > confuse at least one application I know of. Sad.
 > 
 > ... could you share what application that is?  This otherwise would be 
 > ideal.

It's the virtual machine for the Erlang/OTP concurrent functional
language. It's open-source and used extensively for telecom and
internet server applications.

The language doesn't allow non-finite FP values, so FP ops must
be checked. As an optimisation, the virtual machine groups FP ops
into blocks, enables FP exceptions, and has a SIGFPE handler that
just records that an FP exception has occurred in a per-thread flag.
After each FP block there's a single check for this flag, which if
set triggers a language-level "badarith" exception.

In order to resume from an SSE2 exception the SIGFPE handler must
update some parts of the sigcontext. But first the handler must detect
if the exception came from x87 or SSE2, which requires looking at the
mxcsr field, which requires looking at the magic field to detect the
fpstate's layout.

The magic field is described as follows in sigcontext.h:

>struct _fpstate {
>	...
>        unsigned short  magic;          /* 0xffff = regular FPU data only */
>	...
>};
>
>#define X86_FXSR_MAGIC          0x0000

While this in theory allows for other values than -1 and 0 in magic,
any such value would be != FXSR_MAGIC and therefore would not trigger
the application's "inspect the fxsr layout" logic.

/Mikael

  reply	other threads:[~2008-05-23 11:51 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-13  1:10 Suresh Siddha
2008-05-16 13:26 ` Mikael Pettersson
2008-05-18  1:34   ` Suresh Siddha
2008-05-19 14:52     ` Mikael Pettersson
2008-05-19 15:04       ` Andi Kleen
2008-05-19 16:29       ` H. Peter Anvin
2008-05-19 16:57         ` Suresh Siddha
2008-05-19 17:45           ` H. Peter Anvin
2008-05-20  1:57       ` Suresh Siddha
2008-05-20  8:58         ` Mikael Pettersson
2008-05-20 10:01         ` Andi Kleen
2008-05-20 13:19           ` Mikael Pettersson
2008-05-20 14:58             ` H. Peter Anvin
2008-05-20 15:20               ` Mikael Pettersson
2008-05-20 17:53                 ` Suresh Siddha
2008-05-20 17:59                   ` H. Peter Anvin
2008-05-22  0:28                   ` H. Peter Anvin
2008-05-22  0:53                     ` Roland McGrath
2008-05-22  1:38                       ` H. Peter Anvin
2008-05-22  6:40                         ` Roland McGrath
2008-05-22  7:18                           ` H. Peter Anvin
2008-05-22  8:49                       ` Mikael Pettersson
2008-05-22  8:57                     ` Mikael Pettersson
2008-05-22 20:56                       ` Suresh Siddha
2008-05-22 21:02                         ` H. Peter Anvin
2008-05-22 21:29                           ` Suresh Siddha
2008-05-22 21:34                             ` H. Peter Anvin
2008-05-22 22:22                               ` Mikael Pettersson
2008-05-23  1:48                               ` Suresh Siddha
2008-05-23  2:12                                 ` Roland McGrath
2008-05-23  2:49                                   ` H. Peter Anvin
2008-05-23 18:09                                     ` Suresh Siddha
2008-06-06  0:28                                       ` x86: xsave/xrstor support; " H. Peter Anvin
2008-06-06 20:14                                         ` Suresh Siddha
2008-06-06 23:03                                           ` H. Peter Anvin
2008-05-23  2:45                                 ` [RFC] x86: xsave/xrstor support, " H. Peter Anvin
2008-05-23 11:46                                   ` Mikael Pettersson [this message]
2008-05-23 12:11                                     ` Andi Kleen
2008-05-22 21:32                           ` Chris Wright
2008-05-22 22:15                             ` Mikael Pettersson
2008-05-22 22:29                               ` Chris Wright
2008-05-23  0:32                                 ` H. Peter Anvin
2008-05-23  0:44                                   ` Chris Wright
2008-05-22 22:36                           ` Mikael Pettersson
2008-05-23  0:33                             ` H. Peter Anvin
2008-05-23  0:42                               ` Suresh Siddha
2008-05-23  1:33                                 ` Roland McGrath
2008-05-23 16:57                                   ` H. Peter Anvin
2008-05-23 17:50                                     ` Suresh Siddha
2008-05-23  2:27                                 ` H. Peter Anvin
2008-05-20 17:57                 ` H. Peter Anvin
2008-05-20 14:55           ` H. Peter Anvin
2008-05-20 15:03             ` Andi Kleen
2008-05-20 20:10               ` Roland McGrath
2008-05-22  0:05                 ` H. Peter Anvin
2008-05-22  0:47                   ` Roland McGrath
2008-05-22  8:14                     ` Andi Kleen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=18486.44689.203792.818972@harpo.it.uu.se \
    --to=mikpe@it.uu.se \
    --cc=Hongjiu.lu@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=arjan@linux.intel.com \
    --cc=asit.k.mallick@intel.com \
    --cc=dan@debian.org \
    --cc=drepper@redhat.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rmk+lkml@arm.linux.org.uk \
    --cc=roland@redhat.com \
    --cc=suresh.b.siddha@intel.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®