mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 02:03:56 -06:00
hw/misc/aspeed_hace: Extract digest write and iov unmap into helper function
To improve code readability and maintainability of do_hash_operation(), this commit introduces a new helper function: hash_write_digest_and_unmap_iov(). The helper consolidates the final digest writeback and subsequent unmapping of the I/O vectors into a single routine. 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-7-jamin_lin@aspeedtech.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
0b7dd5f991
commit
0479419785
1 changed files with 21 additions and 12 deletions
|
@ -228,6 +228,26 @@ static int hash_prepare_sg_iov(AspeedHACEState *s, struct iovec *iov,
|
||||||
return iov_idx;
|
return iov_idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void hash_write_digest_and_unmap_iov(AspeedHACEState *s,
|
||||||
|
struct iovec *iov,
|
||||||
|
int iov_idx,
|
||||||
|
uint8_t *digest_buf,
|
||||||
|
size_t digest_len)
|
||||||
|
{
|
||||||
|
if (address_space_write(&s->dram_as, s->regs[R_HASH_DEST],
|
||||||
|
MEMTXATTRS_UNSPECIFIED, digest_buf, digest_len)) {
|
||||||
|
qemu_log_mask(LOG_GUEST_ERROR,
|
||||||
|
"%s: Failed to write digest to 0x%x\n",
|
||||||
|
__func__, s->regs[R_HASH_DEST]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (; iov_idx > 0; iov_idx--) {
|
||||||
|
address_space_unmap(&s->dram_as, iov[iov_idx - 1].iov_base,
|
||||||
|
iov[iov_idx - 1].iov_len, false,
|
||||||
|
iov[iov_idx - 1].iov_len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void do_hash_operation(AspeedHACEState *s, int algo, bool sg_mode,
|
static void do_hash_operation(AspeedHACEState *s, int algo, bool sg_mode,
|
||||||
bool acc_mode)
|
bool acc_mode)
|
||||||
{
|
{
|
||||||
|
@ -292,18 +312,7 @@ static void do_hash_operation(AspeedHACEState *s, int algo, bool sg_mode,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (address_space_write(&s->dram_as, s->regs[R_HASH_DEST],
|
hash_write_digest_and_unmap_iov(s, iov, iov_idx, digest_buf, digest_len);
|
||||||
MEMTXATTRS_UNSPECIFIED,
|
|
||||||
digest_buf, digest_len)) {
|
|
||||||
qemu_log_mask(LOG_GUEST_ERROR,
|
|
||||||
"aspeed_hace: address space write failed\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (; iov_idx > 0; iov_idx--) {
|
|
||||||
address_space_unmap(&s->dram_as, iov[iov_idx - 1].iov_base,
|
|
||||||
iov[iov_idx - 1].iov_len, false,
|
|
||||||
iov[iov_idx - 1].iov_len);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t aspeed_hace_read(void *opaque, hwaddr addr, unsigned int size)
|
static uint64_t aspeed_hace_read(void *opaque, hwaddr addr, unsigned int size)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue