Re: [BUG] Cavium OCTEON strange illegal instruction

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

 



Zhuang Yuyao 写道:
Hi,

I compiled octeon openssl engine libocteon.so based on
OCTEON-CRYPTO-CORE-1.9.0-60 and OCTEON-ENGINE-LINUX-0.5.0-18.

it works fine under linux-2.6.32.15, but while I upgraded the kernel
to 2.6.33.5 or 2.6.34, running openssl speed test gives me the
following error:

~ # openssl speed -engine octeon rsa1024
Octeon_init success
engine "octeon" set.
Illegal instruction

~ # openssl speed -engine octeon -evp des
Octeon_init success
engine "octeon" set.
Doing des-cbc for 3s on 16 size blocks: Illegal instruction

This should be caused by MIPS CU2 exception handler. You can try Jesper's patch sumbitted one week ago, see below:

Breaking here dropped us to the default code which always sends
a SIGILL to the current process, no matter what the CU2 notifier says.

Signed-off-by: Jesper Nilsson <jesper@xxxxxx>
---
traps.c <mailbox:///home/yshi/.mozilla-thunderbird/caj8i8s5.default/Mail/Local%20Folders/linux-mips?number=11063936#traps.c> |    2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

traps.c
=======================================

diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 8bdd6a6..8527808 100644

--- a/arch/mips/kernel/traps.c

+++ b/arch/mips/kernel/traps.c

@@ -976,8 +976,8 @@

976asmlinkage·void·do_cpu(struct·pt_regs·*regs)
977
978» case·2:
979» » raw_notifier_call_chain(&cu2_chain,·CU2_EXCEPTION,·regs);
-980» » break;
+980» » return;
981
982» case·3:
983» » break;


Yang

Here is the compiling output:

make[1]: Entering directory `/root/octcrypto/applications/linux_engine/sample'
make[1]: Leaving directory `/root/octcrypto/applications/linux_engine/sample'
mips64-octeon-linux-gnu-gcc -I/root/octcrypto/target/include -Iconfig
-DUSE_RUNTIME_MODEL_CHECKS=1 -DCVMX_ENABLE_PARAMETER_CHECKING=0
-DCVMX_ENABLE_CSR_ADDRESS_CHECKING=0 -DCVMX_ENABLE_POW_CHECKS=0 -g
-DOCTEON_MODEL=OCTEON_CN56XX_PASS2 -DOCTEON_TARGET=linux_64 -mabi=64
-march=octeon -msoft-float -Dmain=appmain
-I/opt/netone/buildfarm/build_mips64_glibc/linux-2.6.33.5x-mips64-o60h/arch/mips/include
-MD -c -o mul_lin.o mul_lin.S
mips64-octeon-linux-gnu-gcc  -I.
-I/opt/netone/buildfarm/build_mips64_glibc/openssl-0.9.8n//include
-I/root/octcrypto/components/crypto-api/core/cryptolinux
-I/root/octcrypto/executive -O3 -Wall
-I/root/octcrypto/target/include -Iconfig
-DUSE_RUNTIME_MODEL_CHECKS=1 -DCVMX_ENABLE_PARAMETER_CHECKING=0
-DCVMX_ENABLE_CSR_ADDRESS_CHECKING=0 -DCVMX_ENABLE_POW_CHECKS=0
-DOCTEON_MODEL=OCTEON_CN56XX_PASS2 -DOCTEON_TARGET=linux_64 -mabi=64
-march=octeon -msoft-float -Dmain=appmain -MD -c -o e_octeon.o
e_octeon.c
mips64-octeon-linux-gnu-gcc -I/root/octcrypto/target/include -Iconfig
-DUSE_RUNTIME_MODEL_CHECKS=1 -DCVMX_ENABLE_PARAMETER_CHECKING=0
-DCVMX_ENABLE_CSR_ADDRESS_CHECKING=0 -DCVMX_ENABLE_POW_CHECKS=0
-DOCTEON_MODEL=OCTEON_CN56XX_PASS2 -DOCTEON_TARGET=linux_64 -mabi=64
-march=octeon -msoft-float -Dmain=appmain -shared -o libocteon.so
mul_lin.o e_octeon.o
-L/opt/netone/buildfarm/build_mips64_glibc/openssl-0.9.8n/ -lcrypto


What's happened in the kernel?

thanks very much.

Best regards,
Zhuang Yuyao






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

  Powered by Linux