On Thu, 1 Jun 2023 at 17:00, Mark Burton <quic_mbur...@quicinc.com> wrote: > This patch came from a discussion on the KVM call the other day. > It may well be the case there is a better/different implementation > - so the patch is more by way of asking the question. > > Re-phrasing your question - I think it boils down to “should HVF > (and KVM) support executing instructions from IO space?”.
I think this falls into "might theoretically be nice but is probably too painful to actually implement". In practice well-behaved guests don't try to execute out of MMIO devices. > In that case, this is a ‘partial’ answer to providing such > support for HVF - partial in that it relies upon a memory > region being created “dynamically” for the IO space that > has been accessed as a side-effect of a normal access. But nothing in (upstream) QEMU magically creates MemoryRegions just because the guest tries to access them. Either there's nothing there in the AddressSpace at all (definitely can't execute from it) or there's already RAM (happy case) or there's already a device there. If there's already a device there then something would need to do a "put a bit of RAM in temporarily, fill in the single instruction by doing an address_space_read() to find the data value and writing it to the scratch RAM, tell KVM/HVF to do a single-step, undo everything again". -- PMM