ioremap()/iounmap() problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux