All of lore.kernel.org
 help / color / mirror / Atom feed
* call trace caused by iounmap and spin_lock_irqsave
@ 2014-12-08  9:18 Li, ZhenHua
  0 siblings, 0 replies; only message in thread
From: Li, ZhenHua @ 2014-12-08  9:18 UTC (permalink / raw)
  To: linux-kernel@vger.kernel.org; +Cc: Li, ZhenHua

Hi all,
I meet a problem about ioremap/iounmap and spin_lock_irqsave
/spin_unlock_irqrestore , does anybody know how to fix this?

The code is like this:

void some_function(){
     void __iomem * virt_mem;
     ....

     spin_lock_irqsave(&iommu->lock, flags);
     virt_mem = ioremap(from, size);
     memcpy(to, virt_mem, size);
     ....
     iounmap(virt_mem);
     ....
     spin_unlock_irqrestore(&iommu->lock, flags);
}

The problem is : when iounmap is called between spin_lock_irqsave and
spin_unlock_irqrestore, there may happen some call trace dump.

[    8.651661] WARNING: CPU: 2 PID: 1 at kernel/smp.c:401 
smp_call_function_many+0xbd/0x290()
[    8.660937] Modules linked in:
[    8.664373] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 3.18.0-rc2.bp #113
[    8.671897]  0000000000000000 00000000fc89b093 ffff880035e83848 
ffffffff81691f2b
[    8.680230]  0000000000000000 0000000000000000 ffff880035e83888 
ffffffff81074d21
[    8.688564]  ffff880035e83868 ffffffff81065cc0 ffff880035e83928 
0000000000000002
[    8.696897] Call Trace:
[    8.699641]  [<ffffffff81691f2b>] dump_stack+0x46/0x58
[    8.705412]  [<ffffffff81074d21>] warn_slowpath_common+0x81/0xa0
[    8.712157]  [<ffffffff81065cc0>] ? 
rbt_memtype_copy_nth_element+0xc0/0xc0
[    8.719873]  [<ffffffff81074e3a>] warn_slowpath_null+0x1a/0x20
[    8.726419]  [<ffffffff810ef9bd>] smp_call_function_many+0xbd/0x290
[    8.733453]  [<ffffffff81065cc0>] ? 
rbt_memtype_copy_nth_element+0xc0/0xc0
[    8.741171]  [<ffffffff810efbf1>] on_each_cpu+0x31/0x60
[    8.747035]  [<ffffffff8106647d>] flush_tlb_kernel_range+0x7d/0x90
[    8.753978]  [<ffffffff811af2d7>] __purge_vmap_area_lazy+0x2c7/0x3a0
[    8.761112]  [<ffffffff81063610>] ? arch_pick_mmap_layout+0x280/0x280
[    8.768339]  [<ffffffff811af5bc>] free_vmap_area_noflush+0x7c/0x90
[    8.775276]  [<ffffffff811b0e2e>] remove_vm_area+0x5e/0x70
[    8.781432]  [<ffffffff81060047>] iounmap+0x67/0xa0
.... More trace ....


My question is: If we do not move iounmap out of this lock/unlock field, 
is there any fix for this WARNING?

Thanks
Zhenhua

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2014-12-08  9:19 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-08  9:18 call trace caused by iounmap and spin_lock_irqsave Li, ZhenHua

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.