Re: IP32 prom crashes due to __pa() funkiness

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Kumba wrote:
[snip]
> Most of this is because IP22 (Indy/Idigo2 R4xx) and IP32 (O2 R5xxx), while 
> supporting 64bit kernels (same for cobalt, since it's a mips4-level CPU), 
> we had to "trick" them into accepting 64bit code.  IP32 at one point ran 
> 32bit kernels only, but it was later converted to supporting only 64bit 
> kernels, hence the hackery involved.  We describe it as wrapping 64bit code 
> into a 32bit object, because their proms will only recognize 32bit objects 
> (specifically, IP22 will only boot 32bit objects; crash on 64bit; IP32 will 
> take both, but likes 32bit better).
> 
> So really, CONFIG_BUILD_ELF64 was probably part of this "magic" to stuff 
> 64bit code into a candy-coated 32bit wrapper for the Indy (And later the 
> O2) to suck down w/o complaint.  Hence, __pa() probably needs to replicate 
> this support, or we all need to brainstorm a proper way to get these 
> systems to boot.

BUILD_ELF64 + -sym32 + objcopy into a ELF32 file is supposed to be the
full replacement for the old o64-in-o32 hack.

> Octane, Origin, IP28 (Indigo2 R10000). et al, don't complain, and don't 
> need this hacker, because their proms boot proper 64bit binaries only (they 
> reject all else).
> 
> So probably the following is true (someone correct me if not)
> 
> if (CONFIG_BUILD_ELF64=y and (!CONFIG_SGI_IP22 or !CONFIG_SGI_IP32 or 
> !CONFIG_COBALT)) then kernel load address must be in XKPHYS
> else load address must be in CKSEG0
> if CONFIG_BUILD_ELF64=n then kernel load address must be in CKSEG0

The 64/64 configs can do both:

                      |  BUILD_ELF64  | BUILD_ELF32
---------------------------------------------------
64bit firmware loader | CKSEG0/XKPHYS |   CKSEG0
32bit firmware loader |     CKSEG0    |   CKSEG0


Thiemo


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux