[PATCH] Allow small areas in io_block_mapping
Adrian Cox
adrian at humboldt.co.uk
Sat Nov 17 03:39:51 EST 2001
Dan Malek wrote:
> Hmmmm....Is io_block_mapping() supposed to be a replacement for ioremap()?
> If so, it doesn't do anything I want. What you are asking for is already
> done by ioremap. If someone has already wired BATs, you get them, and
> if not then single PTEs will be allocated. In this case, just don't
> allocate
> BATs for I/O in the space you want individual pages when you do the board
> initialization, and call ioremap().
I hadn't realised that ioremap could be used before vmalloc was working,
but on examining the code, it looks like it can. So I may just change my
code to use ioremap.
In defense of the patch I would like to say that the extra test is in
the spirit of the existing tests within io_block_mapping(), and if this
doesn't go in then a comment describing the intention and limits of the
interface would be a useful addition to <include/asm-ppc/io.h>.
> I think we still need to define a better set of functions here. I want to:
>
> 1.) Control the virt->phys mapping when necessary by forcing both
> virtual and physical addresses (kind like io_block_mapping now)
>
> 2.) Cover a very large space with a single BAT or large page entry
>
> 3.) Have an ioremap()-like function that will use the physical address
> to either match in 1 or 2 above, or allocate single PTEs if
> no match.
>
> The functions used to set up 1 and 2 above are performed very early during
> memory management initialization and are not subject to change once we
> start using these mapped spaces.
That's pretty well what I need here.
--
Adrian Cox http://www.humboldt.co.uk/
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-dev
mailing list