On 10/26/21 09:12, Alexander Graf wrote: > Apple's Hypervisor.Framework forwards cache operations as MMIO traps > into user space. For MMIO however, these have no meaning: There is no > cache attached to them. > > So let's just treat cache data exits as nops. > > This fixes OpenBSD booting as guest. > > Signed-off-by: Alexander Graf <ag...@csgraf.de> > Reported-by: AJ Barris <awlsomea...@github.com> > Reference: https://github.com/utmapp/UTM/issues/3197 > --- > target/arm/hvf/hvf.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c > index bff3e0cde7..0dc96560d3 100644 > --- a/target/arm/hvf/hvf.c > +++ b/target/arm/hvf/hvf.c > @@ -1150,12 +1150,19 @@ int hvf_vcpu_exec(CPUState *cpu) > uint32_t sas = (syndrome >> 22) & 3; > uint32_t len = 1 << sas; > uint32_t srt = (syndrome >> 16) & 0x1f; > + uint32_t cm = (syndrome >> 8) & 0x1; > uint64_t val = 0; > > trace_hvf_data_abort(env->pc, hvf_exit->exception.virtual_address, > hvf_exit->exception.physical_address, isv, > iswrite, s1ptw, len, srt); > > + if (cm) { > + /* We don't cache MMIO regions */ > + advance_pc = true; > + break; > + } > + > assert(isv);
Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org>