Hi, On 2/6/25 15:12, Djordje Todorovic wrote:
This is needed for riscv based CPUs by MIPS.
This justification is not really convincing.
Signed-off-by: Chao-ying Fu <c...@mips.com> Signed-off-by: Djordje Todorovic <djordje.todoro...@htecgroup.com> --- hw/intc/riscv_aclint.c | 33 +++++++++++++++++++++++++++++++-- hw/intc/riscv_aplic.c | 10 +++++++--- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/hw/intc/riscv_aclint.c b/hw/intc/riscv_aclint.c index b0139f03f5..5bda02a179 100644 --- a/hw/intc/riscv_aclint.c +++ b/hw/intc/riscv_aclint.c @@ -131,6 +131,9 @@ static uint64_t riscv_aclint_mtimer_read(void *opaque, hwaddr addr, size_t hartid = mtimer->hartid_base + ((addr - mtimer->timecmp_base) >> 3); CPUState *cpu = cpu_by_arch_id(hartid); + if (cpu == NULL) { + return 0;
It looks like some misconfiguration. How do you reach that? Otherwise please log as GUEST_ERROR.
+ } CPURISCVState *env = cpu ? cpu_env(cpu) : NULL; if (!env) { qemu_log_mask(LOG_GUEST_ERROR, @@ -174,6 +177,9 @@ static void riscv_aclint_mtimer_write(void *opaque, hwaddr addr, size_t hartid = mtimer->hartid_base + ((addr - mtimer->timecmp_base) >> 3); CPUState *cpu = cpu_by_arch_id(hartid); + if (cpu == NULL) {
If so, please log: qemu_log_mask(LOG_GUEST_ERROR, "aclint-mtimer: invalid hartid: %zu", hartid);
+ return; + } CPURISCVState *env = cpu ? cpu_env(cpu) : NULL;
Then env is valid, so this line needs update.