Hi,
Running with latest linux-omap kernel on OMAP3 SDP board, I have problem
with iounmap(). It looks like iounmap() does not properly free large
areas. Below is a test which fails for me in 6-7 loops.
OMAP spesific ioremap code doesn't do much, so I think it's somewhere in
generic ARM code. I looked at the ioremap code and for larger areas the
code uses area sections, and I believe the bug is somewhere there.
Does this work on other processors?
Tomi
#include <linux/module.h>
#include <linux/io.h>
static int test_init(void)
{
const unsigned long paddr = 0x70000000;
const unsigned long size = 2048 * 2048 * 4;
void *vaddr;
int i;
for (i = 0; i < 200; ++i) {
vaddr = ioremap(paddr, size);
if (!vaddr) {
printk("couldn't ioremap\n");
break;
}
printk("ioremapped to %p\n", vaddr);
iounmap(vaddr);
}
return 0;
}
static void test_exit(void) { }
module_init(test_init);
module_exit(test_exit);
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html