* Re: [BUG] Cavium OCTEON strange illegal instruction
2010-06-27 6:53 [BUG] Cavium OCTEON strange illegal instruction Zhuang Yuyao
@ 2010-06-28 2:08 ` Yang Shi
2010-06-28 2:08 ` Yang Shi
2010-06-28 2:09 ` Yang Shi
2 siblings, 0 replies; 5+ messages in thread
From: Yang Shi @ 2010-06-28 2:08 UTC (permalink / raw)
To: Zhuang Yuyao; +Cc: linux-mips, ddaney
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@jni.nu>
---
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
>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [BUG] Cavium OCTEON strange illegal instruction
2010-06-27 6:53 [BUG] Cavium OCTEON strange illegal instruction Zhuang Yuyao
2010-06-28 2:08 ` Yang Shi
@ 2010-06-28 2:08 ` Yang Shi
2010-06-28 2:09 ` Yang Shi
2 siblings, 0 replies; 5+ messages in thread
From: Yang Shi @ 2010-06-28 2:08 UTC (permalink / raw)
To: Zhuang Yuyao; +Cc: linux-mips, ddaney
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@jni.nu>
---
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
>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [BUG] Cavium OCTEON strange illegal instruction
2010-06-27 6:53 [BUG] Cavium OCTEON strange illegal instruction Zhuang Yuyao
2010-06-28 2:08 ` Yang Shi
2010-06-28 2:08 ` Yang Shi
@ 2010-06-28 2:09 ` Yang Shi
[not found] ` <AANLkTim_pFHPaMdgG23Ijxwv-9EcXPQU5sWeCze2786Q@mail.gmail.com>
2 siblings, 1 reply; 5+ messages in thread
From: Yang Shi @ 2010-06-28 2:09 UTC (permalink / raw)
To: Zhuang Yuyao; +Cc: linux-mips, ddaney
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@jni.nu>
---
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
>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread