All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH kvm-unit-tests v5 00/14] VT-d unit test
@ 2016-11-15 22:24 Peter Xu
  2016-11-15 22:24 ` [PATCH kvm-unit-tests v5 01/14] pci: fix missing extern for pci_testdev() Peter Xu
                   ` (13 more replies)
  0 siblings, 14 replies; 28+ messages in thread
From: Peter Xu @ 2016-11-15 22:24 UTC (permalink / raw)
  To: kvm; +Cc: drjones, agordeev, jan.kiszka, rkrcmar, pbonzini, peterx

This is v5 of vt-d unit test series.

Patch "libcflat: add IS_ALIGNED() macro, and page sizes" is picked up
by Drew in the ARM GIC framework series, so please feel free to drop
it when needed.

Online repo:

  https://github.com/xzpeter/kvm-unit-tests.git iommu-ut-v5

Please review. Thanks,

v5:
- add one more patch at the beginning of series to add "extern" to
  pci_testdev() header definition [Drew]
- add "extern" to all pci.h functions [Drew]
- update IS_ALIGNED patch to be aligned with Drew's gic series [Drew]
- replace one more PCI_DEVFN_MAX/PCI_BAR_NUM in lib/pci-host-generic.c
  [Drew]
- add {} in vtd_install_pte() when there are one line code and one
  line comment [Drew]
- drop Drew's suggested-by in patch "x86: intel-iommu: add IR MSI
  test" (I forgot why I added it, but anyway let me drop it here...)
  [Drew]

v4:
(same as v3, but with correct patches sent out)

v3:
- is_power_of_2(): remove outer "()" [Drew]
- fix indent for vtd_root_table() [Drew]
- pci_find_dev(): keep {} to avoid touching more codes [Drew]
- pci_scan_bars(): check whether bar is 64bits [Drew]
- pci_enable_defaults(): make it return nothing [Drew]
- fix strnang blanks in lib/x86/intel-iommu.h [Drew]
- pci_setup_msi(): fix correct assert() inside [Drew]
- squash patches: 03+17 08+09 10+11 12+14 [Drew]
- remove all "()" for raw defines (numbers) in macros [Drew]

v2:
- move cpu_relax patch to the beginning, and use them in all places
[Drew]
- replace all corresponding 256 into PCI_DEVFN_MAX, as well for
PCI_BAR_NUM [Drew]
- adding is_power_of_2() to replace ONE_BIT_ONLY() [Drew]
- add SZ_64K macro [Drew]
- declare pci_config_write[wb] in lib/asm-generic/pci-host-bridge.h [Alex]
- edu_reg_read/write() add "l" in func name [Drew]
- drop pci_set_master(), instead, provide pci_cmd_set_clr() [Drew]
- change return code into bool (always) for functions that apply
[Drew]
- keep old pci_find_dev() interface [Drew/Alex]
- use __raw_{read|write}*() for both vt-d and edu register read/writes
[Alex]
- remove pci_ prefix for all pci_dev fields [Drew]
- replace 0xff in cap_handlers[0xff] into (PCI_CAP_ID_MAX + 1) [Drew]
- make x86/unittest.cfg simpler by using q35 directly with eim=off
[Drew]

RFC -> v1:
- when init edu device fail, report_skip() rather than return error
[Radim]
- use asserts rather than "static bool inited" to avoid multiple init
of components (affects patch 1/2) [Drew]
- moving the first two patches out of the series [Drew]
- int vtd_init(), do not setup_idt() since smp_init() did it [Drew]
- when edu do not have MSI enabled, skip interrupt test [Radim]
- rename vtd_reg_*() into vtd_{read|write}[lq](), and move them to
header file [Drew]
- use PAGE_MASK when able [Drew]
- use "&" instead of "|" in intel-iommu init test (three places)
[Drew]
- use "vtd_init()" in unit test [Drew]
- mention that where intel-iommu.h comes from [Drew]
- re-written vtd_gcmd_or(), make it also work on even hardware [Drew]
- remove most of the oneline wrapper for VT-d registers, instead, use
vtd_{read|write}* with register names [Drew]
- remove useless BDF helpers [Drew]
- move edu device macros into header file [Drew]
- make edu_check_alive static inline [Drew]
- remove all useless wrappers in pci-edu.c [Drew]
- remove pci_dma_dir_t and all its users, instead, use "bool
from_device" [Drew]
- not use typedef for structs, to follow Linux/kvm-unit-tests coding
style [Drew]
- let pci_dev_init() clean and simple, then provide
pci_enable_defaults() for more complicated things [Drew]
- add one more patch to add intel-iommu test into x86/unittest [Radim]
- use 0x60 intr request instead of factorial to trigger edu device
interrupt [Drew]
- ...and some other changes I just forgot to note down...

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,

