mapping large amount of memory on physical addresses

Jean-Christophe Dubois jcd at tribudubois.net
Thu Mar 17 21:58:55 EST 2005


On Thu, 2005-03-17 at 10:57 +0100, Jean-Christophe Dubois wrote:
> Hello Sophie,
> 
> If you really need the 36MB block in DV to be a physically contiguous
> memory block one possible simple solution would be to exclude both high
> memory blocks from Linux at boot time with mem=220M on the cmdline.

An alternate way is to integrate the bigphysarea patch (which uses
bootmem allocation) to your kernel. In this case you could reserve 36MB
of memory by providing "bigphysarea=37748736" on the command line. I
assume the MC memory will always be excluded from Linux main memory on
your platform.

see: http://ozlabs.org/pipermail/linuxppc64-dev/2005-March/003576.html

Note that this patch doesn't provide you with mapping capabilities from
user space so you would still have to write some kind of mapping driver
using the bigphysarea allocator if you want/need your application to get
at it.

JC

>   
> On Thu, 2005-03-17 at 09:51 +0100, scarayol at assystembrime.com wrote:
> > Hello,
> > 
> > Could you help me : I work on embedded Linux on a MPC885 processor
> > (PowerPC). On my embedded system, i have 2 different components of RAM. One
> > (name = DV, total size of 256 MB ) is only accessed by the processor, the
> > other (name = MC, size = 2MB on the top of the RAM) is also access by an
> > FPGA. I want to do data transferts between each others. For that, I have to
> > allocate a big structure on DV for a size of 36 MB.
> > - Could I do like that to have contiguous memory on DV ?
> > For MC, it would be more complicated : I have to map on the physical
> > adresses of MC (for example 1300 0000-13FF FFFF) in order to be sure that
> > the memory will be really allocated on MC and not on DV (as there is enough
> > place on DV).
> > - How can I do that ?
> > - Do I have to write a driver and use ioremap on the physical address of MC
> > (with reserving the top of memory with 'mem=' at boot time) ? Can i use
> > physical addresses with ioremap or is it only virtual addresses ?
> > I think i can reserve the memory early in boot via the bootmem allocator
> > but i think it isn't with physical addresses only an amount of memory and
> > it's only forbdrivers directly linked in  the kernel image and i want a
> > module.
> > - Is there another solution to do that ?
> > 
> > Thank you really for your help.
> > 
> > Best regards.
> > 
> > ----------------------------------------------------------
> > Sophie CARAYOL
> > 
> > TECHNOLOGIES & SYSTEMES
> > 50 rue du Président Sadate
> > F - 29337 QUIMPER CEDEX
> > 
> > Tél: +33 2 98 10 30 06
> > mailto:scarayol at assystembrime.com
> > ----------------------------------------------------------
> > 
> > 
> > _______________________________________________
> > Linuxppc-embedded mailing list
> > Linuxppc-embedded at ozlabs.org
> > https://ozlabs.org/mailman/listinfo/linuxppc-embedded
> 
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded




More information about the Linuxppc-embedded mailing list