diff options
author | Jamin Lin <jamin_lin@aspeedtech.com> | 2025-05-15 16:09:39 +0800 |
---|---|---|
committer | Cédric Le Goater <clg@redhat.com> | 2025-05-25 23:39:11 +0200 |
commit | 02c4c448460e1370f767c56749a1756a5c4dcc3a (patch) | |
tree | 9431cfa44d7dbbf46a02143e72c10b8cf5a46e8c | |
parent | 047941978508e68215d01cc0e3e5408c430e9e9f (diff) | |
download | qemu-02c4c448460e1370f767c56749a1756a5c4dcc3a.zip qemu-02c4c448460e1370f767c56749a1756a5c4dcc3a.tar.gz qemu-02c4c448460e1370f767c56749a1756a5c4dcc3a.tar.bz2 |
hw/misc/aspeed_hace: Extract non-accumulation hash execution into helper function
To improve code readability and maintainability of do_hash_operation(), this
commit introduces a new helper function: hash_execute_non_acc_mode().
The helper encapsulate the hashing logic for non-accumulation mode.
No functional changes are introduced.
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250515081008.583578-8-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
-rw-r--r-- | hw/misc/aspeed_hace.c | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/hw/misc/aspeed_hace.c b/hw/misc/aspeed_hace.c index 7da781f..c50e228 100644 --- a/hw/misc/aspeed_hace.c +++ b/hw/misc/aspeed_hace.c @@ -248,6 +248,25 @@ static void hash_write_digest_and_unmap_iov(AspeedHACEState *s, } } +static void hash_execute_non_acc_mode(AspeedHACEState *s, int algo, + struct iovec *iov, int iov_idx) +{ + g_autofree uint8_t *digest_buf = NULL; + Error *local_err = NULL; + size_t digest_len = 0; + + if (qcrypto_hash_bytesv(algo, iov, iov_idx, &digest_buf, + &digest_len, &local_err) < 0) { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: qcrypto hash bytesv failed : %s", + __func__, error_get_pretty(local_err)); + error_free(local_err); + return; + } + + hash_write_digest_and_unmap_iov(s, iov, iov_idx, digest_buf, digest_len); +} + static void do_hash_operation(AspeedHACEState *s, int algo, bool sg_mode, bool acc_mode) { @@ -304,15 +323,12 @@ static void do_hash_operation(AspeedHACEState *s, int algo, bool sg_mode, s->hash_ctx = NULL; s->total_req_len = 0; } - } else if (qcrypto_hash_bytesv(algo, iov, iov_idx, &digest_buf, - &digest_len, &local_err) < 0) { - qemu_log_mask(LOG_GUEST_ERROR, "qcrypto hash bytesv failed : %s", - error_get_pretty(local_err)); - error_free(local_err); - return; - } - hash_write_digest_and_unmap_iov(s, iov, iov_idx, digest_buf, digest_len); + hash_write_digest_and_unmap_iov(s, iov, iov_idx, digest_buf, + digest_len); + } else { + hash_execute_non_acc_mode(s, algo, iov, iov_idx); + } } static uint64_t aspeed_hace_read(void *opaque, hwaddr addr, unsigned int size) |