Hi Alex, For v7 (which I'm sure will be the last :-) please repost the whole series and, if you have a publicly accessible git tree, provide me a branch from which I can pull it from. If you don't have a tree, it's no biggy, I'll just grab the patches from mutt. Thanks, drew On Tue, Jul 19, 2016 at 02:52:57PM +0200, Alexander Gordeev wrote: > Hi Andrew, > > This is 5th version of PCI support. Changes since v4 are mainly addressing > nits and a rework of pci_bar_addr() function. The biggest change - the PCI > test succeeds on arm, aarch64, i386 and x86_64 (I am not posting pci-testdev > enablement for x86 though). > > There are few changes (some of them to already Reviewed-by patches) worth > a notice - here are the interdiffs commented: > > [08/12] pci: Add pci_print(); pci_print() function: > - possibile devices with unimplemented gap BARs are printed correctly; > - pci_bar_size() is called once; > > diff -u b/lib/pci.c b/lib/pci.c > --- b/lib/pci.c > +++ b/lib/pci.c > @@ -146,14 +146,15 @@ > return; > > for (i = 0; i < 6; i++) { > - phys_addr_t start, end; > + phys_addr_t size, start, end; > uint32_t bar; > > - if (!pci_bar_is_valid(dev, i)) > - break; > + size = pci_bar_size(dev, i); > + if (!size) > + continue; > > start = pci_bar_get_addr(dev, i); > - end = start + pci_bar_size(dev, i) - 1; > + end = start + size - 1; > > if (pci_bar_is64(dev, i)) { > printf("\tBAR#%d,%d [%" PRIx64 "-%" PRIx64 " ", > > [09/12] pci: Add generic ECAM host support; pci_probe() function: > - possibile devices with unimplemented gap BARs are scanned correctly; > > @@ -276,7 +290,7 @@ > + > + size = pci_bar_size(dev, i); > + if (!size) > -+ break; > ++ continue; > + > + bar = pci_bar_get(dev, i); > + addr = pci_alloc_resource(bar, size); > > [11/12] pci: Add pci-testdev PCI bus test device; pci_testdev_one() function: > - no-eventfd vs eventfd accesses (clarified by Paolo on qemu-devel list) > are handled now; > > @@ -124,7 +124,11 @@ > } > } > > - return (int)ops->io_readl(&test->count) == nr_writes; > + count = ops->io_readl(&test->count); > + if (!count) > + return true; > + > + return (int)count == nr_writes; > } > > void pci_testdev_print(struct pci_test_dev_hdr *test, > > > Alexander Gordeev (12): > [01/12] pci: Fix coding style in generic PCI files > [02/12] pci: x86: Rename pci_config_read() to pci_config_readl() > [03/12] pci: x86: Add remaining PCI configuration space accessors > [04/12] pci: Rework pci_bar_addr() > [05/12] pci: Factor out pci_bar_get() > [06/12] pci: Add pci_bar_set_addr() > [07/12] pci: Add pci_dev_exists() > [08/12] pci: Add pci_print() > [09/12] pci: Add generic ECAM host support > [10/12] arm/arm64: pci: Add PCI bus operation test > [11/12] pci: Add pci-testdev PCI bus test device > [12/12] arm/arm64: pci: Add pci-testdev PCI device operation test > > arm/Makefile.common | 6 +- > arm/pci-test.c | 31 ++++ > arm/run | 7 +- > lib/arm/asm/pci.h | 11 ++ > lib/arm64/asm/pci.h | 1 + > lib/asm-generic/pci-host-bridge.h | 26 ++++ > lib/pci-host-generic.c | 295 ++++++++++++++++++++++++++++++++++++++ > lib/pci-host-generic.h | 46 ++++++ > lib/pci-testdev.c | 188 ++++++++++++++++++++++++ > lib/pci.c | 201 +++++++++++++++++++++++--- > lib/pci.h | 34 ++++- > lib/x86/asm/pci.h | 31 +++- > x86/vmexit.c | 4 +- > 13 files changed, 853 insertions(+), 28 deletions(-) > create mode 100644 arm/pci-test.c > create mode 100644 lib/arm/asm/pci.h > create mode 100644 lib/arm64/asm/pci.h > create mode 100644 lib/asm-generic/pci-host-bridge.h > create mode 100644 lib/pci-host-generic.c > create mode 100644 lib/pci-host-generic.h > create mode 100644 lib/pci-testdev.c > > -- > 1.8.3.1 > > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html