xref: /kvm-unit-tests/x86/intel-iommu.c (revision 16c0b05f0586b9c66e0c6b2ce7657bf98486af27)
1*16c0b05fSPeter Xu /*
2*16c0b05fSPeter Xu  * Intel IOMMU unit test.
3*16c0b05fSPeter Xu  *
4*16c0b05fSPeter Xu  * Copyright (C) 2016 Red Hat, Inc.
5*16c0b05fSPeter Xu  *
6*16c0b05fSPeter Xu  * Authors:
7*16c0b05fSPeter Xu  *   Peter Xu <peterx@redhat.com>,
8*16c0b05fSPeter Xu  *
9*16c0b05fSPeter Xu  * This work is licensed under the terms of the GNU LGPL, version 2 or
10*16c0b05fSPeter Xu  * later.
11*16c0b05fSPeter Xu  */
12*16c0b05fSPeter Xu 
13*16c0b05fSPeter Xu #include "intel-iommu.h"
14*16c0b05fSPeter Xu 
15*16c0b05fSPeter Xu int main(int argc, char *argv[])
16*16c0b05fSPeter Xu {
17*16c0b05fSPeter Xu 	vtd_init();
18*16c0b05fSPeter Xu 
19*16c0b05fSPeter Xu 	report("fault status check", vtd_readl(DMAR_FSTS_REG) == 0);
20*16c0b05fSPeter Xu 	report("QI enablement", vtd_readl(DMAR_GSTS_REG) & VTD_GCMD_QI);
21*16c0b05fSPeter Xu 	report("DMAR table setup", vtd_readl(DMAR_GSTS_REG) & VTD_GCMD_ROOT);
22*16c0b05fSPeter Xu 	report("IR table setup", vtd_readl(DMAR_GSTS_REG) & VTD_GCMD_IR_TABLE);
23*16c0b05fSPeter Xu 	report("DMAR enablement", vtd_readl(DMAR_GSTS_REG) & VTD_GCMD_DMAR);
24*16c0b05fSPeter Xu 	report("IR enablement", vtd_readl(DMAR_GSTS_REG) & VTD_GCMD_IR);
25*16c0b05fSPeter Xu 
26*16c0b05fSPeter Xu 	return report_summary();
27*16c0b05fSPeter Xu }
28