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 5/6] mini-os/x86-64 entry: defer RESTORE_REST until return
Date: Fri, 8 Mar 2013 15:30:18 -0600 [thread overview]
Message-ID: <1362778219-8576-6-git-send-email-xzhang@cs.uic.edu> (raw)
In-Reply-To: <1362778219-8576-1-git-send-email-xzhang@cs.uic.edu>
No need to do a RESTORE_REST at this point because if we saw pending
events after we enabled event delivery, we have to do a SAVE_REST again.
Instead, we do a "lazy" RESTORE_REST, deferring it until immediate before
actual return.
The offset of saved-on-stack rflags register is changed as well.
Signed-off-by: Xu Zhang <xzhang@cs.uic.edu>
---
| 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)
--git a/extras/mini-os/arch/x86/x86_64.S b/extras/mini-os/arch/x86/x86_64.S
index 5e0021b..25add86 100644
--- a/extras/mini-os/arch/x86/x86_64.S
+++ b/extras/mini-os/arch/x86/x86_64.S
@@ -60,7 +60,7 @@ NMI_MASK = 0x80000000
#define RDI 112
#define ORIG_RAX 120 /* + error_code */
-#define EFLAGS 144
+#define RFLAGS 144
/* Macros */
@@ -184,18 +184,17 @@ ENTRY(hypervisor_callback2)
decl %gs:0
error_exit:
- RESTORE_REST
-
retint_kernel:
-retint_restore_args:
- movl EFLAGS-6*8(%rsp), %eax
- shr $9, %eax # EAX[0] == IRET_EFLAGS.IF
+ movl RFLAGS(%rsp), %eax
+ shr $9, %eax # EAX[0] == IRET_RFLAGS.IF
XEN_GET_VCPU_INFO(%rsi)
andb evtchn_upcall_mask(%rsi),%al
- andb $1,%al # EAX[0] == IRET_EFLAGS.IF & event_mask
+ andb $1,%al # EAX[0] == IRET_RFLAGS.IF & event_mask
jnz restore_all_enable_events # != 0 => enable event delivery
XEN_PUT_VCPU_INFO(%rsi)
+retint_restore_args:
+ RESTORE_REST
RESTORE_ALL
HYPERVISOR_IRET 0
@@ -206,12 +205,13 @@ scrit: /**** START OF CRITICAL REGION ****/
XEN_TEST_PENDING(%rsi)
jnz 14f # process more events if necessary...
XEN_PUT_VCPU_INFO(%rsi)
+
+ RESTORE_REST
RESTORE_ALL
HYPERVISOR_IRET 0
14: XEN_LOCKED_BLOCK_EVENTS(%rsi)
XEN_PUT_VCPU_INFO(%rsi)
- SAVE_REST
movq %rsp,%rdi # set the argument again
jmp 11b
ecrit: /**** END OF CRITICAL REGION ****/
--
1.7.7.6
next prev parent 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 [PATCH 0/6] mini-os: check and fix up against nested events in x86-64 kernel entry Xu Zhang
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 ` Xu Zhang [this message]
2013-03-09 21:15 ` [PATCH 5/6] mini-os/x86-64 entry: defer RESTORE_REST until return 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-6-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).