2020-06-12 23:18:11

by Jerry Snitselaar

[permalink] [raw]
Subject: [PATCH 0/2] iommu: Move AMD and Intel Kconfig + Makefile bits into their directories

This patchset imeplements the suggestion from Linus to move the Kconfig
and Makefile bits for AMD and Intel into their respective directories.
It also cleans up a couple Kconfig entries to use the newer help
attribute instead of ---help--- (complaint from checkpatch).

Jerry Snitselaar (2):
iommu/vt-d: Move Kconfig and Makefile bits down into intel directory
iommu/amd: Move Kconfig and Makefile bits down into amd directory



2020-06-12 23:19:37

by Jerry Snitselaar

[permalink] [raw]
Subject: [PATCH 2/2] iommu/amd: Move Kconfig and Makefile bits down into amd directory

Move AMD Kconfig and Makefile bits down into the amd directory
with the rest of the AMD specific files.

Cc: Joerg Roedel <[email protected]>
Cc: Suravee Suthikulpanit <[email protected]>
Signed-off-by: Jerry Snitselaar <[email protected]>
---
drivers/iommu/Kconfig | 45 +-------------------------------------
drivers/iommu/Makefile | 5 +----
drivers/iommu/amd/Kconfig | 44 +++++++++++++++++++++++++++++++++++++
drivers/iommu/amd/Makefile | 4 ++++
4 files changed, 50 insertions(+), 48 deletions(-)
create mode 100644 drivers/iommu/amd/Kconfig
create mode 100644 drivers/iommu/amd/Makefile

diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
index b12d4ec124f6..78a8be0053b3 100644
--- a/drivers/iommu/Kconfig
+++ b/drivers/iommu/Kconfig
@@ -132,50 +132,7 @@ config IOMMU_PGTABLES_L2
def_bool y
depends on MSM_IOMMU && MMU && SMP && CPU_DCACHE_DISABLE=n

-# AMD IOMMU support
-config AMD_IOMMU
- bool "AMD IOMMU support"
- select SWIOTLB
- select PCI_MSI
- select PCI_ATS
- select PCI_PRI
- select PCI_PASID
- select IOMMU_API
- select IOMMU_IOVA
- select IOMMU_DMA
- depends on X86_64 && PCI && ACPI
- ---help---
- With this option you can enable support for AMD IOMMU hardware in
- your system. An IOMMU is a hardware component which provides
- remapping of DMA memory accesses from devices. With an AMD IOMMU you
- can isolate the DMA memory of different devices and protect the
- system from misbehaving device drivers or hardware.
-
- You can find out if your system has an AMD IOMMU if you look into
- your BIOS for an option to enable it or if you have an IVRS ACPI
- table.
-
-config AMD_IOMMU_V2
- tristate "AMD IOMMU Version 2 driver"
- depends on AMD_IOMMU
- select MMU_NOTIFIER
- ---help---
- This option enables support for the AMD IOMMUv2 features of the IOMMU
- hardware. Select this option if you want to use devices that support
- the PCI PRI and PASID interface.
-
-config AMD_IOMMU_DEBUGFS
- bool "Enable AMD IOMMU internals in DebugFS"
- depends on AMD_IOMMU && IOMMU_DEBUGFS
- ---help---
- !!!WARNING!!! !!!WARNING!!! !!!WARNING!!! !!!WARNING!!!
-
- DO NOT ENABLE THIS OPTION UNLESS YOU REALLY, -REALLY- KNOW WHAT YOU ARE DOING!!!
- Exposes AMD IOMMU device internals in DebugFS.
-
- This option is -NOT- intended for production environments, and should
- not generally be enabled.
-
+source "drivers/iommu/amd/Kconfig"
source "drivers/iommu/intel/Kconfig"

