Re: ioremap_nocache problem?

Roman Zippel (roman@augan.com)
Thu, 25 Jan 2001 17:44:51 +0100


Hi,

Timur Tabi wrote:

> I mark the page as reserved when I ioremap() it. However, if I leave it marked
> reserved, then iounmap() will not unmap it. If I mark it "unreserved" (i.e.
> reset the reserved bit), then iounmap will unmap it, but it will decrement the
> page counter to -1 and the whole system will crash soon thereafter.
>
> I've been asking about this problem for months, but no one has bothered to help
> me out.

The order is important:

get_free_page();
set_bit(PG_reserved, &page->flags);
ioremap();
...
iounmap();
clear_bit(PG_reserved, &page->flags);
free_page();

Alternatively something like this should also be possible:

get_free_page();
ioremap();
...
iounmap();

nopage() {
...
atomic_inc(&page->count);
return page;
}

But I never tried this version, so I can't guarantee anything. :)

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