mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-27 06:50:37 +00:00

There are quite a lot of options for the Arm drivers, still all buried in the top-level Kconfig. For ease of use and consistency with all the other subdirectories, break these out into drivers/arm. For similar clarity and self-consistency, also tweak the ARM_SMMU sub-options to use "if" instead of "depends", to match ARM_SMMU_V3. Lastly also clean up the slightly messy description of ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT as highlighted by Geert - by now we really shouldn't need commentary on v4.x kernel behaviour anyway - and downgrade it to EXPERT as the first step in the 6-year-old threat to remove it entirely. Cc: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Robin Murphy <robin.murphy@arm.com> Reviewed-by: Pranjal Shrivastava <praan@google.com> Link: https://lore.kernel.org/r/a614ec86ba78c09cd16e348f633f6bb38793391f.1742480488.git.robin.murphy@arm.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
145 lines
4.7 KiB
Plaintext
145 lines
4.7 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
# ARM IOMMU support
|
|
config ARM_SMMU
|
|
tristate "ARM Ltd. System MMU (SMMU) Support"
|
|
depends on ARM64 || ARM || COMPILE_TEST
|
|
depends on !GENERIC_ATOMIC64 # for IOMMU_IO_PGTABLE_LPAE
|
|
select IOMMU_API
|
|
select IOMMU_IO_PGTABLE_LPAE
|
|
select ARM_DMA_USE_IOMMU if ARM
|
|
help
|
|
Support for implementations of the ARM System MMU architecture
|
|
versions 1 and 2.
|
|
|
|
Say Y here if your SoC includes an IOMMU device implementing
|
|
the ARM SMMU architecture.
|
|
|
|
if ARM_SMMU
|
|
config ARM_SMMU_LEGACY_DT_BINDINGS
|
|
bool "Support the legacy \"mmu-masters\" devicetree bindings"
|
|
depends on ARM_SMMU=y && OF
|
|
help
|
|
Support for the badly designed and deprecated "mmu-masters"
|
|
devicetree bindings. This allows some DMA masters to attach
|
|
to the SMMU but does not provide any support via the DMA API.
|
|
If you're lucky, you might be able to get VFIO up and running.
|
|
|
|
If you say Y here then you'll make me very sad. Instead, say N
|
|
and move your firmware to the utopian future that was 2016.
|
|
|
|
config ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT
|
|
bool "Disable unmatched stream bypass by default" if EXPERT
|
|
default y
|
|
help
|
|
If your firmware is broken and fails to describe StreamIDs which
|
|
Linux should know about in order to manage the SMMU correctly and
|
|
securely, and you don't want to boot with the 'arm-smmu.disable_bypass=0'
|
|
command line parameter, then as a last resort you can turn it off
|
|
by default here. But don't. This option may be removed at any time.
|
|
|
|
Note that 'arm-smmu.disable_bypass=1' will still take precedence.
|
|
|
|
config ARM_SMMU_MMU_500_CPRE_ERRATA
|
|
bool "Enable errata workaround for CPRE in SMMU reset path"
|
|
default y
|
|
help
|
|
Say Y here (by default) to apply workaround to disable
|
|
MMU-500's next-page prefetcher for sake of 4 known errata.
|
|
|
|
Say N here only when it is sure that any errata related to
|
|
prefetch enablement are not applicable on the platform.
|
|
Refer silicon-errata.rst for info on errata IDs.
|
|
|
|
config ARM_SMMU_QCOM
|
|
def_tristate y
|
|
depends on ARCH_QCOM
|
|
select QCOM_SCM
|
|
help
|
|
When running on a Qualcomm platform that has the custom variant
|
|
of the ARM SMMU, this needs to be built into the SMMU driver.
|
|
|
|
config ARM_SMMU_QCOM_DEBUG
|
|
bool "ARM SMMU QCOM implementation defined debug support"
|
|
depends on ARM_SMMU_QCOM=y
|
|
help
|
|
Support for implementation specific debug features in ARM SMMU
|
|
hardware found in QTI platforms. This include support for
|
|
the Translation Buffer Units (TBU) that can be used to obtain
|
|
additional information when debugging memory management issues
|
|
like context faults.
|
|
|
|
Say Y here to enable debug for issues such as context faults
|
|
or TLB sync timeouts which requires implementation defined
|
|
register dumps.
|
|
endif
|
|
|
|
config ARM_SMMU_V3
|
|
tristate "ARM Ltd. System MMU Version 3 (SMMUv3) Support"
|
|
depends on ARM64
|
|
select IOMMU_API
|
|
select IOMMU_IO_PGTABLE_LPAE
|
|
select GENERIC_MSI_IRQ
|
|
select IOMMUFD_DRIVER if IOMMUFD
|
|
help
|
|
Support for implementations of the ARM System MMU architecture
|
|
version 3 providing translation support to a PCIe root complex.
|
|
|
|
Say Y here if your system includes an IOMMU device implementing
|
|
the ARM SMMUv3 architecture.
|
|
|
|
if ARM_SMMU_V3
|
|
config ARM_SMMU_V3_SVA
|
|
bool "Shared Virtual Addressing support for the ARM SMMUv3"
|
|
select IOMMU_SVA
|
|
select IOMMU_IOPF
|
|
select MMU_NOTIFIER
|
|
help
|
|
Support for sharing process address spaces with devices using the
|
|
SMMUv3.
|
|
|
|
Say Y here if your system supports SVA extensions such as PCIe PASID
|
|
and PRI.
|
|
|
|
config ARM_SMMU_V3_IOMMUFD
|
|
bool "Enable IOMMUFD features for ARM SMMUv3 (EXPERIMENTAL)"
|
|
depends on IOMMUFD
|
|
help
|
|
Support for IOMMUFD features intended to support virtual machines
|
|
with accelerated virtual IOMMUs.
|
|
|
|
Say Y here if you are doing development and testing on this feature.
|
|
|
|
config ARM_SMMU_V3_KUNIT_TEST
|
|
tristate "KUnit tests for arm-smmu-v3 driver" if !KUNIT_ALL_TESTS
|
|
depends on KUNIT
|
|
depends on ARM_SMMU_V3_SVA
|
|
default KUNIT_ALL_TESTS
|
|
help
|
|
Enable this option to unit-test arm-smmu-v3 driver functions.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEGRA241_CMDQV
|
|
bool "NVIDIA Tegra241 CMDQ-V extension support for ARM SMMUv3"
|
|
depends on ACPI
|
|
help
|
|
Support for NVIDIA CMDQ-Virtualization extension for ARM SMMUv3. The
|
|
CMDQ-V extension is similar to v3.3 ECMDQ for multi command queues
|
|
support, except with virtualization capabilities.
|
|
|
|
Say Y here if your system is NVIDIA Tegra241 (Grace) or it has the same
|
|
CMDQ-V extension.
|
|
endif
|
|
|
|
config QCOM_IOMMU
|
|
# Note: iommu drivers cannot (yet?) be built as modules
|
|
bool "Qualcomm IOMMU Support"
|
|
depends on ARCH_QCOM || COMPILE_TEST
|
|
depends on !GENERIC_ATOMIC64 # for IOMMU_IO_PGTABLE_LPAE
|
|
select QCOM_SCM
|
|
select IOMMU_API
|
|
select IOMMU_IO_PGTABLE_LPAE
|
|
select ARM_DMA_USE_IOMMU
|
|
help
|
|
Support for IOMMU on certain Qualcomm SoCs.
|