Re: iounmap() - can't always unmap memory I've mappedt

From: Timur Tabi (ttabi@interactivesi.com)
Date: Mon Oct 02 2000 - 12:15:11 EST


** Reply to message from Alan Cox <alan@lxorguk.ukuu.org.uk> on Mon, 2 Oct 2000
17:18:59 +0100 (BST)

> > Anyway, my original question has not yet been answered: why is it that I can
> > ioremap() any physical page by simply setting one bit, but I cannot always
> > iounmap() it? Why can't iounmap() simply undo what ioremap() did?
>
> The fact you can doesn't mean you should. You need to be sole owner of that
> page before you can fiddle with the reserved bit. You were not sole owner

Ok, is there a way around this? After all, mapping a page I don't own doesn't
really mean anything in the kernel, because all pages, whether or not I own
them, are already mapped! phys_to_virt works on any physical address. What I
want to do is use iounmap_nocache() to access the memory in an uncached manner,
and that's what I do.

Would it be possible to reassign the ioremap()'d memory to some other physical
page that I _do_ own, and then call iounmap? I have no problem doing all of
this stuff in Windows 2000, so I'm surprised that it's so difficult in Linux.

-- 
Timur Tabi - ttabi@interactivesi.com
Interactive Silicon - http://www.interactivesi.com

When replying to a mailing-list message, please don't cc: me, because then I'll just get two copies of the same message. - 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/



This archive was generated by hypermail 2b29 : Sat Oct 07 2000 - 21:00:10 EST