crypto: hifn - Disable driver when physical size exceeds 32 bits
Evgeniy Polyakov [Sun, 12 Oct 2008 12:14:15 +0000 (20:14 +0800)]
On Tue, Sep 23, 2008 at 08:06:32PM +0200, Dimitri Puzin (max@psycast.de) wrote:
> With this patch applied it still doesn't work as expected. The overflow
> messages are gone however syslog shows
> [  120.924266] hifn0: abort: c: 0, s: 1, d: 0, r: 0.
> when doing cryptsetup luksFormat as in original e-mail. At this point
> cryptsetup hangs and can't be killed with -SIGKILL. I've attached
> SysRq-t dump of this condition.

Yes, I was wrong with the patch: HIFN does not support 64-bit addresses
afaics.

Attached patch should not allow HIFN to be registered on 64-bit arch, so
crypto layer will fallback to the software algorithms.

Signed-off-by: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

drivers/crypto/hifn_795x.c

index 4d22b21..2969ea9 100644 (file)
@@ -2782,6 +2782,11 @@ static int __devinit hifn_init(void)
        unsigned int freq;
        int err;
 
+       if (sizeof(dma_addr_t) > 4) {
+               printk(KERN_INFO "HIFN supports only 32-bit addresses.\n");
+               return -EINVAL;
+       }
+
        if (strncmp(hifn_pll_ref, "ext", 3) &&
            strncmp(hifn_pll_ref, "pci", 3)) {
                printk(KERN_ERR "hifn795x: invalid hifn_pll_ref clock, "