> +    /* Redistributor state (one per CPU) */
> +
> +    for (ncpu = 0; ncpu < s->num_cpu; ncpu++) {
> +        GICv3CPUState *c = &s->cpu[ncpu];
> +        hv_vcpu_t vcpu = c->cpu->accel->fd;
> +
> +        reg = c->gicr_waker;
> +        hv_gic_set_redistributor_reg(vcpu, 
> HV_GIC_REDISTRIBUTOR_REG_GICR_IGROUPR0, reg);
> +

Sorry if I'm belaboring the obvious, but I think you need to call these
from the owning thread of the CPU. This is also stated in Apple's docs
(some are documented; some are not!).

I had to do that in the branch I was working on. You should check the
return of the functions 'hv_gic_...'. They give an error when called
from the wrong thread.

Could this be related to commit "hw/intc: hvf: add migration blocker
when using multiple vCPUs with the Apple GIC"?

Reply via email to