aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir@xen.org>2011-06-23 12:02:54 +0100
committerKeir Fraser <keir@xen.org>2011-06-23 12:02:54 +0100
commit1b6b61ac52453650cf0daaeb721c82eb5715a1d6 (patch)
treec073bb683288feb66288b2f0652f91c0a4fb8962
parent414e31298439d5cae3b3d7099ae346cd2fd6aa6e (diff)
downloadxen-1b6b61ac52453650cf0daaeb721c82eb5715a1d6.tar.gz
xen-1b6b61ac52453650cf0daaeb721c82eb5715a1d6.tar.bz2
xen-1b6b61ac52453650cf0daaeb721c82eb5715a1d6.zip
tasklets: Switch a few tasklets to run in softirq context.
There are a couple of others which may also be safe. I've converted only the most obvious one. Signed-off-by: Keir Fraser <keir@xen.org> xen-unstable changeset: 23552:7b4a45a4075d xen-unstable date: Thu Jun 16 16:57:22 2011 +0100
-rw-r--r--xen/arch/x86/hvm/hvm.c7
-rw-r--r--xen/common/trace.c3
-rw-r--r--xen/drivers/char/console.c3
-rw-r--r--xen/drivers/passthrough/io.c5
4 files changed, 11 insertions, 7 deletions
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index cbf1a74853..be02364673 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -971,9 +971,10 @@ int hvm_vcpu_initialise(struct vcpu *v)
if ( rc != 0 )
goto fail4;
- tasklet_init(&v->arch.hvm_vcpu.assert_evtchn_irq_tasklet,
- (void(*)(unsigned long))hvm_assert_evtchn_irq,
- (unsigned long)v);
+ softirq_tasklet_init(
+ &v->arch.hvm_vcpu.assert_evtchn_irq_tasklet,
+ (void(*)(unsigned long))hvm_assert_evtchn_irq,
+ (unsigned long)v);
v->arch.guest_context.user_regs.eflags = 2;
diff --git a/xen/common/trace.c b/xen/common/trace.c
index 734f195d82..5f78ba1801 100644
--- a/xen/common/trace.c
+++ b/xen/common/trace.c
@@ -610,7 +610,8 @@ static void trace_notify_dom0(unsigned long unused)
{
send_guest_global_virq(dom0, VIRQ_TBUF);
}
-static DECLARE_TASKLET(trace_notify_dom0_tasklet, trace_notify_dom0, 0);
+static DECLARE_SOFTIRQ_TASKLET(trace_notify_dom0_tasklet,
+ trace_notify_dom0, 0);
/**
* trace - Enters a trace tuple into the trace buffer for the current CPU.
diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index fba702deed..a1c9ceda24 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -327,7 +327,8 @@ static void notify_dom0_con_ring(unsigned long unused)
{
send_guest_global_virq(dom0, VIRQ_CON_RING);
}
-static DECLARE_TASKLET(notify_dom0_con_ring_tasklet, notify_dom0_con_ring, 0);
+static DECLARE_SOFTIRQ_TASKLET(notify_dom0_con_ring_tasklet,
+ notify_dom0_con_ring, 0);
static long guest_console_write(XEN_GUEST_HANDLE(char) buffer, int count)
{
diff --git a/xen/drivers/passthrough/io.c b/xen/drivers/passthrough/io.c
index 86ae0af14f..6afbc5b189 100644
--- a/xen/drivers/passthrough/io.c
+++ b/xen/drivers/passthrough/io.c
@@ -119,8 +119,9 @@ int pt_irq_create_bind_vtd(
return -ENOMEM;
}
memset(hvm_irq_dpci, 0, sizeof(*hvm_irq_dpci));
- tasklet_init(&hvm_irq_dpci->dirq_tasklet,
- hvm_dirq_assist, (unsigned long)d);
+ softirq_tasklet_init(
+ &hvm_irq_dpci->dirq_tasklet,
+ hvm_dirq_assist, (unsigned long)d);
hvm_irq_dpci->mirq = xmalloc_array(struct hvm_mirq_dpci_mapping,
d->nr_pirqs);
hvm_irq_dpci->dirq_mask = xmalloc_array(unsigned long,