|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [PATCH] blkfront: Move blkif_interrupt into a tasklet.
On Thu, 2010-09-02 at 18:46 -0400, Jeremy Fitzhardinge wrote:
> On 08/22/2010 11:54 PM, Daniel Stodden wrote:
> > Response processing doesn't really belong into hard irq context.
> >
> > Another potential problem this avoids is that switching interrupt cpu
> > affinity in Xen domains can presently lead to event loss, if
> > RING_FINAL_CHECK is run from hard irq context.
>
> I just got this warning from a 32-bit pv domain. I think it may relate
> to this change. The warning is
We clearly spin_lock_irqsave all through the blkif_do_interrupt frame.
It follows that something underneath quite unconditionally chose to
reenable them again (?)
Either: Can you add a bunch of similar WARN_ONs along that path?
Or: This lock is quite coarse-grained. The lock only matters for queue
access, and we know irqs are reenabled, so no need for flags. In fact we
only need to spin_lock_irq around the __blk_end_ calls and
kick_pending_.
But I don't immediately see what's to blame, so I'd be curious.
Daniel
> void blk_start_queue(struct request_queue *q)
> {
> WARN_ON(!irqs_disabled());
> Oddly, I only saw this pair once at boot, and after that the system
> seemed fine...
>
> [ 4.376451] ------------[ cut here ]------------
> [ 4.377415] WARNING: at /home/jeremy/git/linux/block/blk-core.c:337
> blk_start_queue+0x20/0x36()
> [ 4.377415] Modules linked in: xfs exportfs xen_blkfront [last unloaded:
> scsi_wait_scan]
> [ 4.377415] Pid: 0, comm: swapper Not tainted 2.6.32.21 #32
> [ 4.377415] Call Trace:
> [ 4.377415] [<c1039f74>] warn_slowpath_common+0x65/0x7c
> [ 4.377415] [<c11b3ae1>] ? blk_start_queue+0x20/0x36
> [ 4.377415] [<c1039f98>] warn_slowpath_null+0xd/0x10
> [ 4.377415] [<c11b3ae1>] blk_start_queue+0x20/0x36
> [ 4.377415] [<edc74712>] kick_pending_request_queues+0x1c/0x2a
> [xen_blkfront]
> [ 4.377415] [<edc74ec4>] blkif_do_interrupt+0x176/0x189 [xen_blkfront]
> [ 4.377415] [<c103e063>] tasklet_action+0x63/0xa8
> [ 4.377415] [<c103f2d5>] __do_softirq+0xac/0x152
> [ 4.377415] [<c103f3ac>] do_softirq+0x31/0x3c
> [ 4.377415] [<c103f484>] irq_exit+0x29/0x5c
> [ 4.377415] [<c121a1b6>] xen_evtchn_do_upcall+0x29/0x34
> [ 4.377415] [<c100a027>] xen_do_upcall+0x7/0xc
> [ 4.377415] [<c10023a7>] ? hypercall_page+0x3a7/0x1005
> [ 4.377415] [<c10065a9>] ? xen_safe_halt+0x12/0x1f
> [ 4.377415] [<c10042cb>] xen_idle+0x27/0x38
> [ 4.377415] [<c100877e>] cpu_idle+0x49/0x63
> [ 4.377415] [<c14a6427>] rest_init+0x53/0x55
> [ 4.377415] [<c179c814>] start_kernel+0x2d4/0x2d9
> [ 4.377415] [<c179c0a8>] i386_start_kernel+0x97/0x9e
> [ 4.377415] [<c179f478>] xen_start_kernel+0x576/0x57e
> [ 4.377415] ---[ end trace 0bfb98f0ed515cdb ]---
> [ 4.377415] ------------[ cut here ]------------
> [ 4.377415] WARNING: at /home/jeremy/git/linux/block/blk-core.c:245
> blk_remove_plug+0x20/0x7e()
> [ 4.377415] Modules linked in: xfs exportfs xen_blkfront [last unloaded:
> scsi_wait_scan]
> [ 4.377415] Pid: 0, comm: swapper Tainted: G W 2.6.32.21 #32
> [ 4.377415] Call Trace:
> [ 4.377415] [<c1039f74>] warn_slowpath_common+0x65/0x7c
> [ 4.377415] [<c11b3961>] ? blk_remove_plug+0x20/0x7e
> [ 4.377415] [<c1039f98>] warn_slowpath_null+0xd/0x10
> [ 4.377415] [<c11b3961>] blk_remove_plug+0x20/0x7e
> [ 4.377415] [<c11b39ca>] __blk_run_queue+0xb/0x5e
> [ 4.377415] [<c11b3af4>] blk_start_queue+0x33/0x36
> [ 4.377415] [<edc74712>] kick_pending_request_queues+0x1c/0x2a
> [xen_blkfront]
> [ 4.377415] [<edc74ec4>] blkif_do_interrupt+0x176/0x189 [xen_blkfront]
> [ 4.377415] [<c103e063>] tasklet_action+0x63/0xa8
> [ 4.377415] [<c103f2d5>] __do_softirq+0xac/0x152
> [ 4.377415] [<c103f3ac>] do_softirq+0x31/0x3c
> [ 4.377415] [<c103f484>] irq_exit+0x29/0x5c
> [ 4.377415] [<c121a1b6>] xen_evtchn_do_upcall+0x29/0x34
> [ 4.377415] [<c100a027>] xen_do_upcall+0x7/0xc
> [ 4.377415] [<c10023a7>] ? hypercall_page+0x3a7/0x1005
> [ 4.377415] [<c10065a9>] ? xen_safe_halt+0x12/0x1f
> [ 4.377415] [<c10042cb>] xen_idle+0x27/0x38
> [ 4.377415] [<c100877e>] cpu_idle+0x49/0x63
> [ 4.377415] [<c14a6427>] rest_init+0x53/0x55
> [ 4.377415] [<c179c814>] start_kernel+0x2d4/0x2d9
> [ 4.377415] [<c179c0a8>] i386_start_kernel+0x97/0x9e
> [ 4.377415] [<c179f478>] xen_start_kernel+0x576/0x57e
> [ 4.377415] ---[ end trace 0bfb98f0ed515cdc ]---
>
> J
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|