Peter Xu (14):
  pci: fix missing extern for pci_testdev()
  x86/asm: add cpu_relax()
  libcflat: introduce is_power_of_2()
  x86: intel-iommu: add vt-d init test
  libcflat: add IS_ALIGNED() macro, and page sizes
  libcflat: moving MIN/MAX here
  vm/page: provide PGDIR_OFFSET() macro
  pci: introduce struct pci_dev
  pci: provide pci_scan_bars()
  pci: provide pci_enable_defaults()
  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 MSI test

 lib/alloc.c            |   3 -
 lib/libcflat.h         |  14 +++
 lib/pci-edu.c          |  73 ++++++++++++
 lib/pci-edu.h          |  83 +++++++++++++
 lib/pci-host-generic.c |  13 +-
 lib/pci-testdev.c      |  10 +-
 lib/pci.c              | 157 +++++++++++++++++++++----
 lib/pci.h              |  42 +++++--
 lib/x86/asm/barrier.h  |  11 ++
 lib/x86/asm/page.h     |   3 +
 lib/x86/intel-iommu.c  | 314 +++++++++++++++++++++++++++++++++++++++++++++++++
 lib/x86/intel-iommu.h  | 142 ++++++++++++++++++++++
 lib/x86/vm.c           |   4 +-
 x86/Makefile.common    |   1 +
 x86/Makefile.x86_64    |   2 +
 x86/intel-iommu.c      | 120 +++++++++++++++++++
 x86/unittests.cfg      |   7 ++
 x86/vmexit.c           |  27 ++---
 18 files changed, 965 insertions(+), 61 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


^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2016-11-23 10:40 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-15 22:24 [PATCH kvm-unit-tests v5 00/14] VT-d unit test Peter Xu
2016-11-15 22:24 ` [PATCH kvm-unit-tests v5 01/14] pci: fix missing extern for pci_testdev() Peter Xu
2016-11-16  9:26   ` Andrew Jones
2016-11-15 22:24 ` [PATCH kvm-unit-tests v5 02/14] x86/asm: add cpu_relax() Peter Xu
2016-11-15 22:24 ` [PATCH kvm-unit-tests v5 03/14] libcflat: introduce is_power_of_2() Peter Xu
2016-11-15 22:24 ` [PATCH kvm-unit-tests v5 04/14] x86: intel-iommu: add vt-d init test Peter Xu
2016-11-15 22:25 ` [PATCH kvm-unit-tests v5 05/14] libcflat: add IS_ALIGNED() macro, and page sizes Peter Xu
2016-11-15 22:25 ` [PATCH kvm-unit-tests v5 06/14] libcflat: moving MIN/MAX here Peter Xu
2016-11-15 22:25 ` [PATCH kvm-unit-tests v5 07/14] vm/page: provide PGDIR_OFFSET() macro Peter Xu
2016-11-15 22:25 ` [PATCH kvm-unit-tests v5 08/14] pci: introduce struct pci_dev Peter Xu
2016-11-15 22:25 ` [PATCH kvm-unit-tests v5 09/14] pci: provide pci_scan_bars() Peter Xu
2016-11-16  9:50   ` Alexander Gordeev
2016-11-21  7:27     ` Peter Xu
2016-11-21 19:24       ` Alexander Gordeev
2016-11-22  2:16         ` Peter Xu
2016-11-15 22:25 ` [PATCH kvm-unit-tests v5 10/14] pci: provide pci_enable_defaults() Peter Xu
2016-11-15 22:25 ` [PATCH kvm-unit-tests v5 11/14] pci: edu: introduce pci-edu helpers Peter Xu
2016-11-15 22:25 ` [PATCH kvm-unit-tests v5 12/14] x86: intel-iommu: add dmar test Peter Xu
2016-11-15 22:25 ` [PATCH kvm-unit-tests v5 13/14] pci: add msi support for 32/64bit address Peter Xu
2016-11-21 19:27   ` Alexander Gordeev
2016-11-22  4:59     ` Peter Xu
2016-11-22  7:03       ` Alexander Gordeev
2016-11-22  7:21         ` Peter Xu
2016-11-22 12:30           ` Andrew Jones
2016-11-23  2:40             ` Peter Xu
2016-11-23 10:36               ` Andrew Jones
2016-11-23 10:39                 ` Peter Xu
2016-11-15 22:25 ` [PATCH kvm-unit-tests v5 14/14] x86: intel-iommu: add IR MSI test Peter Xu

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.