From: torvalds@transmeta.com (Linus Torvalds)
To: linux-kernel@vger.kernel.org
Subject: Re: Are x86 trap gate handlers safe for preemption?
Date: Wed, 30 Oct 2002 22:51:10 +0000 (UTC) [thread overview]
Message-ID: <appnou$jof$1@penguin.transmeta.com> (raw)
In-Reply-To: 15808.17731.311432.596865@kim.it.uu.se
In article <15808.17731.311432.596865@kim.it.uu.se>,
Mikael Pettersson <mikpe@csd.uu.se> wrote:
>Consider an exception handler like vector 7, device_not_available:
>
>ENTRY(device_not_available)
> pushl $-1 # mark this as an int
> SAVE_ALL
> movl %cr0, %eax
> testl $0x4, %eax # EM (math emulation bit)
> jne device_not_available_emulate
> preempt_stop
>
>Since this is invoked via a trap gate and not an interrupt gate,
>what's preventing this code from being preempted and resumed on
>another CPU before the read from %cr0?
Well, since %cr0 should be stable across the task switche, that
shouldn't actually matter.
> Another example is the
>machine_check vector (also trap gate) whose handlers access MSRs.
This one looks like a real bug. The fix should be to make it an
interrupt gate, I suspect. Comments?
On the whole, I think it is probably a good idea to make all exceptions
be interrupt gates, and then on a case-by-case basis show why some don't
need to (ie clearly the system calls should _not_ be interrupt gates,
but we've long since made the page fault path use an interrupt gate for
similar special register stability reasons).
Linus
next prev parent reply other threads:[~2002-10-30 22:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-30 20:46 Are x86 trap gate handlers safe for preemption? Mikael Pettersson
2002-10-30 22:51 ` Linus Torvalds [this message]
2002-10-31 0:01 ` george anzinger
2002-10-31 0:05 ` george anzinger
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='appnou$jof$1@penguin.transmeta.com' \
--to=torvalds@transmeta.com \
--cc=linux-kernel@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.