From: Samuel Thibault <samuel.thibault@eu.citrix.com>
To: Keir Fraser <keir.fraser@eu.citrix.com>
Cc: xen-devel@lists.xensource.com
Subject: Re: evtchn_do_upcall() barrier between upcall_pending and pending_sel
Date: Thu, 8 May 2008 11:34:30 +0100 [thread overview]
Message-ID: <20080508103430.GF4365@implementation.uk.xensource.com> (raw)
In-Reply-To: <C44893C7.2067B%keir.fraser@eu.citrix.com>
Keir Fraser, le Thu 08 May 2008 11:25:59 +0100, a écrit :
> Makes sense, yes.
Here are fixes then.
evtchn: Use wmb instead of rmb to enforce ordering between
evtchn_upcall_pending and evtchn_pending_sel stores.
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
diff -r e39cf97647af drivers/xen/core/evtchn.c
--- a/drivers/xen/core/evtchn.c Mon May 05 10:17:41 2008 +0100
+++ b/drivers/xen/core/evtchn.c Thu May 08 11:33:59 2008 +0100
@@ -246,7 +246,7 @@ asmlinkage void evtchn_do_upcall(struct
#ifndef CONFIG_X86 /* No need for a barrier -- XCHG is a barrier on x86. */
/* Clear master flag /before/ clearing selector flag. */
- rmb();
+ wmb();
#endif
l1 = xchg(&vcpu_info->evtchn_pending_sel, 0);
minios: in non-x86 case, use wmb to enforce ordering between
evtchn_upcall_pending and evtchn_pending_sel stores.
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
diff -r 4965e711fee8 extras/mini-os/hypervisor.c
--- a/extras/mini-os/hypervisor.c Wed May 07 15:36:32 2008 +0100
+++ b/extras/mini-os/hypervisor.c Thu May 08 11:31:35 2008 +0100
@@ -46,7 +46,11 @@ void do_hypervisor_callback(struct pt_re
in_callback = 1;
vcpu_info->evtchn_upcall_pending = 0;
- /* NB. No need for a barrier here -- XCHG is a barrier on x86. */
+ /* NB x86. No need for a barrier here -- XCHG is a barrier on x86. */
+#if !defined(__i386__) && !defined(__x86_64__)
+ /* clear master flag /before/ clearing selector flag. */
+ wmb();
+#endif
l1 = xchg(&vcpu_info->evtchn_pending_sel, 0);
while ( l1 != 0 )
{
prev parent reply other threads:[~2008-05-08 10:34 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-08 10:18 evtchn_do_upcall() barrier between upcall_pending and pending_sel Samuel Thibault
2008-05-08 10:25 ` Keir Fraser
2008-05-08 10:34 ` Samuel Thibault [this message]
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=20080508103430.GF4365@implementation.uk.xensource.com \
--to=samuel.thibault@eu.citrix.com \
--cc=keir.fraser@eu.citrix.com \
--cc=xen-devel@lists.xensource.com \
/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.