[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Stable-8.0.5 60/66] hw/intc: Fix upper/lower mtime write calculation
From: |
Michael Tokarev |
Subject: |
[Stable-8.0.5 60/66] hw/intc: Fix upper/lower mtime write calculation |
Date: |
Wed, 13 Sep 2023 16:17:41 +0300 |
From: Jason Chien <jason.chien@sifive.com>
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 <jason.chien@sifive.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-ID: <20230728082502.26439-1-jason.chien@sifive.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
(cherry picked from commit e0922b73baf00c4c19d4ad30d09bb94f7ffea0f4)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
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.39.2
- [Stable-8.0.5 07/66] lsi53c895a: disable reentrancy detection for MMIO region, too, (continued)
- [Stable-8.0.5 07/66] lsi53c895a: disable reentrancy detection for MMIO region, too, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 08/66] bcm2835_property: disable reentrancy detection for iomem, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 10/66] apic: disable reentrancy detection for apic-msi, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 09/66] raven: disable reentrancy detection for iomem, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 11/66] loongarch: mark loongarch_ipi_iocsr re-entrnacy safe, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 12/66] pnv_lpc: disable reentrancy detection for lpc-hc, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 57/66] arm64: Restore trapless ptimer access, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 56/66] virtio: Drop out of coroutine context in virtio_load(), Michael Tokarev, 2023/09/13
- [Stable-8.0.5 58/66] hw/char/riscv_htif: Fix printing of console characters on big endian hosts, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 59/66] hw/char/riscv_htif: Fix the console syscall on big endian hosts, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 60/66] hw/intc: Fix upper/lower mtime write calculation,
Michael Tokarev <=
- [Stable-8.0.5 61/66] hw/intc: Make rtc variable names consistent, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 63/66] hw/riscv: virt: Fix riscv,pmu DT node path, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 62/66] linux-user/riscv: Use abi type for target_ucontext, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 64/66] target/riscv: fix satp_mode_finalize() when satp_mode.supported = 0, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 65/66] target/riscv/pmp.c: respect mseccfg.RLB for pmpaddrX changes, Michael Tokarev, 2023/09/13
- [Stable-8.0.5 66/66] hw/tpm: TIS on sysbus: Remove unsupport ppi command line option, Michael Tokarev, 2023/09/13
- Re: [Stable-8.0.5 00/66] v2 Patch Round-up for stable 8.0.5, freeze on 2023-09-19, Kevin Wolf, 2023/09/13