From: Peter Xu <peterx@redhat.com>
To: kvm@vger.kernel.org
Cc: jan.kiszka@web.de, agordeev@redhat.com, drjones@redhat.com,
rkrcmar@redhat.com, pbonzini@redhat.com, peterx@redhat.com
Subject: [kvm-unit-tests RFC PATCH 00/14] VT-d unit test
Date: Fri, 14 Oct 2016 20:40:38 +0800 [thread overview]
Message-ID: <1476448852-30062-1-git-send-email-peterx@redhat.com> (raw)
This series is adding simplest test cases for VT-d.
The series contains some conflict with Alex's PCI framework
enhancement, so I am marking it as RFC, I can rebase to Alex's work
after it's merged. Besides the conflict, the codes is workable, and
passed smoke test.
Currently only a very small test scope is covered:
* VT-d init
* DMAR: 4 bytes copy
* IR: MSI
However this series could be a base point to add more test cases for
VT-d. The problem is, there are many IOMMU error conditions which are
very hard to be triggered in a real guest (IOMMU has merely no
interface for guest user, and it's totally running in the background).
This piece of work can be a start point if we want to do more
complicated things and play around with Intel IOMMU devices (also for
IOMMU regression tests).
Please review. Thanks,
=================
To run the test:
./x86/run ./x86/intel-iommu.flat \
-M q35,kernel-irqchip=split -global ioapic.version=0x20 \
-device intel-iommu,intremap=on -device edu
Sample output:
pxdev:kvm-unit-tests [new-iommu-ut]# ./iommu_run.sh
/root/git/qemu/bin/x86_64-softmmu/qemu-system-x86_64 -enable-kvm -device pc-testdev -device isa-debug-exit,iobase=0xf4,iosize=0x4 -vnc none -serial stdio -device pci-testdev -kernel ./x86/intel-iommu.flat -M q35,kernel-irqchip=split -global ioapic.version=0x20 -device intel-iommu,intremap=on -device edu
enabling apic
paging enabled
cr0 = 80010011
cr3 = 7fff000
cr4 = 20
VT-d version: 0x10
cap: 0x0012008c22260206
ecap: 0x0000000000f00f1a
PASS: init status check
PASS: fault status check
PASS: QI enablement
DMAR table address: 0x0000000007ff9000
PASS: DMAR table setup
IR table address: 0x0000000007ff8000
PASS: IR table setup
PASS: DMAR enablement
PASS: IR enablement
PASS: DMAR support 39 bits address width
PASS: DMAR support huge pages
PCI: init dev 0x0020 BAR 0 [MEM] addr 0xfea00000
PCI detected cap 0x5
Detected MSI for device 0x20 offset 0x40
allocated vt-d root entry for PCI bus 0
allocated vt-d context entry for devfn 0x20
map 4K page IOVA 0x0 to 0x7ff7000 (sid=0x0020)
edu device DMA start TO addr 0x0 size 0x4 off 0x0
edu device DMA start FROM addr 0x4 size 0x4 off 0x0
PASS: DMAR 4B memcpy test
INTR: setup IRTE index 0
MSI: dev 0x20 init 64bit address: addr=0xfee00010, data=0x0
PASS: EDU factorial INTR test
SUMMARY: 11 tests
=================
Peter Xu (14):
x86: vm: allow multiple init for vm setup
x86: smp: allow multiple init for smp setup
x86: intel-iommu: add vt-d init test
pci: refactor init process to pci_dev_init()
page: add page alignment checker
util: move MAX/MIN macro into util.h
vm/page: provide PGDIR_OFFSET() macro
x86: pci: add pci_config_{read|write}[bw]() helpers
pci: provide pci_set_master()
pci: add bdf helpers
pci: edu: introduce pci-edu helpers
x86: intel-iommu: add dmar test
pci: add msi support for 32/64bit address
x86: intel-iommu: add IR test
lib/alloc.c | 3 -
lib/asm-generic/page.h | 5 +
lib/pci-edu.c | 140 +++++++++++++++++++
lib/pci-edu.h | 36 +++++
lib/pci.c | 143 +++++++++++++++----
lib/pci.h | 37 ++++-
lib/util.h | 3 +
lib/x86/asm/page.h | 3 +
lib/x86/asm/pci.h | 37 ++++-
lib/x86/intel-iommu.c | 363 +++++++++++++++++++++++++++++++++++++++++++++++++
lib/x86/intel-iommu.h | 130 ++++++++++++++++++
lib/x86/smp.c | 6 +
lib/x86/vm.c | 11 +-
x86/Makefile.common | 1 +
x86/Makefile.x86_64 | 2 +
x86/intel-iommu.c | 138 +++++++++++++++++++
x86/vmexit.c | 22 +--
17 files changed, 1026 insertions(+), 54 deletions(-)
create mode 100644 lib/pci-edu.c
create mode 100644 lib/pci-edu.h
create mode 100644 lib/x86/intel-iommu.c
create mode 100644 lib/x86/intel-iommu.h
create mode 100644 x86/intel-iommu.c
--
2.7.4
next reply other threads:[~2016-10-14 12:41 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-14 12:40 Peter Xu [this message]
2016-10-14 12:40 ` [kvm-unit-tests PATCH 01/14] x86: vm: allow multiple init for vm setup Peter Xu
2016-10-20 8:17 ` Andrew Jones
2016-10-20 8:24 ` Peter Xu
2016-10-20 8:41 ` Andrew Jones
2016-10-20 8:55 ` Peter Xu
2016-10-20 9:39 ` Andrew Jones
2016-10-20 11:01 ` Peter Xu
2016-10-14 12:40 ` [kvm-unit-tests PATCH 02/14] x86: smp: allow multiple init for smp setup Peter Xu
2016-10-19 20:23 ` Radim Krčmář
2016-10-20 1:27 ` Peter Xu
2016-10-20 8:20 ` Andrew Jones
2016-10-20 8:27 ` Peter Xu
2016-10-14 12:40 ` [kvm-unit-tests PATCH 03/14] x86: intel-iommu: add vt-d init test Peter Xu
2016-10-20 9:30 ` Andrew Jones
2016-10-21 9:52 ` Peter Xu
2016-10-21 12:18 ` Andrew Jones
2016-10-24 6:36 ` Peter Xu
2016-10-14 12:40 ` [kvm-unit-tests PATCH 04/14] pci: refactor init process to pci_dev_init() Peter Xu
2016-10-20 10:02 ` Andrew Jones
2016-10-24 7:00 ` Peter Xu
2016-10-14 12:40 ` [kvm-unit-tests PATCH 05/14] page: add page alignment checker Peter Xu
2016-10-20 12:23 ` Andrew Jones
2016-10-20 12:30 ` Andrew Jones
2016-10-24 9:58 ` Peter Xu
2016-10-14 12:40 ` [kvm-unit-tests PATCH 06/14] util: move MAX/MIN macro into util.h Peter Xu
2016-10-20 12:28 ` Andrew Jones
2016-10-24 10:02 ` Peter Xu
2016-10-14 12:40 ` [kvm-unit-tests PATCH 07/14] vm/page: provide PGDIR_OFFSET() macro Peter Xu
2016-10-20 12:40 ` Andrew Jones
2016-10-14 12:40 ` [kvm-unit-tests PATCH 08/14] x86: pci: add pci_config_{read|write}[bw]() helpers Peter Xu
2016-10-20 12:43 ` Andrew Jones
2016-10-24 10:08 ` Peter Xu
2016-10-14 12:40 ` [kvm-unit-tests PATCH 09/14] pci: provide pci_set_master() Peter Xu
2016-10-20 12:49 ` Andrew Jones
2016-10-24 10:11 ` Peter Xu
2016-10-14 12:40 ` [kvm-unit-tests PATCH 10/14] pci: add bdf helpers Peter Xu
2016-10-20 12:55 ` Andrew Jones
2016-10-24 14:44 ` Peter Xu
2016-10-14 12:40 ` [kvm-unit-tests PATCH 11/14] pci: edu: introduce pci-edu helpers Peter Xu
2016-10-20 13:19 ` Andrew Jones
2016-10-25 3:34 ` Peter Xu
2016-10-25 10:43 ` Andrew Jones
2016-10-25 11:33 ` Peter Xu
2016-10-14 12:40 ` [kvm-unit-tests PATCH 12/14] x86: intel-iommu: add dmar test Peter Xu
2016-10-19 20:33 ` Radim Krčmář
2016-10-20 5:41 ` Peter Xu
2016-10-14 12:40 ` [kvm-unit-tests PATCH 13/14] pci: add msi support for 32/64bit address Peter Xu
2016-10-20 13:30 ` Andrew Jones
2016-10-25 6:21 ` Peter Xu
2016-10-14 12:40 ` [kvm-unit-tests PATCH 14/14] x86: intel-iommu: add IR test Peter Xu
2016-10-20 13:45 ` Andrew Jones
2016-10-25 6:52 ` Peter Xu
2016-10-19 20:21 ` [kvm-unit-tests RFC PATCH 00/14] VT-d unit test Radim Krčmář
2016-10-20 6:05 ` Peter Xu
2016-10-20 11:08 ` Radim Krčmář
2016-10-20 11:23 ` Peter Xu
2016-10-20 11:28 ` Peter Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1476448852-30062-1-git-send-email-peterx@redhat.com \
--to=peterx@redhat.com \
--cc=agordeev@redhat.com \
--cc=drjones@redhat.com \
--cc=jan.kiszka@web.de \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.