I am working on an embedded board running linux 2.4.28. I 've got a driver module written that provides access to I/O and reserved memory.
I have noticed that user mmap() calls handled in my mmap() file operations routine return a one-to-one mapping (between virtual and physical addresses) for some addresses but not for others.
= 0xa000 0000 -- NON one to one
I thought about modifying the "vm_start" parameter but I dont think thats a "safe" hack. MAP_FIXED returns an error message and doesnt even enter my mmap() file operations routine.
I am currently re-reading the mmap and dma section of the linux device driver manual but I would like pointers on a way around this.
Note the physical address I am trying get at : 0xb000 0000 isnt in conflict ... meaning there arent any virtual addresss allocated between 0xb000 0000 and
0xbfff ffff so I should be able to get at this.But the "vm_start" argument i am passed is consistently a virtual address below this value.
Thanks in advance