From: Andres Lagar-Cavilla <andres@lagarcavilla.org>
To: xen-devel@lists.xensource.com
Cc: andres@gridcentric.ca, keir.xen@gmail.com, tim@xen.org,
olaf@aepfle.de, adin@gridcentric.ca
Subject: [PATCH 3 of 5] Allow memevent responses to be signaled via the event channel
Date: Mon, 05 Dec 2011 10:12:02 -0500 [thread overview]
Message-ID: <22b05954f754c472001a.1323097922@xdev.gridcentric.ca> (raw)
In-Reply-To: <patchbomb.1323097919@xdev.gridcentric.ca>
xen/arch/x86/mm/mem_event.c | 26 ++++++++++++++++++++------
1 files changed, 20 insertions(+), 6 deletions(-)
Don't require a separate domctl to notify the memevent interface that an event
has occured. This domctl can be taxing, particularly when you are scaling
events and paging to many domains across a single system. Instead, we use the
existing event channel to signal when we place something in the ring (as per
normal ring operation).
Signed-off-by: Adin Scannell <adin@scannell.ca>
Signed-off-by: Keir Fraser <keir@xen.org>
Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
diff -r 4c19931b40d5 -r 22b05954f754 xen/arch/x86/mm/mem_event.c
--- a/xen/arch/x86/mm/mem_event.c
+++ b/xen/arch/x86/mm/mem_event.c
@@ -37,9 +37,11 @@
#define mem_event_ring_lock(_med) spin_lock(&(_med)->ring_lock)
#define mem_event_ring_unlock(_med) spin_unlock(&(_med)->ring_lock)
-static int mem_event_enable(struct domain *d,
- xen_domctl_mem_event_op_t *mec,
- struct mem_event_domain *med)
+static int mem_event_enable(
+ struct domain *d,
+ xen_domctl_mem_event_op_t *mec,
+ struct mem_event_domain *med,
+ xen_event_channel_notification_t notification_fn)
{
int rc;
struct domain *dom_mem_event = current->domain;
@@ -94,7 +96,7 @@ static int mem_event_enable(struct domai
/* Allocate event channel */
rc = alloc_unbound_xen_event_channel(d->vcpu[0],
current->domain->domain_id,
- NULL);
+ notification_fn);
if ( rc < 0 )
goto err;
@@ -233,6 +235,18 @@ int mem_event_check_ring(struct domain *
return ring_full;
}
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_paging_notification(struct vcpu *v, unsigned int port)
+{
+ p2m_mem_paging_resume(v->domain);
+}
+
+/* Registered with Xen-bound event channel for incoming notifications. */
+static void mem_access_notification(struct vcpu *v, unsigned int port)
+{
+ p2m_mem_access_resume(v->domain);
+}
+
int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
XEN_GUEST_HANDLE(void) u_domctl)
{
@@ -294,7 +308,7 @@ int mem_event_domctl(struct domain *d, x
if ( p2m->pod.entry_count )
break;
- rc = mem_event_enable(d, mec, med);
+ rc = mem_event_enable(d, mec, med, mem_paging_notification);
}
break;
@@ -333,7 +347,7 @@ int mem_event_domctl(struct domain *d, x
if ( boot_cpu_data.x86_vendor != X86_VENDOR_INTEL )
break;
- rc = mem_event_enable(d, mec, med);
+ rc = mem_event_enable(d, mec, med, mem_access_notification);
}
break;
next prev parent reply other threads:[~2011-12-05 15:12 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-05 15:11 [PATCH 0 of 5] Mem event interface improvements Andres Lagar-Cavilla
2011-12-05 15:12 ` [PATCH 1 of 5] Flag events caused by foreign domains Andres Lagar-Cavilla
2011-12-05 15:12 ` [PATCH 2 of 5] Create a generic callback mechanism for Xen-bound event channels Andres Lagar-Cavilla
2011-12-05 15:12 ` Andres Lagar-Cavilla [this message]
2011-12-05 15:12 ` [PATCH 4 of 5] Consume multiple mem event responses off the ring Andres Lagar-Cavilla
2011-12-05 15:12 ` [PATCH 5 of 5] Ignore memory events with an obviously invalid gfn Andres Lagar-Cavilla
2011-12-05 16:01 ` Tim Deegan
2011-12-05 16:20 ` Andres Lagar-Cavilla
2011-12-06 12:23 ` [PATCH 0 of 5] Mem event interface improvements Olaf Hering
2011-12-06 20:15 ` Tim Deegan
2011-12-06 20:39 ` Andres Lagar-Cavilla
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=22b05954f754c472001a.1323097922@xdev.gridcentric.ca \
--to=andres@lagarcavilla.org \
--cc=adin@gridcentric.ca \
--cc=andres@gridcentric.ca \
--cc=keir.xen@gmail.com \
--cc=olaf@aepfle.de \
--cc=tim@xen.org \
--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.