aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-06-04 10:50:55 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-06-04 10:50:55 +0100
commitaa1461c9f1fa0770dd7fbbc378224fe2939da302 (patch)
tree0824cfa90efc5b02ca50324761ae9e1ca9c92b7b
parentdce5093c7b29e485ea9b7ada9328c531ed950844 (diff)
downloadxen-aa1461c9f1fa0770dd7fbbc378224fe2939da302.tar.gz
xen-aa1461c9f1fa0770dd7fbbc378224fe2939da302.tar.bz2
xen-aa1461c9f1fa0770dd7fbbc378224fe2939da302.zip
notify_via_xen_event_channel() takes explicit domain parameter.
Also remove pointless tasklet from mem_event notify path. Signed-off-by: John Byrne <john.l.byrne@hp.com> xen-unstable changeset: 21527:936f4c08eaef xen-unstable date: Fri Jun 04 10:25:45 2010 +0100
-rw-r--r--xen/arch/ia64/vmx/vmx_support.c2
-rw-r--r--xen/arch/x86/hvm/hvm.c2
-rw-r--r--xen/arch/x86/mm/mem_event.c14
-rw-r--r--xen/common/event_channel.c4
-rw-r--r--xen/include/xen/event.h2
-rw-r--r--xen/include/xen/sched.h2
6 files changed, 6 insertions, 20 deletions
diff --git a/xen/arch/ia64/vmx/vmx_support.c b/xen/arch/ia64/vmx/vmx_support.c
index f66d988ef3..98ce5c9511 100644
--- a/xen/arch/ia64/vmx/vmx_support.c
+++ b/xen/arch/ia64/vmx/vmx_support.c
@@ -62,7 +62,7 @@ void vmx_send_assist_req(struct vcpu *v)
}
wmb();
p->state = STATE_IOREQ_READY;
- notify_via_xen_event_channel(v->arch.arch_vmx.xen_port);
+ notify_via_xen_event_channel(v->domain, v->arch.arch_vmx.xen_port);
for (;;) {
if (p->state != STATE_IOREQ_READY &&
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index d936829a14..900c779019 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -896,7 +896,7 @@ bool_t hvm_send_assist_req(struct vcpu *v)
* prepare_wait_on_xen_event_channel() is an implicit barrier.
*/
p->state = STATE_IOREQ_READY;
- notify_via_xen_event_channel(v->arch.hvm_vcpu.xen_port);
+ notify_via_xen_event_channel(v->domain, v->arch.hvm_vcpu.xen_port);
return 1;
}
diff --git a/xen/arch/x86/mm/mem_event.c b/xen/arch/x86/mm/mem_event.c
index 10ea0655c9..5584328dd6 100644
--- a/xen/arch/x86/mm/mem_event.c
+++ b/xen/arch/x86/mm/mem_event.c
@@ -35,13 +35,6 @@
#define MEM_EVENT_RING_THRESHOLD 4
-static void mem_event_notify(struct domain *d)
-{
- prepare_wait_on_xen_event_channel(d->mem_event.xen_port);
- notify_via_xen_event_channel(d->mem_event.xen_port);
-}
-
-
int mem_event_enable(struct domain *d, mfn_t ring_mfn, mfn_t shared_mfn)
{
int rc;
@@ -64,11 +57,6 @@ int mem_event_enable(struct domain *d, mfn_t ring_mfn, mfn_t shared_mfn)
((mem_event_shared_page_t *)d->mem_event.shared_page)->port = rc;
d->mem_event.xen_port = rc;
- /* Initialise tasklet */
- tasklet_init(&d->mem_event.tasklet,
- (void(*)(unsigned long))mem_event_notify,
- (unsigned long)d);
-
/* Prepare ring buffer */
FRONT_RING_INIT(&d->mem_event.front_ring,
(mem_event_sring_t *)d->mem_event.ring_page,
@@ -125,7 +113,7 @@ void mem_event_put_request(struct domain *d, mem_event_request_t *req)
mem_event_ring_unlock(d);
- tasklet_schedule(&d->mem_event.tasklet);
+ notify_via_xen_event_channel(d, d->mem_event.xen_port);
}
void mem_event_get_response(struct domain *d, mem_event_response_t *rsp)
diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c
index b6a15d68a4..0fe798098c 100644
--- a/xen/common/event_channel.c
+++ b/xen/common/event_channel.c
@@ -986,10 +986,10 @@ void free_xen_event_channel(
}
-void notify_via_xen_event_channel(int lport)
+void notify_via_xen_event_channel(struct domain *ld, int lport)
{
struct evtchn *lchn, *rchn;
- struct domain *ld = current->domain, *rd;
+ struct domain *rd;
int rport;
spin_lock(&ld->event_lock);
diff --git a/xen/include/xen/event.h b/xen/include/xen/event.h
index b366e582a8..0adb2eb93e 100644
--- a/xen/include/xen/event.h
+++ b/xen/include/xen/event.h
@@ -57,7 +57,7 @@ void free_xen_event_channel(
int guest_enabled_event(struct vcpu *v, int virq);
/* Notify remote end of a Xen-attached event channel.*/
-void notify_via_xen_event_channel(int lport);
+void notify_via_xen_event_channel(struct domain *ld, int lport);
/* Wait on a Xen-attached event channel. */
#define wait_on_xen_event_channel(port, condition) \
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 2b2eca3bb8..00dfce50e4 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -187,8 +187,6 @@ struct mem_event_domain
bool_t enabled;
/* event channel port (vcpu0 only) */
int xen_port;
- /* tasklet */
- struct tasklet tasklet;
};
struct domain