config IRQ_REMAP
diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile
index 71dd2f382e78..f356bc12b1c7 100644
--- a/drivers/iommu/Makefile
+++ b/drivers/iommu/Makefile
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-2.0
-obj-y += intel/
+obj-y += amd/ intel/
obj-$(CONFIG_IOMMU_API) += iommu.o
obj-$(CONFIG_IOMMU_API) += iommu-traces.o
obj-$(CONFIG_IOMMU_API) += iommu-sysfs.o
@@ -12,9 +12,6 @@ obj-$(CONFIG_IOASID) += ioasid.o
obj-$(CONFIG_IOMMU_IOVA) += iova.o
obj-$(CONFIG_OF_IOMMU) += of_iommu.o
obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o
-obj-$(CONFIG_AMD_IOMMU) += amd/iommu.o amd/init.o amd/quirks.o
-obj-$(CONFIG_AMD_IOMMU_DEBUGFS) += amd/debugfs.o
-obj-$(CONFIG_AMD_IOMMU_V2) += amd/iommu_v2.o
obj-$(CONFIG_ARM_SMMU) += arm_smmu.o
arm_smmu-objs += arm-smmu.o arm-smmu-impl.o arm-smmu-qcom.o
obj-$(CONFIG_ARM_SMMU_V3) += arm-smmu-v3.o
diff --git a/drivers/iommu/amd/Kconfig b/drivers/iommu/amd/Kconfig
new file mode 100644
index 000000000000..1f061d91e0b8
--- /dev/null
+++ b/drivers/iommu/amd/Kconfig
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: GPL-2.0-only
+# AMD IOMMU support
+config AMD_IOMMU
+ bool "AMD IOMMU support"
+ select SWIOTLB
+ select PCI_MSI
+ select PCI_ATS
+ select PCI_PRI
+ select PCI_PASID
+ select IOMMU_API
+ select IOMMU_IOVA
+ select IOMMU_DMA
+ depends on X86_64 && PCI && ACPI
+ help
+ With this option you can enable support for AMD IOMMU hardware in
+ your system. An IOMMU is a hardware component which provides
+ remapping of DMA memory accesses from devices. With an AMD IOMMU you
+ can isolate the DMA memory of different devices and protect the
+ system from misbehaving device drivers or hardware.
+
+ You can find out if your system has an AMD IOMMU if you look into
+ your BIOS for an option to enable it or if you have an IVRS ACPI
+ table.
+
+config AMD_IOMMU_V2
+ tristate "AMD IOMMU Version 2 driver"
+ depends on AMD_IOMMU
+ select MMU_NOTIFIER
+ help
+ This option enables support for the AMD IOMMUv2 features of the IOMMU
+ hardware. Select this option if you want to use devices that support
+ the PCI PRI and PASID interface.
+
+config AMD_IOMMU_DEBUGFS
+ bool "Enable AMD IOMMU internals in DebugFS"
+ depends on AMD_IOMMU && IOMMU_DEBUGFS
+ help
+ !!!WARNING!!! !!!WARNING!!! !!!WARNING!!! !!!WARNING!!!
+
+ DO NOT ENABLE THIS OPTION UNLESS YOU REALLY, -REALLY- KNOW WHAT YOU ARE DOING!!!
+ Exposes AMD IOMMU device internals in DebugFS.
+
+ This option is -NOT- intended for production environments, and should
+ not generally be enabled.
diff --git a/drivers/iommu/amd/Makefile b/drivers/iommu/amd/Makefile
new file mode 100644
index 000000000000..552f68ddcefd
--- /dev/null
+++ b/drivers/iommu/amd/Makefile
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0
+obj-$(CONFIG_AMD_IOMMU) += iommu.o init.o quirks.o
+obj-$(CONFIG_AMD_IOMMU_DEBUGFS) += debugfs.o
+obj-$(CONFIG_AMD_IOMMU_V2) += iommu_v2.o
--
2.27.0

2020-06-12 23:21:05

by Jerry Snitselaar

[permalink] [raw]
Subject: [PATCH 1/2] iommu/vt-d: Move Kconfig and Makefile bits down into intel directory

Move Intel Kconfig and Makefile bits down into intel directory
with the rest of the Intel specific files.

Cc: Joerg Roedel <[email protected]>
Cc: Lu Baolu <[email protected]>
Signed-off-by: Jerry Snitselaar <[email protected]>
---
drivers/iommu/Kconfig | 86 +-----------------------------------
drivers/iommu/Makefile | 8 +---
drivers/iommu/intel/Kconfig | 86 ++++++++++++++++++++++++++++++++++++
drivers/iommu/intel/Makefile | 7 +++
4 files changed, 96 insertions(+), 91 deletions(-)
create mode 100644 drivers/iommu/intel/Kconfig
create mode 100644 drivers/iommu/intel/Makefile

diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
index aca76383f201..b12d4ec124f6 100644
--- a/drivers/iommu/Kconfig
+++ b/drivers/iommu/Kconfig
@@ -176,91 +176,7 @@ config AMD_IOMMU_DEBUGFS
This option is -NOT- intended for production environments, and should
not generally be enabled.

