[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-crypto-vger
Subject:    Re: device driver for hardware encryption
From:       Sebastian Andrzej Siewior <linux-crypto () ml ! breakpoint ! cc>
Date:       2010-01-30 14:54:12
Message-ID: 20100130145412.GA8508 () Chamillionaire ! breakpoint ! cc
[Download RAW message or body]

* Bai Shuwei | 2010-01-28 17:12:46 [+0800]:

>   When I add the hardware device driver for crypto, i get the bellow
>error information. My kernel is 2.6.26
>
>[  319.938922] Call Trace:
>[  319.938926]  [<ffffffff80427cd4>] schedule+0x95/0x635
>[  319.938934]  [<ffffffffa0eb629b>] :libfpga:fpga_dma_open+0xa5/0xab
>[  319.938941]  [<ffffffffa0eb67ea>] :libfpga:fpga_dma_block_read+0x12b/0x167
>[  319.938945]  [<ffffffff802461c5>] autoremove_wake_function+0x0/0x2e
>[  319.938954]  [<ffffffffa039a248>] :dsi_aes:dsi_aes_crypt+0x1db/0x24b
>[  319.938960]  [<ffffffffa03a832a>] :cbc:crypto_cbc_encrypt+0xe6/0x138
>[  319.938964]  [<ffffffffa039e043>] :aes_generic:aes_encrypt+0x0/0x21
>[  319.938980]  [<ffffffffa0384f6f>] :crypto_blkcipher:async_encrypt+0x35/0x3a
That looks wrong from the implementation POV: If your FPGA is doing aes
in CBC mode you shouldn't hack it into aes_generic.c or cbc.c but
implement your own driver with a higher priority.

>I think it is happed when calling the
>wait_event_interruptible(fdev->wait) routine, but i don't know how to
>fix it. Hope can get you help. Thanks!
>
>The encryption calling tree and irq handler tree showed in bellow
>
>/* ecryption callint tree */
>aes_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in)
>|-->dsi_aes_crypt((unsigned int *)in, (unsigned int *) out);
>   |-->do_crypt
>      |-->down_interruptible(&fpga->sem)
>           fpga_dma_block_write()
>           |--> fpga_dma_block_transfer(base, pcie_addr, local_addr,
>size, flag | FPGA_DMA_READ_FLAG); /*write data to hardware */
>                |-->wait_event_interruptible(fdev->wait) /* waiting event*/
>          up()

This isn't helping. Please look at a few drivers which use DMA to
transfer the data and use hardware encryption. Examples are:
- drivers/crypto/talitos.c
- drivers/crypto/hifn_795x.c

>Best Regards
>
>Bai Shuwei

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic