From 011980c821ac99f29828b4bdb3975098f614dbe3 Mon Sep 17 00:00:00 2001 From: Sebastian Siewior Date: Sun, 21 Oct 2007 16:18:12 +0800 Subject: [PATCH] --- yaml --- r: 75893 b: refs/heads/master c: 1f4e4773761d0aa622411469b54d6570005a66b1 h: refs/heads/master i: 75891: f62e11598d202685f5f8cab1a5201cfbc5e422f9 v: v3 --- [refs] | 2 +- trunk/drivers/crypto/geode-aes.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index d3411c81f079..11e652ba83ba 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2d506d4fa1df18aa9505820722f834426edc907f +refs/heads/master: 1f4e4773761d0aa622411469b54d6570005a66b1 diff --git a/trunk/drivers/crypto/geode-aes.c b/trunk/drivers/crypto/geode-aes.c index 6c04f1363e6d..6c6a31b979be 100644 --- a/trunk/drivers/crypto/geode-aes.c +++ b/trunk/drivers/crypto/geode-aes.c @@ -88,9 +88,10 @@ do_crypt(void *src, void *dst, int len, u32 flags) /* Start the operation */ iowrite32(AES_CTRL_START | flags, _iobase + AES_CTRLA_REG); - do + do { status = ioread32(_iobase + AES_INTR_REG); - while(!(status & AES_INTRA_PENDING) && --counter); + cpu_relax(); + } while(!(status & AES_INTRA_PENDING) && --counter); /* Clear the event */ iowrite32((status & 0xFF) | AES_INTRA_PENDING, _iobase + AES_INTR_REG); @@ -102,6 +103,7 @@ geode_aes_crypt(struct geode_aes_op *op) { u32 flags = 0; unsigned long iflags; + int ret; if (op->len == 0) return 0; @@ -130,7 +132,8 @@ geode_aes_crypt(struct geode_aes_op *op) _writefield(AES_WRITEKEY0_REG, op->key); } - do_crypt(op->src, op->dst, op->len, flags); + ret = do_crypt(op->src, op->dst, op->len, flags); + BUG_ON(ret); if (op->mode == AES_MODE_CBC) _readfield(AES_WRITEIV0_REG, op->iv);