From: KONRAD Frederic <fred.kon...@greensocs.com> This series allows to execute code from mmio areas. The main goal of this is to be able to run code for example from an SPI device.
The three first patch fixes the way get_page_addr_code fills the TLB. The fourth patch implements the mmio execution helpers: the device must implement the request_ptr callback of the MemoryRegion and will be notified when the guest wants to execute code from it. The fifth patch introduces mmio_interface device which allows to dynamically map a host pointer somewhere into the memory. The sixth patch implements the execution from the SPI memories in the xilinx_spips model. Thanks, Fred V1 -> V2: * Fix the DPRINTF error. RFC -> V1: * Use an interface (mmio-interface) to fix any reference leak issue. KONRAD Frederic (7): cputlb: cleanup get_page_addr_code to use VICTIM_TLB_HIT cputlb: move get_page_addr_code cputlb: fix the way get_page_addr_code fills the tlb exec: allow to get a pointer for some mmio memory region qdev: add MemoryRegion property introduce mmio_interface xilinx_spips: allow mmio execution cputlb.c | 81 ++++++++++++++----------- hw/misc/Makefile.objs | 1 + hw/misc/mmio_interface.c | 128 +++++++++++++++++++++++++++++++++++++++ hw/ssi/xilinx_spips.c | 74 ++++++++++++++++------ include/exec/memory.h | 35 +++++++++++ include/hw/misc/mmio_interface.h | 49 +++++++++++++++ include/hw/qdev-properties.h | 2 + memory.c | 57 +++++++++++++++++ 8 files changed, 372 insertions(+), 55 deletions(-) create mode 100644 hw/misc/mmio_interface.c create mode 100644 include/hw/misc/mmio_interface.h -- 1.8.3.1