iommu: Change kconfig around IOMMU_SVA
authorJason Gunthorpe <jgg@nvidia.com>
Fri, 27 Oct 2023 00:05:20 +0000 (08:05 +0800)
committerJoerg Roedel <jroedel@suse.de>
Tue, 12 Dec 2023 09:11:27 +0000 (10:11 +0100)
commit8f23f5dba6b4693448144bde4dd6f537543442c2
tree2d3c317c082ccbd7b038ccfb7ed22cfcc7679d0a
parent61f054f3c8a6d6081e078e93aba144760aed17c9
iommu: Change kconfig around IOMMU_SVA

Linus suggested that the kconfig here is confusing:

https://lore.kernel.org/all/CAHk-=wgUiAtiszwseM1p2fCJ+sC4XWQ+YN4TanFhUgvUqjr9Xw@mail.gmail.com/

Let's break it into three kconfigs controlling distinct things:

 - CONFIG_IOMMU_MM_DATA controls if the mm_struct has the additional
   fields for the IOMMU. Currently only PASID, but later patches store
   a struct iommu_mm_data *

 - CONFIG_ARCH_HAS_CPU_PASID controls if the arch needs the scheduling bit
   for keeping track of the ENQCMD instruction. x86 will select this if
   IOMMU_SVA is enabled

 - IOMMU_SVA controls if the IOMMU core compiles in the SVA support code
   for iommu driver use and the IOMMU exported API

This way ARM will not enable CONFIG_ARCH_HAS_CPU_PASID

Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/20231027000525.1278806-2-tina.zhang@intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
arch/Kconfig
arch/x86/Kconfig
arch/x86/kernel/traps.c
drivers/iommu/Kconfig
include/linux/iommu.h
include/linux/mm_types.h
include/linux/sched.h
kernel/fork.c
mm/Kconfig
mm/init-mm.c