From mboxrd@z Thu Jan 1 00:00:00 1970 Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 28 Jun 2010 07:59:13 +0200 (CEST) Received: from mail.windriver.com ([147.11.1.11]:33403 "EHLO mail.windriver.com" rhost-flags-OK-OK-OK-OK) by eddie.linux-mips.org with ESMTP id S1492153Ab0F1F67 (ORCPT ); Mon, 28 Jun 2010 07:58:59 +0200 Received: from ALA-MAIL03.corp.ad.wrs.com (ala-mail03 [147.11.57.144]) by mail.windriver.com (8.14.3/8.14.3) with ESMTP id o5S5wo8a016659; Sun, 27 Jun 2010 22:58:50 -0700 (PDT) Received: from [128.224.162.222] ([128.224.162.222]) by ALA-MAIL03.corp.ad.wrs.com with Microsoft SMTPSVC(6.0.3790.1830); Sun, 27 Jun 2010 22:58:49 -0700 Message-ID: <4C283A19.1000709@windriver.com> Date: Mon, 28 Jun 2010 13:58:49 +0800 From: Yang Shi User-Agent: Thunderbird 2.0.0.24 (X11/20100411) MIME-Version: 1.0 To: Zhuang Yuyao CC: linux-mips@linux-mips.org Subject: Re: [BUG] Cavium OCTEON strange illegal instruction References: <4C280472.6070005@windriver.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 28 Jun 2010 05:58:49.0915 (UTC) FILETIME=[FAC9D0B0:01CB1686] X-archive-position: 27270 X-ecartis-version: Ecartis v1.0.0 Sender: linux-mips-bounce@linux-mips.org Errors-to: linux-mips-bounce@linux-mips.org X-original-sender: yang.shi@windriver.com Precedence: bulk X-list: linux-mips Return-Path: X-Keywords: X-UID: 18392 Zhuang Yuyao 写道: > Thanks, Yang, the patch works. But it seems that this patch is not yet > applied to the linux source master branch on > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary > http://git.kernel.org/?p=linux/kernel/git/ralf/linux.git;a=summary Yang > On Mon, Jun 28, 2010 at 10:09 AM, Yang Shi wrote: > >> 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 >> --- >> 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 >>> >>> >>> >>> >> > >