xref: /linux/drivers/iommu/generic_pt/Kconfig (revision fbf5df34a4dbcd09d433dd4f0916bf9b2ddb16de)
1# SPDX-License-Identifier: GPL-2.0-only
2
3menuconfig GENERIC_PT
4	bool "Generic Radix Page Table" if COMPILE_TEST
5	help
6	  Generic library for building radix tree page tables.
7
8	  Generic PT provides a set of HW page table formats and a common
9	  set of APIs to work with them.
10
11if GENERIC_PT
12config DEBUG_GENERIC_PT
13	bool "Extra debugging checks for GENERIC_PT"
14	help
15	  Enable extra run time debugging checks for GENERIC_PT code. This
16	  incurs a runtime cost and should not be enabled for production
17	  kernels.
18
19	  The kunit tests require this to be enabled to get full coverage.
20
21config IOMMU_PT
22	tristate "IOMMU Page Tables"
23	select IOMMU_API
24	depends on IOMMU_SUPPORT
25	depends on GENERIC_PT
26	help
27	  Generic library for building IOMMU page tables
28
29	  IOMMU_PT provides an implementation of the page table operations
30	  related to struct iommu_domain using GENERIC_PT. It provides a single
31	  implementation of the page table operations that can be shared by
32	  multiple drivers.
33
34if IOMMU_PT
35config IOMMU_PT_AMDV1
36	tristate "IOMMU page table for 64-bit AMD IOMMU v1"
37	depends on !GENERIC_ATOMIC64 # for cmpxchg64
38	help
39	  iommu_domain implementation for the AMD v1 page table. AMDv1 is the
40	  "host" page table. It supports granular page sizes of almost every
41	  power of 2 and decodes the full 64-bit IOVA space.
42
43	  Selected automatically by an IOMMU driver that uses this format.
44
45config IOMMU_PT_VTDSS
46       tristate "IOMMU page table for Intel VT-d Second Stage"
47	depends on !GENERIC_ATOMIC64 # for cmpxchg64
48	help
49	  iommu_domain implementation for the Intel VT-d's 64 bit 3/4/5
50	  level Second Stage page table. It is similar to the X86_64 format with
51	  4K/2M/1G page sizes.
52
53	  Selected automatically by an IOMMU driver that uses this format.
54
55config IOMMU_PT_RISCV64
56       tristate "IOMMU page table for RISC-V 64 bit Sv57/Sv48/Sv39"
57	depends on !GENERIC_ATOMIC64 # for cmpxchg64
58	help
59	  iommu_domain implementation for RISC-V 64 bit 3/4/5 level page table.
60	  It supports 4K/2M/1G/512G/256T page sizes and can decode a sign
61	  extended portion of the 64 bit IOVA space.
62
63	  Selected automatically by an IOMMU driver that uses this format.
64
65config IOMMU_PT_X86_64
66	tristate "IOMMU page table for x86 64-bit, 4/5 levels"
67	depends on !GENERIC_ATOMIC64 # for cmpxchg64
68	help
69	  iommu_domain implementation for the x86 64-bit 4/5 level page table.
70	  It supports 4K/2M/1G page sizes and can decode a sign-extended
71	  portion of the 64-bit IOVA space.
72
73	  Selected automatically by an IOMMU driver that uses this format.
74
75config IOMMU_PT_KUNIT_TEST
76	tristate "IOMMU Page Table KUnit Test" if !KUNIT_ALL_TESTS
77	depends on KUNIT
78	depends on IOMMU_PT_AMDV1 || !IOMMU_PT_AMDV1
79	depends on IOMMU_PT_RISCV64 || !IOMMU_PT_RISCV64
80	depends on IOMMU_PT_X86_64 || !IOMMU_PT_X86_64
81	depends on IOMMU_PT_VTDSS || !IOMMU_PT_VTDSS
82	default KUNIT_ALL_TESTS
83	help
84	  Enable kunit tests for GENERIC_PT and IOMMU_PT that covers all the
85	  enabled page table formats. The test covers most of the GENERIC_PT
86	  functions provided by the page table format, as well as covering the
87	  iommu_domain related functions.
88
89endif
90endif
91