-# Intel IOMMU support
-config DMAR_TABLE
- bool
-
-config INTEL_IOMMU
- bool "Support for Intel IOMMU using DMA Remapping Devices"
- depends on PCI_MSI && ACPI && (X86 || IA64)
- select IOMMU_API
- select IOMMU_IOVA
- select NEED_DMA_MAP_STATE
- select DMAR_TABLE
- select SWIOTLB
- select IOASID
- help
- DMA remapping (DMAR) devices support enables independent address
- translations for Direct Memory Access (DMA) from devices.
- These DMA remapping devices are reported via ACPI tables
- and include PCI device scope covered by these DMA
- remapping devices.
-
-config INTEL_IOMMU_DEBUGFS
- bool "Export Intel IOMMU internals in Debugfs"
- depends on INTEL_IOMMU && IOMMU_DEBUGFS
- help
- !!!WARNING!!!
-
- DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!!!
-
- Expose Intel IOMMU internals in Debugfs.
-
- This option is -NOT- intended for production environments, and should
- only be enabled for debugging Intel IOMMU.
-
-config INTEL_IOMMU_SVM
- bool "Support for Shared Virtual Memory with Intel IOMMU"
- depends on INTEL_IOMMU && X86
- select PCI_PASID
- select PCI_PRI
- select MMU_NOTIFIER
- select IOASID
- help
- Shared Virtual Memory (SVM) provides a facility for devices
- to access DMA resources through process address space by
- means of a Process Address Space ID (PASID).
-
-config INTEL_IOMMU_DEFAULT_ON
- def_bool y
- prompt "Enable Intel DMA Remapping Devices by default"
- depends on INTEL_IOMMU
- help
- Selecting this option will enable a DMAR device at boot time if
- one is found. If this option is not selected, DMAR support can
- be enabled by passing intel_iommu=on to the kernel.
-
-config INTEL_IOMMU_BROKEN_GFX_WA
- bool "Workaround broken graphics drivers (going away soon)"
- depends on INTEL_IOMMU && BROKEN && X86
- ---help---
- Current Graphics drivers tend to use physical address
- for DMA and avoid using DMA APIs. Setting this config
- option permits the IOMMU driver to set a unity map for
- all the OS-visible memory. Hence the driver can continue
- to use physical addresses for DMA, at least until this
- option is removed in the 2.6.32 kernel.
-
-config INTEL_IOMMU_FLOPPY_WA
- def_bool y
- depends on INTEL_IOMMU && X86
- ---help---
- Floppy disk drivers are known to bypass DMA API calls
- thereby failing to work when IOMMU is enabled. This
- workaround will setup a 1:1 mapping for the first
- 16MiB to make floppy (an ISA device) work.
-
-config INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON
- bool "Enable Intel IOMMU scalable mode by default"
- depends on INTEL_IOMMU
- help
- Selecting this option will enable by default the scalable mode if
- hardware presents the capability. The scalable mode is defined in
- VT-d 3.0. The scalable mode capability could be checked by reading
- /sys/devices/virtual/iommu/dmar*/intel-iommu/ecap. If this option
- is not selected, scalable mode support could also be enabled by
- passing intel_iommu=sm_on to the kernel. If not sure, please use
- the default value.
+source "drivers/iommu/intel/Kconfig"

