[Top] [All Lists]

Re: smp8634 add memory at dram1

To: "YH Lin" <>
Subject: Re: smp8634 add memory at dram1
From: "David Kuk" <>
Date: Thu, 22 Nov 2007 15:35:11 +0800
In-reply-to: <>
Original-recipient: rfc822;
References: <>
Dear all,

thank you very much Lin, for your kindly reply. May I ask you some more questions ?

1. about your answer 2, it's true that 0x10000000 to 0x10020000 are reserved,
so what's the way i can sure no one use this area of memory ? because em86xx_kmem_start is still the dram controller0's.

2. about your answer 3, if i need to enable the PCI host, you mean i will have no chance to have greater than 112 MB DMA memory start from the em86xx_kmem_start ? it's seems a dilemma here, I may describe it more clearly. I have one ram size of 128 at dram0 controller and as well as another 128 at dram1 controller. previously it's work very well, the controller0's ram is for linux and controller1's memory is for video decode. But recently because the grow of code size of grow of both linux as well as middle ware, we really need more memory for for kernel run, so if in this situation , what should i do ?

thx a lot for your help

On 11/21/07, YH Lin <> wrote:


Hi David,


We have not done so for SMP8634. But I think it is possible to do this:


  1. Using remap register 4 instead, there you will have 0x0c000000-0x16fe0000 contiguous space, where 0x0c000000-0x0fffffff is mapped to DRAM1 and 0x10000000-0x16fe0000 is in DRAM0.
  2. You'd probably reserve the memory 0x10000000-0x10020000 since this area is used by other things so it'd be better if no one else is using this portion of memory.
  3. As for DMA zone or normal zone, that depends. Do you have the need to enable PCI host? If so, the max. size of DMA zone is 112MB, or else it can all be DMA memory (provide that the address translation routines are modified accordingly).





From: [mailto:] On Behalf Of David Kuk
Sent: Monday, November 19, 2007 8:23 PM
To: David Daney
Subject: Re: smp8634 add memory at dram1


Thanks you all for helping.

AS Daney suggested, I have map the dram1's first 64 MB memory (total 128) to remap register 3,
and add the remap register 3 into the BOOT_MEMROY_RAM use the method add_memory_region.
When i bootup the linux kernel print out that it have totally 176MB ram , which is 06fe0000@10020000(dram0) and 04000000@08000000(64mb dram1 at remap register3). How ever, This mapping shows that the total memory in the linux kernel is not contiguous. the OS can run, but as i see the source code, when the kernel divided these memory into pages, it did not consider  if the memory is contiguous or not, is it ok ? and  how should i  allocate the memories into ZONE[DMA] and ZONE[NORMAL], is it possible if I wish all the 176MB memory can be allocate as ZONE[DMA]?

Best wishes

On 11/15/07, David Daney <> wrote:

David Kuk wrote:
> After study about the memory configuration of sigma smp8634, i found
> some difficult to accomplish the task.
> so my question is if have two 128MB ram separately under dram0 and
> dram1 controller, where dram0 for linux and dram1 for video decoding.
> Now the situation is the memory for linux is not enough and video
> decoding can not use all of it's 128MB at dram1, what we plan to do is
> to share 64MB at dram1 to the linux kernel as high memory, and only
> reserved 64MB at dram1 for the video decoding.
> first, in MIPS architecture, we found that the kseg0 and kseg1 are
> mapped to 0x00000000-0x20000000, which include only dram0 controller,
> so we wish to add the dram1 memory manually to the kernel using
> function add_memory_region at setup.c , after booting up result the
> warning that the memory larger than 512 need to configured the kernel
> support high memory.
> then when we configure the kernel to support high memory at menu
> configure, the kernel when booting up will remind us our CPU do not
> support high memory due to cache aliases.
> Both way will lead the linux can not boot up normally, so what should
> we do, is there any mis-understanding about the hardware
> implementation or MIPS design?

I think your understanding of the 8634 is at least close to correct.

It may be possible (but I have not tried it yet) to use the remapping
registers to move dram1 into the first 512MB of the memory space.  If it
is possible, you would then have to modify the gbus access functions
accordingly.  Also the 8634 media drivers would probably have to be
changed as well.  I am not sure about the microcode for the media DSPs,
but if it is dependent on the mapping of the DRAM, then you would
probably have to get the vendor's help.

Let me know if you are successful.

David Daney


<Prev in Thread] Current Thread [Next in Thread>