Hello,

This is another another version of vPCI rework (previous one can be
found at [1]). The biggest change is how vPCI locking is done. This
series uses per-domain vPCI rwlock.

Note that this series does not include my work on reference counting
for PCI devices because this counting does not resolve isses we are
having for vPCI. While it is (maybe) nice to have PCI refcounting, it
does not moves us towards PCI on ARM.


[1] https://lore.kernel.org/all/20220204063459.680961-1-andr2...@gmail.com/

Oleksandr Andrushchenko (12):
  vpci: introduce per-domain lock to protect vpci structure
  vpci: restrict unhandled read/write operations for guests
  vpci: add hooks for PCI device assign/de-assign
  vpci/header: implement guest BAR register handlers
  rangeset: add RANGESETF_no_print flag
  vpci/header: handle p2m range sets per BAR
  vpci/header: program p2m with guest BAR view
  vpci/header: emulate PCI_COMMAND register for guests
  vpci/header: reset the command register when adding devices
  vpci: add initial support for virtual PCI bus topology
  xen/arm: translate virtual PCI bus topology for guests
  xen/arm: account IO handlers for emulated PCI MSI-X

 xen/arch/arm/vpci.c           |  31 ++-
 xen/arch/x86/hvm/vmsi.c       |   7 +
 xen/common/domain.c           |   3 +
 xen/common/rangeset.c         |   5 +-
 xen/drivers/Kconfig           |   4 +
 xen/drivers/passthrough/pci.c |  16 ++
 xen/drivers/vpci/header.c     | 485 ++++++++++++++++++++++++++++------
 xen/drivers/vpci/msi.c        |  29 +-
 xen/drivers/vpci/msix.c       |  55 +++-
 xen/drivers/vpci/vpci.c       | 257 ++++++++++++++++--
 xen/include/xen/pci.h         |   1 +
 xen/include/xen/rangeset.h    |   5 +-
 xen/include/xen/sched.h       |  11 +
 xen/include/xen/vpci.h        |  47 +++-
 14 files changed, 826 insertions(+), 130 deletions(-)

-- 
2.40.1

Reply via email to