Re: QEMU Malta emulation using I6400: runaway loop modprobe binfmt-464c

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

 



On Sat, 3 Jun 2017, Stuart Longland wrote:

> Now, on a single-processor MIPS64r2 VM, this same root filesystem works.
>  It won't work though for a 8-core I6400 system.  If I try to run a SMP
> MIPS64r2 VM, I get "unable to proceed without a CM", so clearly there is
> a feature in the I6400 that doesn't exist in the MIPS64r2.

 Your userland likely requires the legacy NaN encoding (as specified by 
the IEEE 754-1985 floating point standard) whereas I6400 hardware only 
supports the 2008 NaN encoding (as specified by the IEEE 754-2008 floating 
point standard), as per the R6 architecture requirement.  These encodings 
are incompatible with each other and all binaries are annotated in their 
ELF header as to which is required; use `readelf -h' and check `Flags:' 
for the presence of `nan2008' among the features reported.

 There are a couple of ways to move forward.

 First is rebuilding your userland for the 2008 NaN encoding.  I'm sure 
someone already did it, but I don't have a pointer at hand.  This might be 
the best option however.

 Second, since you're running on a simulator anyway, disabling the use of 
FPU hardware and using the Linux kernel FPU emulator should have little 
performance impact, although there surely be some for the Coprocessor 
Unusable exception handling overhead.  The Linux kernel FPU emulator 
supports both NaN encodings at once, so any userland will work 
irrespectively of which NaN encoding it requires and produce correct 
results.  Use the "nofpu" kernel parameter to activate this option.

 Finally, you might also ask the kernel to ignore the binary 
incompatibility and let binaries requiring the wrong NaN encoding run 
anyway.  This will make IEEE 754 floating point produce incorrect results 
in the uncommon case of software relying on NaN arithmetic; it may crash 
for example.  The vast majority of software does not rely on NaN 
arithmetic though.  Use the "ieee754=relaxed" kernel parameter to activate 
this option.

 You can have a look at Documentation/admin-guide/kernel-parameters.txt in 
the kernel sources for some further discussion about these kernel 
parameters.  These will have to be added to the QEMU's `-append' command 
line option.

 HTH,

  Maciej




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

  Powered by Linux