Re: Relocating interrupt vectors in ppc440?

2 messages, 2 authors, 2005-01-28 · open the first message on its own page

Re: Relocating interrupt vectors in ppc440?

From: Matt Porter <mporter@kernel.crashing.org>
Date: 2005-01-27 20:41:20

On Thu, Jan 27, 2005 at 12:18:45PM -0800, Shawn Jin wrote:
First thank you for your valuable response.
quoted
quoted
Assumed that the interrupt vectors locate at the low address space
physically and given that there is 2GB SDRAM shared by two ppc440
cores, can one of linux kernels run at the top of 1GB space? This
means the interrupt vectors for this copy need to move to upper 1GB.
Each core runs a copy of linux kernel independently.
Yes, you'd have to do something like the APUS code does by settings
PPC_MEMSTART appropriately for the second processor. Also, of course
I guess the value set to PPC_MEMSTART should be the offset to the
physical starting address of 2GB SDRAM not the absolute physical
address, right?
It would be 0x00000000 for the first processor and 0x40000000 for the
second processor. Note that head_44x.S is a major place where a lot
of "system memory is at zero" assumptions take place that need to
be addressed for the second processor.
 
quoted
limiting the memory on the first processor to 1GB. There's probably
Limiting the memory on the first processor to 1GB can be done by
setting the mem size to 1GB in boot arguments (mem=1024MB)?
Correct, but for a SoC port where this is a static configuration, you
can simply make your "find_end_of_memory()" routine return 1GB.
quoted
One idea is that if you really don't have to do it, then don't. :)
The SoC is designed in this way that two cores share the DDR but it's
not SMP. Two kernels have to run independently. Relocating interrupt
vectors to upper 1GB memory means that another copy of kernel can run
at upper memory, right. So I'm afraid I have to do that. :(
That's a shame. This sounds identical to a 440-based standard product
that IBM had planned (and cancelled) when they still owned the 4xx
standard product line.
 
-Matt

Re: Relocating interrupt vectors in ppc440?

From: Shawn Jin <hidden>
Date: 2005-01-28 01:55:02

quoted
I guess the value set to PPC_MEMSTART should be the offset to the
physical starting address of 2GB SDRAM not the absolute physical
address, right?
It would be 0x00000000 for the first processor and 0x40000000 for the
second processor. Note that head_44x.S is a major place where a lot
of "system memory is at zero" assumptions take place that need to
be addressed for the second processor.
The theory behind changing PPC_MEMSTART is to change MMU configuration
and to let it translate 0xC0000000 to 0x40000000 for the 2nd
processor. Right?

One place I found the assumption is when loading the kernel physical address.
	/* Kernel is at the base of RAM */
	li r4, 0			/* Load the kernel physical address */

I'll find out more places as you indicated.

Best regards,
-Shawn.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help