mbox series

[v2,00/11] ioreq: add support for internal servers

Message ID 20190903161428.7159-1-roger.pau@citrix.com (mailing list archive)
Headers show
Series ioreq: add support for internal servers | expand

Message

Roger Pau Monné Sept. 3, 2019, 4:14 p.m. UTC
Such internal servers are implemented by a single function that handles
ioreqs inside the hypervisor.

The motivation behind this change is to switch vPCI to become an
internal ioreq server, so that accesses to the PCI config space can be
multiplexed between devices handled by vPCI and devices handled by other
ioreq servers.

The implementation is fairly simple and limited to what's needed by
vPCI, but can be expanded in the future if other more complex users
appear.

The series can also be found at:

git://xenbits.xen.org/people/royger/xen.git ioreq_vpci_v2

Thanks, Roger.

Roger Pau Monne (11):
  ioreq: fix hvm_all_ioreq_servers_add_vcpu fail path cleanup
  ioreq: terminate cf8 handling at hypervisor level
  ioreq: switch selection and forwarding to use ioservid_t
  ioreq: add fields to allow internal ioreq servers
  ioreq: add internal ioreq initialization support
  ioreq: allow dispatching ioreqs to internal servers
  ioreq: allow registering internal ioreq server handler
  ioreq: allow decoding accesses to MMCFG regions
  vpci: register as an internal ioreq server
  ioreq: split the code to detect PCI config space accesses
  ioreq: provide support for long-running operations...

 tools/tests/vpci/Makefile           |   5 +-
 tools/tests/vpci/emul.h             |   4 +
 xen/arch/x86/hvm/dm.c               |  19 +-
 xen/arch/x86/hvm/dom0_build.c       |   9 +-
 xen/arch/x86/hvm/emulate.c          |  14 +-
 xen/arch/x86/hvm/hvm.c              |   7 +-
 xen/arch/x86/hvm/io.c               | 248 ++--------------
 xen/arch/x86/hvm/ioreq.c            | 434 ++++++++++++++++++++--------
 xen/arch/x86/hvm/stdvga.c           |   8 +-
 xen/arch/x86/mm/p2m.c               |  20 +-
 xen/arch/x86/physdev.c              |   6 +-
 xen/drivers/passthrough/x86/iommu.c |   2 +-
 xen/drivers/vpci/header.c           |  61 ++--
 xen/drivers/vpci/vpci.c             |  75 ++++-
 xen/include/asm-x86/hvm/domain.h    |  35 ++-
 xen/include/asm-x86/hvm/io.h        |  29 +-
 xen/include/asm-x86/hvm/ioreq.h     |  17 +-
 xen/include/asm-x86/hvm/vcpu.h      |   3 +-
 xen/include/asm-x86/p2m.h           |   9 +-
 xen/include/public/hvm/dm_op.h      |   1 +
 xen/include/xen/vpci.h              |  28 +-
 21 files changed, 559 insertions(+), 475 deletions(-)