From: Xu Zhang <xzhang@cs.uic.edu>
To: xen-devel@lists.xen.org
Cc: samuel.thibault@ens-lyon.org, jeremy@goop.org,
Xu Zhang <xzhang@cs.uic.edu>,
gm281@cam.ac.uk, stefano.stabellini@eu.citrix.com
Subject: [PATCH 0/6] mini-os: check and fix up against nested events in x86-64 kernel entry
Date: Fri, 8 Mar 2013 15:30:13 -0600 [thread overview]
Message-ID: <1362778219-8576-1-git-send-email-xzhang@cs.uic.edu> (raw)
mini-os almost always use direct iret to return from interrupt.
But this operation is not atomic because Xen uses event mask to
enable/disable event delivery. So there is a window for nested
events to happen after re-enabling event delivery and before
a direct iret.
The issues come with such non-atomicity have been discussed in:
http://lists.xen.org/archives/html/xen-devel/2007-06/msg00142.html
And also on Xen-devel:
http://markmail.org/message/jkzhzy6fyes6igcf
This patch checks and fixes up against nested events in a similar
fashion of mini-os 32bit and Fitzhardinge's (whom is also CCed to).
It checks against re-entrant of critical section in event handling
callback. Try to fix up by looking up the number of bytes restored
when the second event came and coalescing the two stack frames into
one. And resume execution as if the second event never happened.
It also refactors mini-os's x86-64 kernel entry assembly code.
Xu Zhang (6):
mini-os/x86-64 entry: code clean-ups
mini-os/x86-64 entry: define macros for registers partial save and
restore
mini-os/x86-64 entry: code refactoring; no functional changes
mini-os/x86-64 entry: remove unnecessary event block
mini-os/x86-64 entry: defer RESTORE_REST until return
mini-os/x86-64 entry: check against nested events and try to fix up
extras/mini-os/arch/x86/x86_64.S | 261 +++++++++++++++++++++++++-------------
1 files changed, 175 insertions(+), 86 deletions(-)
--
1.7.7.6
next reply other threads:[~2013-03-08 21:30 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-08 21:30 Xu Zhang [this message]
2013-03-08 21:30 ` [PATCH 1/6] mini-os/x86-64 entry: code clean-ups Xu Zhang
2013-03-09 20:57 ` Samuel Thibault
2013-03-08 21:30 ` [PATCH 2/6] mini-os/x86-64 entry: define macros for registers partial save and restore Xu Zhang
2013-03-09 20:55 ` Samuel Thibault
2013-03-08 21:30 ` [PATCH 3/6] mini-os/x86-64 entry: code refactoring; no functional changes Xu Zhang
2013-03-09 21:03 ` Samuel Thibault
2013-04-11 4:40 ` Xu Zhang
2013-03-08 21:30 ` [PATCH 4/6] mini-os/x86-64 entry: remove unnecessary event blocking Xu Zhang
2013-03-09 21:07 ` Samuel Thibault
2013-03-15 20:16 ` Konrad Rzeszutek Wilk
2013-04-11 4:40 ` Xu Zhang
2013-03-08 21:30 ` [PATCH 5/6] mini-os/x86-64 entry: defer RESTORE_REST until return Xu Zhang
2013-03-09 21:15 ` Samuel Thibault
2013-03-08 21:30 ` [PATCH 6/6] mini-os/x86-64 entry: check against nested events and try to fix up Xu Zhang
2013-03-09 21:19 ` Samuel Thibault
2013-03-13 2:42 ` Xu Zhang
2013-03-09 22:44 ` Jeremy Fitzhardinge
2013-03-13 2:42 ` Xu Zhang
2013-03-13 5:53 ` Xu Zhang
2013-03-14 1:09 ` Jeremy Fitzhardinge
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=1362778219-8576-1-git-send-email-xzhang@cs.uic.edu \
--to=xzhang@cs.uic.edu \
--cc=gm281@cam.ac.uk \
--cc=jeremy@goop.org \
--cc=samuel.thibault@ens-lyon.org \
--cc=stefano.stabellini@eu.citrix.com \
--cc=xen-devel@lists.xen.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;
as well as URLs for NNTP newsgroup(s).