config IRQ_REMAP
bool "Support for Interrupt Remapping"
diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile
index 342190196dfb..71dd2f382e78 100644
--- a/drivers/iommu/Makefile
+++ b/drivers/iommu/Makefile
@@ -1,4 +1,5 @@
# SPDX-License-Identifier: GPL-2.0
+obj-y += intel/
obj-$(CONFIG_IOMMU_API) += iommu.o
obj-$(CONFIG_IOMMU_API) += iommu-traces.o
obj-$(CONFIG_IOMMU_API) += iommu-sysfs.o
@@ -17,13 +18,8 @@ obj-$(CONFIG_AMD_IOMMU_V2) += amd/iommu_v2.o
obj-$(CONFIG_ARM_SMMU) += arm_smmu.o
arm_smmu-objs += arm-smmu.o arm-smmu-impl.o arm-smmu-qcom.o
obj-$(CONFIG_ARM_SMMU_V3) += arm-smmu-v3.o
-obj-$(CONFIG_DMAR_TABLE) += intel/dmar.o
-obj-$(CONFIG_INTEL_IOMMU) += intel/iommu.o intel/pasid.o
-obj-$(CONFIG_INTEL_IOMMU) += intel/trace.o
-obj-$(CONFIG_INTEL_IOMMU_DEBUGFS) += intel/debugfs.o
-obj-$(CONFIG_INTEL_IOMMU_SVM) += intel/svm.o
obj-$(CONFIG_IPMMU_VMSA) += ipmmu-vmsa.o
-obj-$(CONFIG_IRQ_REMAP) += intel/irq_remapping.o irq_remapping.o
+obj-$(CONFIG_IRQ_REMAP) += irq_remapping.o
obj-$(CONFIG_MTK_IOMMU) += mtk_iommu.o
obj-$(CONFIG_MTK_IOMMU_V1) += mtk_iommu_v1.o
obj-$(CONFIG_OMAP_IOMMU) += omap-iommu.o
diff --git a/drivers/iommu/intel/Kconfig b/drivers/iommu/intel/Kconfig
new file mode 100644
index 000000000000..ef5c4a7a9399
--- /dev/null
+++ b/drivers/iommu/intel/Kconfig
@@ -0,0 +1,86 @@
+# SPDX-License-Identifier: GPL-2.0-only
+# Intel IOMMU support
+config DMAR_TABLE
+ bool
+
+config INTEL_IOMMU
+ bool "Support for Intel IOMMU using DMA Remapping Devices"
+ depends on PCI_MSI && ACPI && (X86 || IA64)
+ select IOMMU_API
+ select IOMMU_IOVA
+ select NEED_DMA_MAP_STATE
+ select DMAR_TABLE
+ select SWIOTLB
+ select IOASID
+ help
+ DMA remapping (DMAR) devices support enables independent address
+ translations for Direct Memory Access (DMA) from devices.
+ These DMA remapping devices are reported via ACPI tables
+ and include PCI device scope covered by these DMA
+ remapping devices.
+
+config INTEL_IOMMU_DEBUGFS
+ bool "Export Intel IOMMU internals in Debugfs"
+ depends on INTEL_IOMMU && IOMMU_DEBUGFS
+ help
+ !!!WARNING!!!
+
+ DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!!!
+
+ Expose Intel IOMMU internals in Debugfs.
+
+ This option is -NOT- intended for production environments, and should
+ only be enabled for debugging Intel IOMMU.
+
+config INTEL_IOMMU_SVM
+ bool "Support for Shared Virtual Memory with Intel IOMMU"
+ depends on INTEL_IOMMU && X86
+ select PCI_PASID
+ select PCI_PRI
+ select MMU_NOTIFIER
+ select IOASID
+ help
+ Shared Virtual Memory (SVM) provides a facility for devices
+ to access DMA resources through process address space by
+ means of a Process Address Space ID (PASID).
+
+config INTEL_IOMMU_DEFAULT_ON
+ def_bool y
+ prompt "Enable Intel DMA Remapping Devices by default"
+ depends on INTEL_IOMMU
+ help
+ Selecting this option will enable a DMAR device at boot time if
+ one is found. If this option is not selected, DMAR support can
+ be enabled by passing intel_iommu=on to the kernel.
+
+config INTEL_IOMMU_BROKEN_GFX_WA
+ bool "Workaround broken graphics drivers (going away soon)"
+ depends on INTEL_IOMMU && BROKEN && X86
+ help
+ Current Graphics drivers tend to use physical address
+ for DMA and avoid using DMA APIs. Setting this config
+ option permits the IOMMU driver to set a unity map for
+ all the OS-visible memory. Hence the driver can continue
+ to use physical addresses for DMA, at least until this
+ option is removed in the 2.6.32 kernel.
+
+config INTEL_IOMMU_FLOPPY_WA
+ def_bool y
+ depends on INTEL_IOMMU && X86
+ help
+ Floppy disk drivers are known to bypass DMA API calls
+ thereby failing to work when IOMMU is enabled. This
+ workaround will setup a 1:1 mapping for the first
+ 16MiB to make floppy (an ISA device) work.
+
+config INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON
+ bool "Enable Intel IOMMU scalable mode by default"
+ depends on INTEL_IOMMU
+ help
+ Selecting this option will enable by default the scalable mode if
+ hardware presents the capability. The scalable mode is defined in
+ VT-d 3.0. The scalable mode capability could be checked by reading
+ /sys/devices/virtual/iommu/dmar*/intel-iommu/ecap. If this option
+ is not selected, scalable mode support could also be enabled by
+ passing intel_iommu=sm_on to the kernel. If not sure, please use
+ the default value.
diff --git a/drivers/iommu/intel/Makefile b/drivers/iommu/intel/Makefile
new file mode 100644
index 000000000000..fb8e1e8c8029
--- /dev/null
+++ b/drivers/iommu/intel/Makefile
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: GPL-2.0
+obj-$(CONFIG_DMAR_TABLE) += dmar.o
+obj-$(CONFIG_INTEL_IOMMU) += iommu.o pasid.o
+obj-$(CONFIG_INTEL_IOMMU) += trace.o
+obj-$(CONFIG_INTEL_IOMMU_DEBUGFS) += debugfs.o
+obj-$(CONFIG_INTEL_IOMMU_SVM) += svm.o
+obj-$(CONFIG_IRQ_REMAP) += irq_remapping.o
--
2.27.0

2020-06-13 01:54:22

by Lu Baolu

[permalink] [raw]
Subject: Re: [PATCH 1/2] iommu/vt-d: Move Kconfig and Makefile bits down into intel directory

Hi Jerry,

On 2020/6/13 7:10, Jerry Snitselaar wrote:
> Move Intel Kconfig and Makefile bits down into intel directory
> with the rest of the Intel specific files.
>
> Cc: Joerg Roedel <[email protected]>
> Cc: Lu Baolu <[email protected]>

Thanks!

Reviewed-by: Lu Baolu <[email protected]>

Best regards,
baolu

