Static mappings at boottime

Russell King - ARM Linux linux at arm.linux.org.uk
Sat Jan 30 09:55:49 EST 2010


On Sat, Jan 30, 2010 at 11:47:36PM +0900, Khushhua Mogambo wrote:
> Dears
> 
>  my soc have very simple and limited device controllers. I have thought
> maybe I can map all devices's register spaces using iotable_init in map_io.

Yes, you can do this.

> And pass already mapped Virtual addr(and not phys addr) to device drivers
>  via IORESOURCE_MEM.

But you can't do this.  Resources take physical addresses, not virtual
addresses.

> i thinks that way i can do most use of virtual address space for ioremap
> and I can set VMALLOC size to maximum possible. also drivers doesnt have
> to worry about mapping(and no addr space is mapped twice in two code pieces)
> 
> is it considered good kernel porting practice? can we face any problem
> after some times?

Definitely not.

The "simple" approach to your proposal is to map the device space
statically and then intercept ioremap().  When you detect a request
for a range which is already statically mapped, then return the
already mapped virtual address.

This doesn't change the way you write the drivers; you write drivers
using the standard interfaces and continue to assume that those
interfaces will fail.



More information about the linux-arm-kernel mailing list