Re: [PATCH 2.6.25.10 1/2] libata: fix locking for kmap_atomic

From: Jakub W. Jozwicki
Date: Sun Jul 13 2008 - 09:34:58 EST


Sunday, 13 of July 2008 10:26:30 Andrew Morton napisaÅ(a):
> On Sun, 13 Jul 2008 01:27:36 +0200 "Jakub W. Jozwicki" <jozwicki@xxxxxxxx>
wrote:
> > Change locking surrounding kmap_atomic from local_irqsave to
> > local_irqsave_nort. This fixes issues with PREEMPT_RT.
>
> I assume this is a -rt kernel patch.
>
> > --- linux-2.6.25.10/drivers/ata/libata-core.c 2008-07-03
> > 05:46:47.000000000 +0200
> > +++ linux-2.6.25.10-rt7/drivers/ata/libata-core.c 2008-07-12
> > 23:59:33.132140258 +0200
> > @@ -5157,14 +5157,14 @@
> > unsigned long flags;
> >
> > /* FIXME: use a bounce buffer */
> > - local_irq_save(flags);
> > + local_irq_save_nort(flags);
>
> eww. If we're going to have to do stuff like this in mainline then
> there might be a revolt.

Sorry, this was for -rt only.

[ 17.012011] BUG: sleeping function called from invalid context IRQ-14(5732)
at arch/x86/mm/highmem_32.c:8
[ 17.012011] in_atomic():0 [00000000], irqs_disabled():1
[ 17.012011] Pid: 5732, comm: IRQ-14 Not tainted 2.6.25.10-rtXXX #11
[ 17.012011] [<c0120fc4>] __might_sleep+0xf1/0xf8
[ 17.012011] [<c011c035>] kmap+0x47/0x5a
[ 17.012011] [<c033e728>] ata_hsm_move+0x3d7/0x657
[ 17.012011] [<c0342fd6>] ata_interrupt+0x14e/0x1cb
[ 17.012011] [<c015c72c>] handle_IRQ_event+0x4e/0xd1
[ 17.012011] [<c015d266>] do_irqd+0x126/0x224
[ 17.012011] [<c015d140>] ? do_irqd+0x0/0x224
[ 17.012011] [<c013ae9d>] kthread+0x3b/0x62
[ 17.012011] [<c013ae62>] ? kthread+0x0/0x62
[ 17.012011] [<c0108287>] kernel_thread_helper+0x7/0x10
[ 17.012011] =======================

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/