Linux 2.6.12.1 PowerPC 750FX Initialization Failures (Caching & MMU)

Goodman, Brad bgoodman at empirix.com
Fri Jul 29 03:22:26 EST 2005


I am running the 2.6.12.1 Kernel with a Force CPCI-695 board.

(This board has a PPC 750FX, with a Marvell Disco II (MV64360) - although it uses a 8250, instead of the Disco II UART.)

Anyway…

This thing is hanging like a buffalo on bootup - in early Kernel initialization:

I setup_common_caches it gets to here:

  mfspr r11,SPRN_HID0				← HID0 is 0x800200a4
  andi. r0,r11,HID0_DCE
  ori r11,r11,HID0_ICE|HID0_DCE
  ori r8,r11,HID0_ICFI
  bne 1f      /* don't invalidate the D-cache */
  ori r8,r8,HID0_DCI    /* unless it wasn't enabled */
1:  sync
  mtspr SPRN_HID0,r8    /* enable and invalidate caches */     ← r8 is now 0x8002cca4
  ### NEVER GETS HERE
  sync
  mtspr SPRN_HID0,r11   /* enable caches */  
  mr r3,r11

So it's hanging trying to enable and invalidate the caches.

So - trying to ditch that problem until later - I had it leave the caches off and continuing.

Now, it gets to the point where it tries to enable the MMU, and in the turn_on_mmu function it appears to go unresponsive right after the return-from-interrupt:

turn_on_mmu:
  mfmsr r0
  ori r0,r0,MSR_DR|MSR_IR
  mtspr SPRN_SRR1,r0
  lis r0,start_here at h
  ori r0,r0,start_here at l
  mtspr SPRN_SRR0,r0
  SYNC
  ## GETS HERE
  RFI       /* enables MMU */

I put a check in start_here - and it never reaches it. The BATs should all be set up per-normal initialization, and I verified that it was mapping Physical address 0 to Effective Address 0xc0000000 - but still no luck.

BTW - I am loading my znetboot image (zImage with no ELF header) at 0x800000 - so it's not relocating on startup (and verified that this was happening correctly.)

I don't know if the caching issue is related to the MMU issue - or they are two totally separate things.

Any ideas????

Brad Goodman
Empirix, Inc.
bgoodman -et- empirix -dut- com



More information about the Linuxppc-embedded mailing list