diff options
author | Keir Fraser <keir@xen.org> | 2011-06-23 12:02:54 +0100 |
---|---|---|
committer | Keir Fraser <keir@xen.org> | 2011-06-23 12:02:54 +0100 |
commit | 1b6b61ac52453650cf0daaeb721c82eb5715a1d6 (patch) | |
tree | c073bb683288feb66288b2f0652f91c0a4fb8962 | |
parent | 414e31298439d5cae3b3d7099ae346cd2fd6aa6e (diff) | |
download | xen-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.c | 7 | ||||
-rw-r--r-- | xen/common/trace.c | 3 | ||||
-rw-r--r-- | xen/drivers/char/console.c | 3 | ||||
-rw-r--r-- | xen/drivers/passthrough/io.c | 5 |
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, |