Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 12 Aug 2013 18:35:45 -0400
From: Yaniv Sapir <yaniv@...pteva.com>
To: john-dev@...ts.openwall.com
Subject: Re: Parallella: bcrypt

Katja,

[First, apologize for the slow response - I am on a vacation now...]

The registers listing you provided suggest that core (3,3) never received
its start (SYNC) signal, although from the debug info it looks like the
loader did send it. It is very hard to tell what's going on, as you could
tell that yourself...

Register f0444 is a special undocumented register that tells us a few
things about the core's status. However, the value you see does not point
to a specific problem. The STATUS reg does not show a problem either. Can
you please tell me the value of the reg. f040c?

The one thing I'd suspect is using the e_reset_core() call while a global
address load or fetch are in progress. In this case, you can cause a system
lockup if the state machines get reset while the data is in the writeback
stage. Do you have any situation like this in there?

I also would like to know the contents of the IVT of the stuck core. Is it
the same as the other cores?

[PS: good to see that you get help from Sylvain, as my knowledge regarding
the FPGA part is really minimal]


On Fri, Aug 9, 2013 at 4:05 PM, Katja Malvoni <kmalvoni@...il.com> wrote:

> Hi Yaniv, Alexander,
>
> On Fri, Aug 9, 2013 at 4:10 PM, Katja Malvoni <kmalvoni@...il.com> wrote:
>
>> Yes, there are two problems. For stalling problem - I'll run it until it
>> stalls and try to figure out where exactly does it happen. When I identify
>> where it stalls I think I'll know is it because reset fails or it's
>> something else. Also, I'll try resetting cores one by one using
>> e_reset_core() instead of e_reset_system().
>>
>
> For one core main is never reached. These are some non zero registers for
> 3 cores. Core (3, 3) stalls.
>
> Reading from core (3,3) at offset 0xf0400.
> [0x000f0400] = 0x00000000 - CONFIG
> [0x000f0404] = 0x00000000 - STATUS
> [0x000f0408] = 0x00000000 - PC
> [0x000f0420] = 0x00000000 - IRET
> [0x000f0424] = 0x00000000 - IMASK
>
> Reading from core (0,0) at offset 0xf0400.
> [0x000f0400] = 0x00080000 - CONFIG
> [0x000f0404] = 0x00001000 - STATUS
> [0x000f0408] = 0x000007e8 - PC
> [0x000f0420] = 0x00000858 - IRET
> [0x000f0424] = 0x000003ff - IMASK
>
> Reading from core (1,0) at offset 0xf0400.
> [0x000f0400] = 0x00080000 - CONFIG
> [0x000f0404] = 0x00001000 - STATUS
> [0x000f0408] = 0x000007e8 - PC
> [0x000f0420] = 0x00000858 - IRET
> [0x000f0424] = 0x000003ff - IMASK
>
> Also for all three cores [0x000f0444] = 0x00002600, although I don't know
> what is on that address, I wasn't able to find it in architecture
> reference. DMA registers have some value for all three cores but values
> differ - I never used DMA so I don't know what should I expect.
> Yaniv, is it possible that E_SYNC gets lost and core isn't started? How
> should I debug this further?
>
> This is loader output, it's same when everything works fine and when stall
> happens:
> e_set_loader_verbosity(): setting loader verbosity to 1.
> e_reset_system(): resetting full ESYS...
> e_reset_system(): done.
> e_load_group(): loading SREC file parallella_e_bcrypt.srec ...
> ee_process_SREC(): loading core (0,0).
> ee_process_SREC(): loading core (0,1).
> ee_process_SREC(): loading core (0,2).
> ee_process_SREC(): loading core (0,3).
> ee_process_SREC(): loading core (1,0).
> ee_process_SREC(): loading core (1,1).
> ee_process_SREC(): loading core (1,2).
> ee_process_SREC(): loading core (1,3).
> ee_process_SREC(): loading core (2,0).
> ee_process_SREC(): loading core (2,1).
> ee_process_SREC(): loading core (2,2).
> ee_process_SREC(): loading core (2,3).
> ee_process_SREC(): loading core (3,0).
> ee_process_SREC(): loading core (3,1).
> ee_process_SREC(): loading core (3,2).
> ee_process_SREC(): loading core (3,3).
> e_load_group(): send SYNC signal to core (0,0)...
> e_start(): SYNC (0xf042c) to core (0,0)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (0,1)...
> e_start(): SYNC (0xf042c) to core (0,1)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (0,2)...
> e_start(): SYNC (0xf042c) to core (0,2)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (0,3)...
> e_start(): SYNC (0xf042c) to core (0,3)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (1,0)...
> e_start(): SYNC (0xf042c) to core (1,0)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (1,1)...
> e_start(): SYNC (0xf042c) to core (1,1)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (1,2)...
> e_start(): SYNC (0xf042c) to core (1,2)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (1,3)...
> e_start(): SYNC (0xf042c) to core (1,3)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (2,0)...
> e_start(): SYNC (0xf042c) to core (2,0)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (2,1)...
> e_start(): SYNC (0xf042c) to core (2,1)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (2,2)...
> e_start(): SYNC (0xf042c) to core (2,2)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (2,3)...
> e_start(): SYNC (0xf042c) to core (2,3)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (3,0)...
> e_start(): SYNC (0xf042c) to core (3,0)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (3,1)...
> e_start(): SYNC (0xf042c) to core (3,1)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (3,2)...
> e_start(): SYNC (0xf042c) to core (3,2)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): send SYNC signal to core (3,3)...
> e_start(): SYNC (0xf042c) to core (3,3)...
> e_start(): done.
> e_load_group(): done.
> e_load_group(): done loading.
> e_load_group(): closed connection.
> e_load_group(): leaving loader.
>
> Katja
>



-- 
===========================================================
Yaniv Sapir
Adapteva Inc.
1666 Massachusetts Ave, Suite 14
Lexington, MA 02420
Phone: (781)-328-0513 (x104)
Email: yaniv@...pteva.com
Web: www.adapteva.com
============================================================
CONFIDENTIALITY NOTICE: This e-mail may contain information
that is confidential and proprietary to Adapteva, and Adapteva hereby
designates the information in this e-mail as confidential. The information
is
 intended only for the use of the individual or entity named above. If you
are
not the intended recipient, you are hereby notified that any disclosure,
copying,
distribution or use of any of the information contained in this
transmission is
strictly prohibited and that you should immediately destroy this e-mail and
its
contents and notify Adapteva.
==============================================================

[ CONTENT OF TYPE text/html SKIPPED ]

Powered by blists - more mailing lists

Your e-mail address:

Powered by Openwall GNU/*/Linux - Powered by OpenVZ