]> git.ipfire.org Git - thirdparty/qemu.git/commit
hw/misc/aspeed_hace: Ensure HASH_IRQ is always set to prevent firmware hang
authorJamin Lin <jamin_lin@aspeedtech.com>
Thu, 15 May 2025 08:09:35 +0000 (16:09 +0800)
committerMichael Tokarev <mjt@tls.msk.ru>
Thu, 29 May 2025 07:46:21 +0000 (10:46 +0300)
commit010f9a472c8c762a727d72310f55db3258cda3d5
tree10f83f094f13d252a012d5deecca75dc0ab46506
parentceb3cba94bfac25f278760731947201f1b013e06
hw/misc/aspeed_hace: Ensure HASH_IRQ is always set to prevent firmware hang

Currently, if the program encounters an unsupported algorithm, it does not set
the HASH_IRQ bit in the status register and send an interrupt to indicate
command completion. As a result, the FW gets stuck waiting for a completion
signal from the HACE module.

Additionally, in do_hash_operation, if an error occurs within the conditional
statement, the HASH_IRQ bit is not set in the status register. This causes the
firmware to continuously send HASH commands, as it is unaware that the HACE
model has completed processing the command.

To fix this, the HASH_IRQ bit in the status register must always be set to
ensure that the firmware receives an interrupt from the HACE module, preventing
it from getting stuck or repeatedly sending HASH commands.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Fixes: c5475b3 ("hw: Model ASPEED's Hash and Crypto Engine")
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250515081008.583578-4-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
(cherry picked from commit fb8e59abbe46957cd599bb9aa9221fad1e4e989e)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/misc/aspeed_hace.c