Hi, The patch seems to be ignored. I am not sure who to ping. Could someone please review this patch? Thank you! patch link: https://lore.kernel.org/qemu-devel/[email protected]/
On Fri, Jul 28, 2023 at 4:25 PM Jason Chien <[email protected]> wrote: > When writing the upper mtime, we should keep the original lower mtime > whose value is given by cpu_riscv_read_rtc() instead of > cpu_riscv_read_rtc_raw(). The same logic applies to writes to lower mtime. > > Signed-off-by: Jason Chien <[email protected]> > --- > hw/intc/riscv_aclint.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/hw/intc/riscv_aclint.c b/hw/intc/riscv_aclint.c > index b466a6abaf..bf77e29a70 100644 > --- a/hw/intc/riscv_aclint.c > +++ b/hw/intc/riscv_aclint.c > @@ -208,11 +208,12 @@ static void riscv_aclint_mtimer_write(void *opaque, > hwaddr addr, > return; > } else if (addr == mtimer->time_base || addr == mtimer->time_base + > 4) { > uint64_t rtc_r = cpu_riscv_read_rtc_raw(mtimer->timebase_freq); > + uint64_t rtc = cpu_riscv_read_rtc(mtimer); > > if (addr == mtimer->time_base) { > if (size == 4) { > /* time_lo for RV32/RV64 */ > - mtimer->time_delta = ((rtc_r & ~0xFFFFFFFFULL) | value) - > rtc_r; > + mtimer->time_delta = ((rtc & ~0xFFFFFFFFULL) | value) - > rtc_r; > } else { > /* time for RV64 */ > mtimer->time_delta = value - rtc_r; > @@ -220,7 +221,7 @@ static void riscv_aclint_mtimer_write(void *opaque, > hwaddr addr, > } else { > if (size == 4) { > /* time_hi for RV32/RV64 */ > - mtimer->time_delta = (value << 32 | (rtc_r & 0xFFFFFFFF)) > - rtc_r; > + mtimer->time_delta = (value << 32 | (rtc & 0xFFFFFFFF)) - > rtc_r; > } else { > qemu_log_mask(LOG_GUEST_ERROR, > "aclint-mtimer: invalid time_hi write: > %08x", > -- > 2.17.1 > >
