> + /* 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"?