> Signed-off-by: Jerry Snitselaar <[email protected]>
> ---
> drivers/iommu/Kconfig | 86 +-----------------------------------
> drivers/iommu/Makefile | 8 +---
> drivers/iommu/intel/Kconfig | 86 ++++++++++++++++++++++++++++++++++++
> drivers/iommu/intel/Makefile | 7 +++
> 4 files changed, 96 insertions(+), 91 deletions(-)
> create mode 100644 drivers/iommu/intel/Kconfig
> create mode 100644 drivers/iommu/intel/Makefile
>
> diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
> index aca76383f201..b12d4ec124f6 100644
> --- a/drivers/iommu/Kconfig
> +++ b/drivers/iommu/Kconfig
> @@ -176,91 +176,7 @@ config AMD_IOMMU_DEBUGFS
> This option is -NOT- intended for production environments, and should
> not generally be enabled.
>
> -# Intel IOMMU support
> -config DMAR_TABLE
> - bool
> -
> -config INTEL_IOMMU
> - bool "Support for Intel IOMMU using DMA Remapping Devices"
> - depends on PCI_MSI && ACPI && (X86 || IA64)
> - select IOMMU_API
> - select IOMMU_IOVA
> - select NEED_DMA_MAP_STATE
> - select DMAR_TABLE
> - select SWIOTLB
> - select IOASID
> - help
> - DMA remapping (DMAR) devices support enables independent address
> - translations for Direct Memory Access (DMA) from devices.
> - These DMA remapping devices are reported via ACPI tables
> - and include PCI device scope covered by these DMA
> - remapping devices.
> -
> -config INTEL_IOMMU_DEBUGFS
> - bool "Export Intel IOMMU internals in Debugfs"
> - depends on INTEL_IOMMU && IOMMU_DEBUGFS
> - help
> - !!!WARNING!!!
> -
> - DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!!!
> -
> - Expose Intel IOMMU internals in Debugfs.
> -
> - This option is -NOT- intended for production environments, and should
> - only be enabled for debugging Intel IOMMU.
> -
> -config INTEL_IOMMU_SVM
> - bool "Support for Shared Virtual Memory with Intel IOMMU"
> - depends on INTEL_IOMMU && X86
> - select PCI_PASID
> - select PCI_PRI
> - select MMU_NOTIFIER
> - select IOASID
> - help
> - Shared Virtual Memory (SVM) provides a facility for devices
> - to access DMA resources through process address space by
> - means of a Process Address Space ID (PASID).
> -
> -config INTEL_IOMMU_DEFAULT_ON
> - def_bool y
> - prompt "Enable Intel DMA Remapping Devices by default"
> - depends on INTEL_IOMMU
> - help
> - Selecting this option will enable a DMAR device at boot time if
> - one is found. If this option is not selected, DMAR support can
> - be enabled by passing intel_iommu=on to the kernel.
> -
> -config INTEL_IOMMU_BROKEN_GFX_WA
> - bool "Workaround broken graphics drivers (going away soon)"
> - depends on INTEL_IOMMU && BROKEN && X86
> - ---help---
> - Current Graphics drivers tend to use physical address
> - for DMA and avoid using DMA APIs. Setting this config
> - option permits the IOMMU driver to set a unity map for
> - all the OS-visible memory. Hence the driver can continue
> - to use physical addresses for DMA, at least until this
> - option is removed in the 2.6.32 kernel.
> -
> -config INTEL_IOMMU_FLOPPY_WA
> - def_bool y
> - depends on INTEL_IOMMU && X86
> - ---help---
> - Floppy disk drivers are known to bypass DMA API calls
> - thereby failing to work when IOMMU is enabled. This
> - workaround will setup a 1:1 mapping for the first
> - 16MiB to make floppy (an ISA device) work.
> -
> -config INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON
> - bool "Enable Intel IOMMU scalable mode by default"
> - depends on INTEL_IOMMU
> - help
> - Selecting this option will enable by default the scalable mode if
> - hardware presents the capability. The scalable mode is defined in
> - VT-d 3.0. The scalable mode capability could be checked by reading
> - /sys/devices/virtual/iommu/dmar*/intel-iommu/ecap. If this option
> - is not selected, scalable mode support could also be enabled by
> - passing intel_iommu=sm_on to the kernel. If not sure, please use
> - the default value.
> +source "drivers/iommu/intel/Kconfig"
>
> config IRQ_REMAP
> bool "Support for Interrupt Remapping"
> diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile
> index 342190196dfb..71dd2f382e78 100644
> --- a/drivers/iommu/Makefile
> +++ b/drivers/iommu/Makefile
> @@ -1,4 +1,5 @@
> # SPDX-License-Identifier: GPL-2.0
> +obj-y += intel/
> obj-$(CONFIG_IOMMU_API) += iommu.o
> obj-$(CONFIG_IOMMU_API) += iommu-traces.o
> obj-$(CONFIG_IOMMU_API) += iommu-sysfs.o
> @@ -17,13 +18,8 @@ obj-$(CONFIG_AMD_IOMMU_V2) += amd/iommu_v2.o
> obj-$(CONFIG_ARM_SMMU) += arm_smmu.o
> arm_smmu-objs += arm-smmu.o arm-smmu-impl.o arm-smmu-qcom.o
> obj-$(CONFIG_ARM_SMMU_V3) += arm-smmu-v3.o
> -obj-$(CONFIG_DMAR_TABLE) += intel/dmar.o
> -obj-$(CONFIG_INTEL_IOMMU) += intel/iommu.o intel/pasid.o
> -obj-$(CONFIG_INTEL_IOMMU) += intel/trace.o
> -obj-$(CONFIG_INTEL_IOMMU_DEBUGFS) += intel/debugfs.o
> -obj-$(CONFIG_INTEL_IOMMU_SVM) += intel/svm.o
> obj-$(CONFIG_IPMMU_VMSA) += ipmmu-vmsa.o
> -obj-$(CONFIG_IRQ_REMAP) += intel/irq_remapping.o irq_remapping.o
> +obj-$(CONFIG_IRQ_REMAP) += irq_remapping.o
> obj-$(CONFIG_MTK_IOMMU) += mtk_iommu.o
> obj-$(CONFIG_MTK_IOMMU_V1) += mtk_iommu_v1.o
> obj-$(CONFIG_OMAP_IOMMU) += omap-iommu.o
> diff --git a/drivers/iommu/intel/Kconfig b/drivers/iommu/intel/Kconfig
> new file mode 100644
> index 000000000000..ef5c4a7a9399
> --- /dev/null
> +++ b/drivers/iommu/intel/Kconfig
> @@ -0,0 +1,86 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +# Intel IOMMU support
> +config DMAR_TABLE
> + bool
> +
> +config INTEL_IOMMU
> + bool "Support for Intel IOMMU using DMA Remapping Devices"
> + depends on PCI_MSI && ACPI && (X86 || IA64)
> + select IOMMU_API
> + select IOMMU_IOVA
> + select NEED_DMA_MAP_STATE
> + select DMAR_TABLE
> + select SWIOTLB
> + select IOASID
> + help
> + DMA remapping (DMAR) devices support enables independent address
> + translations for Direct Memory Access (DMA) from devices.
> + These DMA remapping devices are reported via ACPI tables
> + and include PCI device scope covered by these DMA
> + remapping devices.
> +
> +config INTEL_IOMMU_DEBUGFS
> + bool "Export Intel IOMMU internals in Debugfs"
> + depends on INTEL_IOMMU && IOMMU_DEBUGFS
> + help
> + !!!WARNING!!!
> +
> + DO NOT ENABLE THIS OPTION UNLESS YOU REALLY KNOW WHAT YOU ARE DOING!!!
> +
> + Expose Intel IOMMU internals in Debugfs.
> +
> + This option is -NOT- intended for production environments, and should
> + only be enabled for debugging Intel IOMMU.
> +
> +config INTEL_IOMMU_SVM
> + bool "Support for Shared Virtual Memory with Intel IOMMU"
> + depends on INTEL_IOMMU && X86
> + select PCI_PASID
> + select PCI_PRI
> + select MMU_NOTIFIER
> + select IOASID
> + help
> + Shared Virtual Memory (SVM) provides a facility for devices
> + to access DMA resources through process address space by
> + means of a Process Address Space ID (PASID).
> +
> +config INTEL_IOMMU_DEFAULT_ON
> + def_bool y
> + prompt "Enable Intel DMA Remapping Devices by default"
> + depends on INTEL_IOMMU
> + help
> + Selecting this option will enable a DMAR device at boot time if
> + one is found. If this option is not selected, DMAR support can
> + be enabled by passing intel_iommu=on to the kernel.
> +
> +config INTEL_IOMMU_BROKEN_GFX_WA
> + bool "Workaround broken graphics drivers (going away soon)"
> + depends on INTEL_IOMMU && BROKEN && X86
> + help
> + Current Graphics drivers tend to use physical address
> + for DMA and avoid using DMA APIs. Setting this config
> + option permits the IOMMU driver to set a unity map for
> + all the OS-visible memory. Hence the driver can continue
> + to use physical addresses for DMA, at least until this
> + option is removed in the 2.6.32 kernel.
> +
> +config INTEL_IOMMU_FLOPPY_WA
> + def_bool y
> + depends on INTEL_IOMMU && X86
> + help
> + Floppy disk drivers are known to bypass DMA API calls
> + thereby failing to work when IOMMU is enabled. This
> + workaround will setup a 1:1 mapping for the first
> + 16MiB to make floppy (an ISA device) work.
> +
> +config INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON
> + bool "Enable Intel IOMMU scalable mode by default"
> + depends on INTEL_IOMMU
> + help
> + Selecting this option will enable by default the scalable mode if
> + hardware presents the capability. The scalable mode is defined in
> + VT-d 3.0. The scalable mode capability could be checked by reading
> + /sys/devices/virtual/iommu/dmar*/intel-iommu/ecap. If this option
> + is not selected, scalable mode support could also be enabled by
> + passing intel_iommu=sm_on to the kernel. If not sure, please use
> + the default value.
> diff --git a/drivers/iommu/intel/Makefile b/drivers/iommu/intel/Makefile
> new file mode 100644
> index 000000000000..fb8e1e8c8029
> --- /dev/null
> +++ b/drivers/iommu/intel/Makefile
> @@ -0,0 +1,7 @@
> +# SPDX-License-Identifier: GPL-2.0
> +obj-$(CONFIG_DMAR_TABLE) += dmar.o
> +obj-$(CONFIG_INTEL_IOMMU) += iommu.o pasid.o
> +obj-$(CONFIG_INTEL_IOMMU) += trace.o
> +obj-$(CONFIG_INTEL_IOMMU_DEBUGFS) += debugfs.o
> +obj-$(CONFIG_INTEL_IOMMU_SVM) += svm.o
> +obj-$(CONFIG_IRQ_REMAP) += irq_remapping.o
>

