Messages in this thread | ![/](/images/icornerl.gif) | | Date | Fri, 7 Aug 2009 17:02:43 +0800 | Subject | [UBI UBIFS] replace vmalloc with kmalloc | From | JiSheng Zhang <> |
| |
If nandflash driver use DMA to support UBI and UBIFS i/o, there will be panic like the following. This is because UBI and UBIFS use vmalloced buffer somewhere while nandflash driver put the buffer under DMA and DMA support doesn't like vmalloced memory. [ 412.369280] UBIFS: default file-system created [ 412.374879] Unable to handle kernel NULL pointer dereference at virtual address 00000000 [ 412.383177] UBIFS: background thread "ubifs_bgt0_0" started, PID 887 [ 412.389656] pgd = c0004000 [ 412.392419] [00000000] *pgd=00000000 [ 412.396117] Internal error: Oops: 817 [#1] PREEMPT
Yes, I know kmalloc may fail when memory get fragmented, but I grep the UBI and UBIFS's source, there are six .c files and seven .c files using vmalloc, the function which call vmalloc are all called during the ubi being attached and the volume being mounted. In embedded system, this mainly happen during kernel boot, it should succeed.
After replacing vmalloc with kmalloc, ubi and ubifs runs fine on my board. I can alos upload a patch.
Comments are welcomed!
Jisheng
| ![\](/images/icornerr.gif) |