Re: [Ocf-linux-users] OCF's ixp4xx freeze on 2.6.18-rt7
Brought to you by:
david-m
From: Tomasz R. <tro...@pr...> - 2007-09-13 12:14:43
|
David, I have also noticed that the ixp_process_pending have only one element on the list. This function is run only once. Is it normal behaviour or not? I have add a call to crypto_done just before the end of the function but I got no change at all - as openssl was freezing still is freezing. If you have any clue or idea which piece of code should I debug closer please let me know. Thanks, Tomasz David McCullough pisze: > Jivin Tomasz Rostanski lays it down ... >> Hi, >> >> It seems that the crypto_done is never been called, so the loop is >> waiting infinitive and the device freezes. >> So it definitelly could as you have described. However I have checked >> the function ixCryptoAccAuthCryptPerform to see if it has changed since >> 2.0 version of the library but is exactly the same. >> I'll try to find what are the differences in crypto part of the library >> - maybe there I will find the clue. > > Lets hope. We have 2.1 running here (not sure if thats in your tree or > not). It seems to be behaving so far. Mostly IXP465 testing though. > >> btw. The ixpCryptoAccCtxRegister failed 6 error I got when I tried to >> run this on another board - I have returned to my current one ;) > > Ok, best I can tell, 6 = ALG unsupported, which doesn't really make > sense, but perhaps that helps you. You can find the enum (grrr enum > errors) in: > > ixp400-1.4/ixp400_xscale_sw/src/include/IxCryptoAcc.h > > Cheers, > Davidm > >> David McCullough wrote: >>> Jivin Tomasz Rostanski lays it down ... >>>> Hi, >>>> >>>> I have debug the code a bit and found where the freeze is. >>>> The waiting code in cryptodev_op is never ending from the while loop: >>>> do { >>>> wait_event_interruptible(...); >>>> } while ((crp->crp_flags & CRYPTO_F_DONE) == 0); >>>> >>>> When I set the rp->crp_flags to CRYPTO_F_DONE in ixp_q_process before >>>> return when status equals to IX_CRYPTO_ACC_STATUS_SUCCESS the freeze is >>>> not happening. >>>> So maybe there is something is wrong with wait_event_interruptible >>>> function in my kernel or I don't know. >>> >>> We have seen something like this just recently. A hash of a 0 length >>> buffer would cause an error and the access lib would not report it, or >>> call the callback. >>> >>> Any chance you are doing something like this ? >>> >>> Setting CRYPTO_F_DONE in ixp_q_process when you get a >>> IX_CRYPTO_ACC_STATUS_SUCCESS is not good, you will be returning before >>> the operation is completed. >>> >>> CRYPTO_F_DONE is set by the call to crypto_done, which happens on error >>> or when the callback occurs. >>> >>> I am guessing you are past this error as well: >>> >>> "ixpCryptoAccCtxRegister failed 6" >>> >>> Cheers, >>> Davidm >>> >>> >>>> David McCullough napisa?(a): >>>>> Jivin Tomasz Rostanski lays it down ... >>>>>> Hi, >>>>>> >>>>>>>> I have checked the latest ixp400 access lib (2.4) and ixp_400 >>>>>>>> ethernet driver (1.7). I didn't use the Intel patches for crypto >>>>>>>> initialization in ixp400_eth. >>>>>>>> The result is still the same - the device freezes when I run openssl >>>>>>>> or ssh. >>>>>>>> I'm having microcode compiled in driver - load it from file to >>>>>>>> /dev/ixNpe, so I have recompiled it and load the microcode from file >>>>>>>> but this didn't make any difference. >>>>>>> Are you using the "crypto version" of the access library ? >>>>>> Yes, I'm using the crypto version of the library. >>>>>> >>>>>>>> Could this issue be related with the hardware? I'm using the >>>>>>>> AirTegrity box which was designed completely by them and not uses >>>>>>>> redboot bootloader but their own one. Could it be the reason of the >>>>>>>> problem I'm having? >>>>>>> No, we do the same, it has no bearing on how the NPE's do their >>>>>>> thing. >>>>>>> >>>>>>> Are you loading the correct NPE code (with crypto support etc). >>>>>> Normally I have NPE code compiled in the sources. I'm using the version >>>>>> with crypto support so it should be ok. >>>>> ok. >>>>> >>>>>>>> I'll give a try on Gateworks GW2347 and see if it will be working as >>>>>>>> it should or not. >>>>>> Ok, I have a problem with initialization crypto on the gw2347 - the >>>>>> message: >>>>>> "ixpCryptoAccCtxRegister failed 6" appears when I run openssl - I have >>>>> Thats sounds weird. It sounds like the crypto isn't working properly >>>>> for some reason. >>>>> >>>>> ixpCryptoAccCtxRegister doesn't need much to work. >>>>> >>>>>> checked and the ixp4xx module when loading returns the error that >>>>>> cannot initialize crypto. >>>>> That is ok, if the network driver init's the crypto then you will get >>>>> this error since we cannot tell that it has been done, yet it returns a >>>>> fail if it is already initted. >>>>> >>>>> Might be worth checking the details of the error. >>>>> >>>>> Cheers, >>>>> Davidm >>>>> >>>>>>>> David McCullough napisa?(a): >>>>>>>>> Jivin Tomasz Rostanski lays it down ... >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>>> Which access library version are you using ? >>>>>>>>>> The full name is ixp400accesslibrarywithcrypto-2.3.1 >>>>>>>>> Ok, not sure we have tested OCF with version 2.3 of the access lib. >>>>>>>>> It is part of our tree so I will try it. >>>>>>>>> >>>>>>>>> Not sure you mentioned which sources you are using, but the >>>>>>>>> uClinux-dist or SnapGear dists have very good IXP425 support >>>>>>>>> and less patching ;-) >>>>>>>>> >>>>>>>>>>> Can you load ocf, cryptodev and ixp4xx all with debug enabled: >>>>>>>>>>> >>>>>>>>>>> modprobe ocf crypto_debug=1 >>>>>>>>>>> modprobe cryptodev cryptodev_debug=1 >>>>>>>>>>> modprobe ixp4xx ixp_debug=1 >>>>>>>>>>> >>>>>>>>>>> The run the test, capture all the console output and send me a copy >>>>>>>>>>> for reference. >>>>>>>>>> The output is attached (ocf.log). >>>>>>>>> Ok, I will try and get some time on it in the next day or so, >>>>>>>>> thanks. >>>>>>>>> >>>>>>>>> Actually, just had a quick look, I think the access lib is blowing >>>>>>>>> the >>>>>>>>> stack. It is renowned for doing this. >>>>>>>>> >>>>>>>>> If you can try increasing the kernel stack size to 8K if it isn't >>>>>>>>> already it might help. >>>>>>>>> >>>>>>>>> Otherwise, you may find the info to fix it in our access lib patch: >>>>>>>>> >>>>>>>>> http://ftp.snapgear.org/pub/snapgear/src/snapgear-modules-20061012.sh >>>>>>>>> >>>>>>>>> Or perhaps try the Snapgear/uClinux-dist if you have time. We have >>>>>>>>> all >>>>>>>>> these sort or problems sorted already ;-) >>>>>>>>> >>>>>>>>>>> Have you tried turning off preemption ? I don't think I have ever >>>>>>>>>>> tested with that. >>>>>>>>>> Yes, I have tried but didn't help :( >>>>>>>>> Oh well, looks like a real bug then ;-) >>>>>>>>> >>>>>>>>> Cheers, >>>>>>>>> Davidm >>>>>>>>> >>>>>>>>>>>> David McCullough napisa?(a): >>>>>>>>>>>>> Jivin Tomasz Rostanski lays it down ... >>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>> >>>>>>>>>>>>>> I tried using ixp4xx module for hardware crypto on my ixp425 >>>>>>>>>>>>>> device with kernel 2.6.18-rt7 (PREEMPT_DESKTOP). I'm using >>>>>>>>>>>>>> ixp400 access library with crypto in version 2.3.1 and >>>>>>>>>>>>>> ixp400_eth driver in version 1.6 (with Intel's patch for OCF >>>>>>>>>>>>>> support - >>>>>>>>>>>>>> http://downloadcenter.intel.com/detail_desc.aspx?ProductID=2100&DwnldID=11266&agr=Y). >>>>>>>>>>>>>> >>>>>>>>>>>>>> I'm loading the modules like described in Intel readme: >>>>>>>>>>>>>> mknod /dev/crypto c 10 70 >>>>>>>>>>>>>> mknod -m 666 /dev/ixNpe c 241 0 >>>>>>>>>>>>>> modprobe ixp400 >/dev/null 2>/dev/null >>>>>>>>>>>>>> modprobe ixp400_eth >/dev/null 2>/dev/null >>>>>>>>>>>>>> modprobe ocf >>>>>>>>>>>>>> modprobe cryptodev >>>>>>>>>>>>>> modprobe ixp4xx ixp_init_crypto=0 >>>>>>>>>>>>>> >>>>>>>>>>>>>> Then when I run the: openssl speed -elapsed -evp des-ede3-cbc >>>>>>>>>>>>>> -cpu -engine cryptodev the device hangs (I'm using >>>>>>>>>>>>>> openssl-0.9.8a patched for OCF). The same happend when I tried >>>>>>>>>>>>>> to connect from the device using ssh. >>>>>>>>>>>>>> I have enabled debugging and saw that the debugging from >>>>>>>>>>>>>> ixp_q_process is the last one displayed. So I have started >>>>>>>>>>>>>> adding some debug messages to that function and found that the >>>>>>>>>>>>>> hand appears after the following code: >>>>>>>>>>>>>> if (IX_CRYPTO_ACC_STATUS_SUCCESS == status) >>>>>>>>>>>>>> return; >>>>>>>>>>>>>> So I have changed return to goto done and check what will >>>>>>>>>>>>>> happen - this time the openssl didn't hang and did it's work. >>>>>>>>>>>>>> But the ssh is not working - displays evp_crypt: EVP_Cipher >>>>>>>>>>>>>> failed and exits. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I have tried the cryptosoft module instead of ixp4xx and this >>>>>>>>>>>>>> one works without any problems, so it seems that some problem >>>>>>>>>>>>>> exists in ixp4xx module. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Do you have any clue what could be wrong? I'm almost sure that >>>>>>>>>>>>>> someday on older kernel (2.6.12) I got ixp4xx working without >>>>>>>>>>>>>> problems. >>>>>>>>>>>>> You might want to try incorporating the latest code from the >>>>>>>>>>>>> sourceforge >>>>>>>>>>>>> site. I haven't seen a like up like you describe on the ixp for >>>>>>>>>>>>> a long >>>>>>>>>>>>> time and I don't know exactly everything that is in the Intel >>>>>>>>>>>>> patches. >>>>>>>>>>>>> >>>>>>>>>>>>> Try out the latest download at: >>>>>>>>>>>>> >>>>>>>>>>>>> ocf-linux.sourceforge.net >>>>>>>>>>>>> >>>>>>>>>>>>> and then it will be much easier for me to help you. I run IXP >>>>>>>>>>>>> boards >>>>>>>>>>>>> here and can easily try some things, >>>>>>>>>>>>> >>>>>>>>>>>>> Cheers, >>>>>>>>>>>>> Davidm >>>>>>>>>>>>> > |