2020-06-15 12:19:21

by Suthikulpanit, Suravee

[permalink] [raw]
Subject: Re: [PATCH 2/2] iommu/amd: Move Kconfig and Makefile bits down into amd directory

Reviewed-by: Suravee Suthikulpanit <[email protected]>

Thanks,
Suravee

On 6/13/20 6:11 AM, Jerry Snitselaar wrote:
> Move AMD Kconfig and Makefile bits down into the amd directory
> with the rest of the AMD specific files.
>
> Cc: Joerg Roedel <[email protected]>
> Cc: Suravee Suthikulpanit <[email protected]>
> Signed-off-by: Jerry Snitselaar <[email protected]>
> ---
> drivers/iommu/Kconfig | 45 +-------------------------------------
> drivers/iommu/Makefile | 5 +----
> drivers/iommu/amd/Kconfig | 44 +++++++++++++++++++++++++++++++++++++
> drivers/iommu/amd/Makefile | 4 ++++
> 4 files changed, 50 insertions(+), 48 deletions(-)
> create mode 100644 drivers/iommu/amd/Kconfig
> create mode 100644 drivers/iommu/amd/Makefile
>
> diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
> index b12d4ec124f6..78a8be0053b3 100644
> --- a/drivers/iommu/Kconfig
> +++ b/drivers/iommu/Kconfig
> @@ -132,50 +132,7 @@ config IOMMU_PGTABLES_L2
> def_bool y
> depends on MSM_IOMMU && MMU && SMP && CPU_DCACHE_DISABLE=n
>
> -# AMD IOMMU support
> -config AMD_IOMMU
> - bool "AMD IOMMU support"
> - select SWIOTLB
> - select PCI_MSI
> - select PCI_ATS
> - select PCI_PRI
> - select PCI_PASID
> - select IOMMU_API
> - select IOMMU_IOVA
> - select IOMMU_DMA
> - depends on X86_64 && PCI && ACPI
> - ---help---
> - With this option you can enable support for AMD IOMMU hardware in
> - your system. An IOMMU is a hardware component which provides
> - remapping of DMA memory accesses from devices. With an AMD IOMMU you
> - can isolate the DMA memory of different devices and protect the
> - system from misbehaving device drivers or hardware.
> -
> - You can find out if your system has an AMD IOMMU if you look into
> - your BIOS for an option to enable it or if you have an IVRS ACPI
> - table.
> -
> -config AMD_IOMMU_V2
> - tristate "AMD IOMMU Version 2 driver"
> - depends on AMD_IOMMU
> - select MMU_NOTIFIER
> - ---help---
> - This option enables support for the AMD IOMMUv2 features of the IOMMU
> - hardware. Select this option if you want to use devices that support
> - the PCI PRI and PASID interface.
> -
> -config AMD_IOMMU_DEBUGFS
> - bool "Enable AMD IOMMU internals in DebugFS"
> - depends on AMD_IOMMU && IOMMU_DEBUGFS
> - ---help---
> - !!!WARNING!!! !!!WARNING!!! !!!WARNING!!! !!!WARNING!!!
> -
> - DO NOT ENABLE THIS OPTION UNLESS YOU REALLY, -REALLY- KNOW WHAT YOU ARE DOING!!!
> - Exposes AMD IOMMU device internals in DebugFS.
> -
> - This option is -NOT- intended for production environments, and should
> - not generally be enabled.
> -
> +source "drivers/iommu/amd/Kconfig"
> source "drivers/iommu/intel/Kconfig"
>
> config IRQ_REMAP
> diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile
> index 71dd2f382e78..f356bc12b1c7 100644
> --- a/drivers/iommu/Makefile
> +++ b/drivers/iommu/Makefile
> @@ -1,5 +1,5 @@
> # SPDX-License-Identifier: GPL-2.0
> -obj-y += intel/
> +obj-y += amd/ intel/
> obj-$(CONFIG_IOMMU_API) += iommu.o
> obj-$(CONFIG_IOMMU_API) += iommu-traces.o
> obj-$(CONFIG_IOMMU_API) += iommu-sysfs.o
> @@ -12,9 +12,6 @@ obj-$(CONFIG_IOASID) += ioasid.o
> obj-$(CONFIG_IOMMU_IOVA) += iova.o
> obj-$(CONFIG_OF_IOMMU) += of_iommu.o
> obj-$(CONFIG_MSM_IOMMU) += msm_iommu.o
> -obj-$(CONFIG_AMD_IOMMU) += amd/iommu.o amd/init.o amd/quirks.o
> -obj-$(CONFIG_AMD_IOMMU_DEBUGFS) += amd/debugfs.o
> -obj-$(CONFIG_AMD_IOMMU_V2) += amd/iommu_v2.o
> obj-$(CONFIG_ARM_SMMU) += arm_smmu.o
> arm_smmu-objs += arm-smmu.o arm-smmu-impl.o arm-smmu-qcom.o
> obj-$(CONFIG_ARM_SMMU_V3) += arm-smmu-v3.o
> diff --git a/drivers/iommu/amd/Kconfig b/drivers/iommu/amd/Kconfig
> new file mode 100644
> index 000000000000..1f061d91e0b8
> --- /dev/null
> +++ b/drivers/iommu/amd/Kconfig
> @@ -0,0 +1,44 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +# AMD IOMMU support
> +config AMD_IOMMU
> + bool "AMD IOMMU support"
> + select SWIOTLB
> + select PCI_MSI
> + select PCI_ATS
> + select PCI_PRI
> + select PCI_PASID
> + select IOMMU_API
> + select IOMMU_IOVA
> + select IOMMU_DMA
> + depends on X86_64 && PCI && ACPI
> + help
> + With this option you can enable support for AMD IOMMU hardware in
> + your system. An IOMMU is a hardware component which provides
> + remapping of DMA memory accesses from devices. With an AMD IOMMU you
> + can isolate the DMA memory of different devices and protect the
> + system from misbehaving device drivers or hardware.
> +
> + You can find out if your system has an AMD IOMMU if you look into
> + your BIOS for an option to enable it or if you have an IVRS ACPI
> + table.
> +
> +config AMD_IOMMU_V2
> + tristate "AMD IOMMU Version 2 driver"
> + depends on AMD_IOMMU
> + select MMU_NOTIFIER
> + help
> + This option enables support for the AMD IOMMUv2 features of the IOMMU
> + hardware. Select this option if you want to use devices that support
> + the PCI PRI and PASID interface.
> +
> +config AMD_IOMMU_DEBUGFS
> + bool "Enable AMD IOMMU internals in DebugFS"
> + depends on AMD_IOMMU && IOMMU_DEBUGFS
> + help
> + !!!WARNING!!! !!!WARNING!!! !!!WARNING!!! !!!WARNING!!!
> +
> + DO NOT ENABLE THIS OPTION UNLESS YOU REALLY, -REALLY- KNOW WHAT YOU ARE DOING!!!
> + Exposes AMD IOMMU device internals in DebugFS.
> +
> + This option is -NOT- intended for production environments, and should
> + not generally be enabled.
> diff --git a/drivers/iommu/amd/Makefile b/drivers/iommu/amd/Makefile
> new file mode 100644
> index 000000000000..552f68ddcefd
> --- /dev/null
> +++ b/drivers/iommu/amd/Makefile
> @@ -0,0 +1,4 @@
> +# SPDX-License-Identifier: GPL-2.0
> +obj-$(CONFIG_AMD_IOMMU) += iommu.o init.o quirks.o
> +obj-$(CONFIG_AMD_IOMMU_DEBUGFS) += debugfs.o
> +obj-$(CONFIG_AMD_IOMMU_V2) += iommu_v2.o
>

2020-06-30 09:46:52

by Joerg Roedel

[permalink] [raw]
Subject: Re: [PATCH 1/2] iommu/vt-d: Move Kconfig and Makefile bits down into intel directory

Hi Jerry,

On Fri, Jun 12, 2020 at 04:10:59PM -0700, Jerry Snitselaar wrote:
> Move Intel Kconfig and Makefile bits down into intel directory
> with the rest of the Intel specific files.
>
> Cc: Joerg Roedel <[email protected]>
> Cc: Lu Baolu <[email protected]>
> Signed-off-by: Jerry Snitselaar <[email protected]>
> ---
> drivers/iommu/Kconfig | 86 +-----------------------------------
> drivers/iommu/Makefile | 8 +---
> drivers/iommu/intel/Kconfig | 86 ++++++++++++++++++++++++++++++++++++
> drivers/iommu/intel/Makefile | 7 +++

The patches do not apply to v5.8-rc3, can you please rebase them and
resend?

Thanks,

Joerg