xen-devel
[Xen-devel] Re: xenstored unsafe lock order detected, xlate_proc_name, e
On Sun, Jun 06, 2010 at 10:41:04AM -0700, Jeremy Fitzhardinge wrote:
> On 06/06/2010 10:33 AM, Pasi Kärkkäinen wrote:
> > Hello,
> >
> > I just tried the latest xen/stable-2.6.32.x kernel, ie. 2.6.32.15, with Xen
> > 4.0.0,
> > and I got this:
> >
> > http://pasik.reaktio.net/xen/pv_ops-dom0-debug/log-2.6.32.15-pvops-dom0-xen-stable-x86_64.txt
> >
>
> Does this help?
>
It gave failing hunks so I had to manually apply it to 2.6.32.15,
but it seems to fix that issue. No "unsafe lock order" messages anymore.
Thanks!
-- Pasi
> From 3f5e554f669098c84c82ce75e7577f7e0f3fccde Mon Sep 17 00:00:00 2001
> From: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
> Date: Fri, 28 May 2010 15:28:27 -0700
> Subject: [PATCH] xen/evtchn: don't do unbind_from_irqhandler under spinlock
>
> unbind_from_irqhandler can end up doing /proc operations, which can't
> happen under a spinlock. So before removing the IRQ handler,
> disable the irq under the port_user lock (masking the underlying event
> channel and making sure the irq handler isn't running concurrently and
> won't start running), then remove the handler without the lock.
>
> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
>
> diff --git a/drivers/xen/evtchn.c b/drivers/xen/evtchn.c
> index f79ac5c..6a3a129 100644
> --- a/drivers/xen/evtchn.c
> +++ b/drivers/xen/evtchn.c
> @@ -375,10 +375,12 @@ static long evtchn_ioctl(struct file *file,
> break;
> }
>
> - evtchn_unbind_from_user(u, unbind.port);
> + disable_irq(irq_from_evtchn(unbind.port));
>
> spin_unlock_irq(&port_user_lock);
>
> + evtchn_unbind_from_user(u, unbind.port);
> +
> rc = 0;
> break;
> }
> @@ -484,11 +486,18 @@ static int evtchn_release(struct inode *inode, struct
> file *filp)
> if (get_port_user(i) != u)
> continue;
>
> - evtchn_unbind_from_user(get_port_user(i), i);
> + disable_irq(irq_from_evtchn(i));
> }
>
> spin_unlock_irq(&port_user_lock);
>
> + for (i = 0; i < NR_EVENT_CHANNELS; i++) {
> + if (get_port_user(i) != u)
> + continue;
> +
> + evtchn_unbind_from_user(get_port_user(i), i);
> + }
> +
> kfree(u->name);
> kfree(u);
>
>
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
Previous by Date: |
[Xen-devel] Re: xenstored unsafe lock order detected, xlate_proc_name, evtchn_ioctl, port_user_lock, Jeremy Fitzhardinge |
Next by Date: |
Re: [Xen-users] Re: [Xen-devel] ARP problems with xen 4.0 with pvops kernel 2.6.32.15, Boris Derzhavets |
Previous by Thread: |
[Xen-devel] Re: xenstored unsafe lock order detected, xlate_proc_name, evtchn_ioctl, port_user_lock, Jeremy Fitzhardinge |
Next by Thread: |
[Xen-devel] Re: xenstored unsafe lock order detected, xlate_proc_name, evtchn_ioctl, port_user_lock, Pasi Kärkkäinen |
Indexes: |
[Date]
[Thread]
[Top]
[All Lists] |
|
|