Suggested-by: Andrew Jones <drjones@xxxxxxxxxx> Cc: Thomas Huth <thuth@xxxxxxxxxx> Cc: Andrew Jones <drjones@xxxxxxxxxx> Cc: Peter Xu <peterx@xxxxxxxxxx> Reviewed-by: Andrew Jones <drjones@xxxxxxxxxx> Signed-off-by: Alexander Gordeev <agordeev@xxxxxxxxxx> --- arm/Makefile.common | 6 +++++- arm/pci-test.c | 27 +++++++++++++++++++++++++++ arm/run | 7 ++++++- arm/unittests.cfg | 4 ++++ lib/arm/asm/pci.h | 1 + lib/arm64/asm/pci.h | 1 + 6 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 arm/pci-test.c create mode 100644 lib/arm/asm/pci.h create mode 100644 lib/arm64/asm/pci.h diff --git a/arm/Makefile.common b/arm/Makefile.common index ccb554d9251a..f37b5c2a3de4 100644 --- a/arm/Makefile.common +++ b/arm/Makefile.common @@ -11,7 +11,8 @@ endif tests-common = \ $(TEST_DIR)/selftest.flat \ - $(TEST_DIR)/spinlock-test.flat + $(TEST_DIR)/spinlock-test.flat \ + $(TEST_DIR)/pci-test.flat all: test_cases @@ -33,6 +34,9 @@ include scripts/asm-offsets.mak cflatobjs += lib/util.o cflatobjs += lib/alloc.o cflatobjs += lib/devicetree.o +cflatobjs += lib/pci.o +cflatobjs += lib/pci-host-generic.o +cflatobjs += lib/pci-testdev.o cflatobjs += lib/virtio.o cflatobjs += lib/virtio-mmio.o cflatobjs += lib/chr-testdev.o diff --git a/arm/pci-test.c b/arm/pci-test.c new file mode 100644 index 000000000000..10a367de5357 --- /dev/null +++ b/arm/pci-test.c @@ -0,0 +1,27 @@ +/* + * PCI bus operation test + * + * Copyright (C) 2016, Red Hat Inc, Alexander Gordeev <agordeev@xxxxxxxxxx> + * + * This work is licensed under the terms of the GNU LGPL, version 2. + */ +#include <libcflat.h> +#include <pci.h> + +#define NR_TESTS (PCI_TESTDEV_NUM_BARS * PCI_TESTDEV_NUM_TESTS) + +int main(void) +{ + int ret; + + if (!pci_probe()) + report_abort("PCI bus probing failed\n"); + + pci_print(); + + ret = pci_testdev(); + report("PCI test device passed %d/%d tests", + ret >= NR_TESTS, ret > 0 ? ret : 0, NR_TESTS); + + return report_summary(); +} diff --git a/arm/run b/arm/run index a2f35ef6a7e6..1ee6231599d6 100755 --- a/arm/run +++ b/arm/run @@ -67,8 +67,13 @@ fi chr_testdev='-device virtio-serial-device' chr_testdev+=' -device virtconsole,chardev=ctd -chardev testdev,id=ctd' +pci_testdev= +if $qemu $M -device '?' 2>&1 | grep pci-testdev > /dev/null; then + pci_testdev="-device pci-testdev" +fi + M+=",accel=$ACCEL" -command="$qemu $M -cpu $processor $chr_testdev" +command="$qemu $M -cpu $processor $chr_testdev $pci_testdev" command+=" -display none -serial stdio -kernel" command="$(timeout_cmd) $command" echo $command "$@" diff --git a/arm/unittests.cfg b/arm/unittests.cfg index 3f6fa45c587e..ae32a42a91c3 100644 --- a/arm/unittests.cfg +++ b/arm/unittests.cfg @@ -54,3 +54,7 @@ file = selftest.flat smp = $MAX_SMP extra_params = -append 'smp' groups = selftest + +[pci-test] +file = pci-test.flat +groups = pci diff --git a/lib/arm/asm/pci.h b/lib/arm/asm/pci.h new file mode 100644 index 000000000000..01ecafe2b6d8 --- /dev/null +++ b/lib/arm/asm/pci.h @@ -0,0 +1 @@ +#include "asm-generic/pci-host-bridge.h" diff --git a/lib/arm64/asm/pci.h b/lib/arm64/asm/pci.h new file mode 100644 index 000000000000..f70ef560e2ab --- /dev/null +++ b/lib/arm64/asm/pci.h @@ -0,0 +1 @@ +#include "../../arm/asm/pci.h" -- 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