cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

Kconfig (6439B)


      1# SPDX-License-Identifier: GPL-2.0-only
      2
      3config NO_DMA
      4	bool
      5
      6config HAS_DMA
      7	bool
      8	depends on !NO_DMA
      9	default y
     10
     11config DMA_OPS
     12	depends on HAS_DMA
     13	bool
     14
     15#
     16# IOMMU drivers that can bypass the IOMMU code and optionally use the direct
     17# mapping fast path should select this option and set the dma_ops_bypass
     18# flag in struct device where applicable
     19#
     20config DMA_OPS_BYPASS
     21	bool
     22
     23# Lets platform IOMMU driver choose between bypass and IOMMU
     24config ARCH_HAS_DMA_MAP_DIRECT
     25	bool
     26
     27config NEED_SG_DMA_LENGTH
     28	bool
     29
     30config NEED_DMA_MAP_STATE
     31	bool
     32
     33config ARCH_DMA_ADDR_T_64BIT
     34	def_bool 64BIT || PHYS_ADDR_T_64BIT
     35
     36config ARCH_HAS_DMA_SET_MASK
     37	bool
     38
     39#
     40# Select this option if the architecture needs special handling for
     41# DMA_ATTR_WRITE_COMBINE.  Normally the "uncached" mapping should be what
     42# people thing of when saying write combine, so very few platforms should
     43# need to enable this.
     44#
     45config ARCH_HAS_DMA_WRITE_COMBINE
     46	bool
     47
     48#
     49# Select if the architectures provides the arch_dma_mark_clean hook
     50#
     51config ARCH_HAS_DMA_MARK_CLEAN
     52	bool
     53
     54config DMA_DECLARE_COHERENT
     55	bool
     56
     57config ARCH_HAS_SETUP_DMA_OPS
     58	bool
     59
     60config ARCH_HAS_TEARDOWN_DMA_OPS
     61	bool
     62
     63config ARCH_HAS_SYNC_DMA_FOR_DEVICE
     64	bool
     65
     66config ARCH_HAS_SYNC_DMA_FOR_CPU
     67	bool
     68	select NEED_DMA_MAP_STATE
     69
     70config ARCH_HAS_SYNC_DMA_FOR_CPU_ALL
     71	bool
     72
     73config ARCH_HAS_DMA_PREP_COHERENT
     74	bool
     75
     76config ARCH_HAS_FORCE_DMA_UNENCRYPTED
     77	bool
     78
     79config SWIOTLB
     80	bool
     81	select NEED_DMA_MAP_STATE
     82
     83config DMA_RESTRICTED_POOL
     84	bool "DMA Restricted Pool"
     85	depends on OF && OF_RESERVED_MEM && SWIOTLB
     86	help
     87	  This enables support for restricted DMA pools which provide a level of
     88	  DMA memory protection on systems with limited hardware protection
     89	  capabilities, such as those lacking an IOMMU.
     90
     91	  For more information see
     92	  <Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt>
     93	  and <kernel/dma/swiotlb.c>.
     94	  If unsure, say "n".
     95
     96#
     97# Should be selected if we can mmap non-coherent mappings to userspace.
     98# The only thing that is really required is a way to set an uncached bit
     99# in the pagetables
    100#
    101config DMA_NONCOHERENT_MMAP
    102	default y if !MMU
    103	bool
    104
    105config DMA_COHERENT_POOL
    106	select GENERIC_ALLOCATOR
    107	bool
    108
    109config DMA_GLOBAL_POOL
    110	select DMA_DECLARE_COHERENT
    111	bool
    112
    113config DMA_DIRECT_REMAP
    114	bool
    115	select DMA_COHERENT_POOL
    116	select DMA_NONCOHERENT_MMAP
    117
    118config DMA_CMA
    119	bool "DMA Contiguous Memory Allocator"
    120	depends on HAVE_DMA_CONTIGUOUS && CMA
    121	help
    122	  This enables the Contiguous Memory Allocator which allows drivers
    123	  to allocate big physically-contiguous blocks of memory for use with
    124	  hardware components that do not support I/O map nor scatter-gather.
    125
    126	  You can disable CMA by specifying "cma=0" on the kernel's command
    127	  line.
    128
    129	  For more information see <kernel/dma/contiguous.c>.
    130	  If unsure, say "n".
    131
    132if  DMA_CMA
    133
    134config DMA_PERNUMA_CMA
    135	bool "Enable separate DMA Contiguous Memory Area for each NUMA Node"
    136	default NUMA && ARM64
    137	help
    138	  Enable this option to get pernuma CMA areas so that devices like
    139	  ARM64 SMMU can get local memory by DMA coherent APIs.
    140
    141	  You can set the size of pernuma CMA by specifying "cma_pernuma=size"
    142	  on the kernel's command line.
    143
    144comment "Default contiguous memory area size:"
    145
    146config CMA_SIZE_MBYTES
    147	int "Size in Mega Bytes"
    148	depends on !CMA_SIZE_SEL_PERCENTAGE
    149	default 0 if X86
    150	default 16
    151	help
    152	  Defines the size (in MiB) of the default memory area for Contiguous
    153	  Memory Allocator.  If the size of 0 is selected, CMA is disabled by
    154	  default, but it can be enabled by passing cma=size[MG] to the kernel.
    155
    156
    157config CMA_SIZE_PERCENTAGE
    158	int "Percentage of total memory"
    159	depends on !CMA_SIZE_SEL_MBYTES
    160	default 0 if X86
    161	default 10
    162	help
    163	  Defines the size of the default memory area for Contiguous Memory
    164	  Allocator as a percentage of the total memory in the system.
    165	  If 0 percent is selected, CMA is disabled by default, but it can be
    166	  enabled by passing cma=size[MG] to the kernel.
    167
    168choice
    169	prompt "Selected region size"
    170	default CMA_SIZE_SEL_MBYTES
    171
    172config CMA_SIZE_SEL_MBYTES
    173	bool "Use mega bytes value only"
    174
    175config CMA_SIZE_SEL_PERCENTAGE
    176	bool "Use percentage value only"
    177
    178config CMA_SIZE_SEL_MIN
    179	bool "Use lower value (minimum)"
    180
    181config CMA_SIZE_SEL_MAX
    182	bool "Use higher value (maximum)"
    183
    184endchoice
    185
    186config CMA_ALIGNMENT
    187	int "Maximum PAGE_SIZE order of alignment for contiguous buffers"
    188	range 2 12
    189	default 8
    190	help
    191	  DMA mapping framework by default aligns all buffers to the smallest
    192	  PAGE_SIZE order which is greater than or equal to the requested buffer
    193	  size. This works well for buffers up to a few hundreds kilobytes, but
    194	  for larger buffers it just a memory waste. With this parameter you can
    195	  specify the maximum PAGE_SIZE order for contiguous buffers. Larger
    196	  buffers will be aligned only to this specified order. The order is
    197	  expressed as a power of two multiplied by the PAGE_SIZE.
    198
    199	  For example, if your system defaults to 4KiB pages, the order value
    200	  of 8 means that the buffers will be aligned up to 1MiB only.
    201
    202	  If unsure, leave the default value "8".
    203
    204endif
    205
    206config DMA_API_DEBUG
    207	bool "Enable debugging of DMA-API usage"
    208	select NEED_DMA_MAP_STATE
    209	help
    210	  Enable this option to debug the use of the DMA API by device drivers.
    211	  With this option you will be able to detect common bugs in device
    212	  drivers like double-freeing of DMA mappings or freeing mappings that
    213	  were never allocated.
    214
    215	  This option causes a performance degradation.  Use only if you want to
    216	  debug device drivers and dma interactions.
    217
    218	  If unsure, say N.
    219
    220config DMA_API_DEBUG_SG
    221	bool "Debug DMA scatter-gather usage"
    222	default y
    223	depends on DMA_API_DEBUG
    224	help
    225	  Perform extra checking that callers of dma_map_sg() have respected the
    226	  appropriate segment length/boundary limits for the given device when
    227	  preparing DMA scatterlists.
    228
    229	  This is particularly likely to have been overlooked in cases where the
    230	  dma_map_sg() API is used for general bulk mapping of pages rather than
    231	  preparing literal scatter-gather descriptors, where there is a risk of
    232	  unexpected behaviour from DMA API implementations if the scatterlist
    233	  is technically out-of-spec.
    234
    235	  If unsure, say N.
    236
    237config DMA_MAP_BENCHMARK
    238	bool "Enable benchmarking of streaming DMA mapping"
    239	depends on DEBUG_FS
    240	help
    241	  Provides /sys/kernel/debug/dma_map_benchmark that helps with testing
    242	  performance of dma_(un)map_page.
    243
    244	  See tools/testing/selftests/dma/dma_map_benchmark.c