Message ID | 20230720003205.1828537-1-volodymyr_babchuk@epam.com (mailing list archive) |
---|---|
Headers | show |
Series | PCI devices passthrough on Arm, part 3 | expand |
Volodymyr Babchuk <volodymyr_babchuk@epam.com> writes: Hello again, Looks like I messed up with add_maintainers script and sent this series without proper CCs. So I am CCing all interested persons only in this cover letter only. Sorry for the noise. > Hello, > > This is next version of vPCI rework. Aim of this series is to prepare > ground for introducing PCI support on ARM platform. > > The biggest change from previous, mistakenly named, v7 series is how > locking is implemented. Instead of d->vpci_rwlock we introduce > d->pci_lock which has broader scope, as it protects not only domain's > vpci state, but domain's list of PCI devices as well. > > As we discussed in IRC with Roger, it is not feasible to rework all > the existing code to use the new lock right away. It was agreed that > any write access to d->pdev_list will be protected by **both** > d->pci_lock in write mode and pcidevs_lock(). Read access on other > hand should be protected by either d->pci_lock in read mode or > pcidevs_lock(). It is expected that existing code will use > pcidevs_lock() and new users will use new rw lock. Of course, this > does not mean that new users shall not use pcidevs_lock() when it is > appropriate. > > Apart from locking scheme rework, there are less major fixes in some > patches, based on the review comments. > > Oleksandr Andrushchenko (12): > vpci: use per-domain PCI 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 > > Volodymyr Babchuk (1): > pci: introduce per-domain PCI rwlock > > xen/arch/arm/vpci.c | 61 ++- > xen/arch/x86/hvm/vmsi.c | 4 + > xen/common/domain.c | 1 + > xen/common/rangeset.c | 5 +- > xen/drivers/Kconfig | 4 + > xen/drivers/passthrough/amd/pci_amd_iommu.c | 9 +- > xen/drivers/passthrough/pci.c | 96 ++++- > xen/drivers/passthrough/vtd/iommu.c | 9 +- > xen/drivers/vpci/header.c | 453 ++++++++++++++++---- > xen/drivers/vpci/msi.c | 18 +- > xen/drivers/vpci/msix.c | 56 ++- > xen/drivers/vpci/vpci.c | 176 +++++++- > xen/include/xen/pci.h | 1 + > xen/include/xen/rangeset.h | 5 +- > xen/include/xen/sched.h | 9 + > xen/include/xen/vpci.h | 42 +- > 16 files changed, 828 insertions(+), 121 deletions(-)