> On 28. Jul 2025, at 12:35, Philippe Mathieu-Daudé <phi...@linaro.org> wrote: > > On 26/7/25 00:30, Mohamed Mediouni wrote: >> Instead of considering reads there to be fatal, mark it as unimplemented. >> This is to allow experimentation on using configurations other than the >> Apple vGIC. > > FYI > https://lore.kernel.org/qemu-devel/20250623121845.7214-11-phi...@linaro.org/.
By the way, am running with a similar patch to that and this is what I get - probably screwed up something trivial though… [ 60.090520] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks: [ 60.090950] rcu: 0-....: (0 ticks this GP) idle=ce00/0/0x0 softirq=1/1 fqs=0 (false positive?) [ 60.091518] rcu: (detected by 2, t=60003 jiffies, g=-1199, q=16542 ncpus=4) [ 60.092016] Sending NMI from CPU 2 to CPUs 0: [ 60.092286] NMI backtrace for cpu 0 [ 60.092531] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.11.0-13-generic #14-Ubuntu [ 60.093056] Hardware name: linux,dummy-virt (DT) [ 60.093476] pstate: 61400005 (nZCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--) [ 60.093977] pc : cpuidle_idle_call+0xb4/0x208 [ 60.094226] lr : cpuidle_idle_call+0x19c/0x208 [ 60.094526] sp : ffffa9fa513e3d80 [ 60.094782] x29: ffffa9fa513e3d90 x28: 0000000000000000 x27: 0000000000000000 [ 60.095263] x26: 0000000000000000 x25: 0000000000000003 x24: 0000000000000000 [ 60.095926] x23: 00000000000000c0 x22: ffffa9fa513edde8 x21: ffffa9fa513f97c0 [ 60.096412] x20: 0000000000000000 x19: 0000000000000000 x18: ffffa9fa513fba68 [ 60.096982] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000 [ 60.097511] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000 [ 60.097996] x11: 0000000000000000 x10: 96d8ff766a2f06fb x9 : ffffa9fa4e20bb64 [ 60.098518] x8 : ffffa9fa513fb9e8 x7 : 0000000000000000 x6 : 0000000000000000 [ 60.099103] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000 [ 60.099541] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000 [ 60.100065] Call trace: [ 60.100288] cpuidle_idle_call+0xb4/0x208 [ 60.100539] do_idle+0xac/0x120 [ 60.100817] cpu_startup_entry+0x40/0x58 [ 60.101123] rest_init+0x118/0x120 [ 60.101349] start_kernel+0x49c/0x4a8 [ 60.101670] __primary_switched+0x88/0x98 [ 60.102343] rcu: rcu_preempt kthread timer wakeup didn't happen for 60007 jiffies! g-1199 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402 [ 60.103135] rcu: Possible timer handling issue on cpu=0 timer-softirq=0 [ 60.103605] rcu: rcu_preempt kthread starved for 60010 jiffies! g-1199 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402 ->cpu=0 [ 60.104371] rcu: Unless rcu_preempt kthread gets sufficient CPU time, OOM is now expected behavior. [ 60.104974] rcu: RCU grace-period kthread stack dump: [ 60.105279] task:rcu_preempt state:I stack:0 pid:17 tgid:17 ppid:2 flags:0x00000008 [ 60.105921] Call trace: [ 60.106125] __switch_to+0xbc/0x108 [ 60.106391] __schedule+0x298/0x770 [ 60.106630] schedule+0x40/0x128 [ 60.106836] schedule_timeout+0xa0/0x1c8 [ 60.107084] rcu_gp_fqs_loop+0x124/0x540 [ 60.107314] rcu_gp_kthread+0x158/0x198 [ 60.107536] kthread+0xf4/0x108 [ 60.107727] ret_from_fork+0x10/0x20 >> Signed-off-by: Mohamed Mediouni <moha...@unpredictable.fr> >> --- >> target/arm/hvf/hvf.c | 10 ++++++++++ >> 1 file changed, 10 insertions(+) >> diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c >> index f5b82cdce1..c3df7e07e8 100644 >> --- a/target/arm/hvf/hvf.c >> +++ b/target/arm/hvf/hvf.c >> @@ -299,6 +299,7 @@ void hvf_arm_init_debug(void) >> /* EL2 registers */ >> #define SYSREG_CNTHCTL_EL2 SYSREG(3, 4, 14, 1, 0) >> #define SYSREG_MDCCINT_EL1 SYSREG(2, 0, 0, 2, 0) >> +#define SYSREG_CNTP_CVAL_EL0 SYSREG(3, 3, 14, 2, 2) >> #define WFX_IS_WFE (1 << 0) >> @@ -1398,6 +1399,12 @@ static int hvf_sysreg_read(CPUState *cpu, uint32_t >> reg, uint64_t *val) >> case SYSREG_CNTHCTL_EL2: >> assert_hvf_ok(hv_vcpu_get_sys_reg(cpu->accel->fd, >> HV_SYS_REG_CNTHCTL_EL2, val)); >> return 0; >> + case SYSREG_CNTP_CTL_EL0: >> + qemu_log_mask(LOG_UNIMP, "Unsupported read from CNTP_CTL_EL0\n"); >> + return 0; >> + case SYSREG_CNTP_CVAL_EL0: >> + qemu_log_mask(LOG_UNIMP, "Unsupported read from CNTP_CVAL_EL0\n"); >> + return 0; >> case SYSREG_MDCCINT_EL1: >> assert_hvf_ok(hv_vcpu_get_sys_reg(cpu->accel->fd, >> HV_SYS_REG_MDCCINT_EL1, val)); >> return 0; >> @@ -1718,6 +1725,9 @@ static int hvf_sysreg_write(CPUState *cpu, uint32_t >> reg, uint64_t val) >> */ >> qemu_log_mask(LOG_UNIMP, "Unsupported write to CNTP_CTL_EL0\n"); >> return 0; >> + case SYSREG_CNTP_CVAL_EL0: >> + qemu_log_mask(LOG_UNIMP, "Unsupported write to CNTP_CVAL_EL0\n"); >> + return 0; >> case SYSREG_OSDLR_EL1: >> /* Dummy register */ >> return 0; > >