# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note # # (C) COPYRIGHT 2012-2023 ARM Limited. All rights reserved. # # This program is free software and is provided to you under the terms of the # GNU General Public License version 2 as published by the Free Software # Foundation, and any use by you of this program is subject to the terms # of such GNU license. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, you can access it online at # http://www.gnu.org/licenses/gpl-2.0.html. # # menuconfig MALI_MIDGARD tristate "Mali Midgard series support" select GPU_TRACEPOINTS if ANDROID select DMA_SHARED_BUFFER select PM_DEVFREQ select DEVFREQ_THERMAL select FW_LOADER default n help Enable this option to build support for a ARM Mali Midgard GPU. To compile this driver as a module, choose M here: this will generate a single module, called mali_kbase. if MALI_MIDGARD config MALI_PLATFORM_NAME depends on MALI_MIDGARD string "Platform name" default "devicetree" help Enter the name of the desired platform configuration directory to include in the build. 'platform/$(MALI_PLATFORM_NAME)/Kbuild' must exist. choice prompt "Mali HW backend" depends on MALI_MIDGARD default MALI_REAL_HW config MALI_REAL_HW bool "Enable build of Mali kernel driver for real HW" depends on MALI_MIDGARD help This is the default HW backend. config MALI_NO_MALI bool "Enable build of Mali kernel driver for No Mali" depends on MALI_MIDGARD && MALI_EXPERT help This can be used to test the driver in a simulated environment whereby the hardware is not physically present. If the hardware is physically present it will not be used. This can be used to test the majority of the driver without needing actual hardware or for software benchmarking. All calls to the simulated hardware will complete immediately as if the hardware completed the task. config MALI_NO_MALI_DEFAULT_GPU string "Default GPU for No Mali" depends on MALI_NO_MALI default "tMIx" help This option sets the default GPU to identify as for No Mali builds. endchoice menu "Platform specific options" source "$(MALI_KCONFIG_EXT_PREFIX)drivers/gpu/arm/midgard/platform/Kconfig" endmenu config MALI_CSF_SUPPORT bool "Enable Mali CSF based GPU support" depends on MALI_MIDGARD=m default n help Enables support for CSF based GPUs. config MALI_DEVFREQ bool "Enable devfreq support for Mali" depends on MALI_MIDGARD && PM_DEVFREQ select DEVFREQ_GOV_SIMPLE_ONDEMAND default y help Support devfreq for Mali. Using the devfreq framework and, by default, the simple on-demand governor, the frequency of Mali will be dynamically selected from the available OPPs. config MALI_MIDGARD_DVFS bool "Enable legacy DVFS" depends on MALI_MIDGARD && !MALI_DEVFREQ default n help Choose this option to enable legacy DVFS in the Mali Midgard DDK. config MALI_GATOR_SUPPORT bool "Enable Streamline tracing support" depends on MALI_MIDGARD default y help Enables kbase tracing used by the Arm Streamline Performance Analyzer. The tracepoints are used to derive GPU activity charts in Streamline. config MALI_MIDGARD_ENABLE_TRACE bool "Enable kbase tracing" depends on MALI_MIDGARD default y if MALI_DEBUG default n help Enables tracing in kbase. Trace log available through the "mali_trace" debugfs file, when the CONFIG_DEBUG_FS is enabled config MALI_ARBITER_SUPPORT bool "Enable arbiter support for Mali" depends on MALI_MIDGARD default n help Enable support for the arbiter interface in the driver. This allows an external arbiter to manage driver access to GPU hardware in a virtualized environment If unsure, say N. config MALI_DMA_BUF_MAP_ON_DEMAND bool "Enable map imported dma-bufs on demand" depends on MALI_MIDGARD default n help This option will cause kbase to set up the GPU mapping of imported dma-buf when needed to run atoms. This is the legacy behavior. This is intended for testing and the option will get removed in the future. config MALI_DMA_BUF_LEGACY_COMPAT bool "Enable legacy compatibility cache flush on dma-buf map" depends on MALI_MIDGARD && !MALI_DMA_BUF_MAP_ON_DEMAND default n help This option enables compatibility with legacy dma-buf mapping behavior, then the dma-buf is mapped on import, by adding cache maintenance where MALI_DMA_BUF_MAP_ON_DEMAND would do the mapping, including a cache flush. This option might work-around issues related to missing cache flushes in other drivers. This only has an effect for clients using UK 11.18 or older. For later UK versions it is not possible. config MALI_CORESIGHT depends on MALI_MIDGARD && MALI_CSF_SUPPORT && !MALI_NO_MALI bool "Enable Kbase CoreSight tracing support" default n menuconfig MALI_EXPERT depends on MALI_MIDGARD bool "Enable Expert Settings" default n help Enabling this option and modifying the default settings may produce a driver with performance or other limitations. if MALI_EXPERT config LARGE_PAGE_SUPPORT bool "Support for 2MB page allocations" depends on MALI_MIDGARD && MALI_EXPERT default y help Rather than allocating all GPU memory page-by-page, allow the system to decide whether to attempt to allocate 2MB pages from the kernel. This reduces TLB pressure. Note that this option only enables the support for the module parameter and does not necessarily mean that 2MB pages will be used automatically. This depends on GPU support. If in doubt, say Y. config PAGE_MIGRATION_SUPPORT bool "Enable support for page migration" depends on MALI_MIDGARD && MALI_EXPERT default y default n if ANDROID help Compile in support for page migration. If set to disabled ('n') then page migration cannot be enabled at all, and related symbols are not compiled in. If not set, page migration is compiled in by default, and if not explicitly enabled or disabled with the insmod parameter, page migration becomes automatically enabled with large pages. If in doubt, say Y. To strip out page migration symbols and support, say N. config MALI_CORESTACK bool "Enable support of GPU core stack power control" depends on MALI_MIDGARD && MALI_EXPERT default n help Enabling this feature on supported GPUs will let the driver powering on/off the GPU core stack independently without involving the Power Domain Controller. This should only be enabled on platforms which integration of the PDC to the Mali GPU is known to be problematic. This feature is currently only supported on t-Six and t-HEx GPUs. If unsure, say N. comment "Platform options" depends on MALI_MIDGARD && MALI_EXPERT config MALI_ERROR_INJECT bool "Enable No Mali error injection" depends on MALI_MIDGARD && MALI_EXPERT && MALI_NO_MALI default n help Enables insertion of errors to test module failure and recovery mechanisms. comment "Debug options" depends on MALI_MIDGARD && MALI_EXPERT config MALI_DEBUG bool "Enable debug build" depends on MALI_MIDGARD && MALI_EXPERT default n help Select this option for increased checking and reporting of errors. config MALI_FENCE_DEBUG bool "Enable debug sync fence usage" depends on MALI_MIDGARD && MALI_EXPERT && SYNC_FILE default y if MALI_DEBUG help Select this option to enable additional checking and reporting on the use of sync fences in the Mali driver. This will add a 3s timeout to all sync fence waits in the Mali driver, so that when work for Mali has been waiting on a sync fence for a long time a debug message will be printed, detailing what fence is causing the block, and which dependent Mali atoms are blocked as a result of this. The timeout can be changed at runtime through the js_soft_timeout device attribute, where the timeout is specified in milliseconds. config MALI_SYSTEM_TRACE bool "Enable system event tracing support" depends on MALI_MIDGARD && MALI_EXPERT default y if MALI_DEBUG default n help Choose this option to enable system trace events for each kbase event. This is typically used for debugging but has minimal overhead when not in use. Enable only if you know what you are doing. comment "Instrumentation options" depends on MALI_MIDGARD && MALI_EXPERT choice prompt "Select Performance counters set" default MALI_PRFCNT_SET_PRIMARY depends on MALI_MIDGARD && MALI_EXPERT config MALI_PRFCNT_SET_PRIMARY bool "Primary" depends on MALI_MIDGARD && MALI_EXPERT help Select this option to use primary set of performance counters. config MALI_PRFCNT_SET_SECONDARY bool "Secondary" depends on MALI_MIDGARD && MALI_EXPERT help Select this option to use secondary set of performance counters. Kernel features that depend on an access to the primary set of counters may become unavailable. Enabling this option will prevent power management from working optimally and may cause instrumentation tools to return bogus results. If unsure, use MALI_PRFCNT_SET_PRIMARY. config MALI_PRFCNT_SET_TERTIARY bool "Tertiary" depends on MALI_MIDGARD && MALI_EXPERT help Select this option to use tertiary set of performance counters. Kernel features that depend on an access to the primary set of counters may become unavailable. Enabling this option will prevent power management from working optimally and may cause instrumentation tools to return bogus results. If unsure, use MALI_PRFCNT_SET_PRIMARY. endchoice config MALI_PRFCNT_SET_SELECT_VIA_DEBUG_FS bool "Enable runtime selection of performance counters set via debugfs" depends on MALI_MIDGARD && MALI_EXPERT && DEBUG_FS default n help Select this option to make the secondary set of performance counters available at runtime via debugfs. Kernel features that depend on an access to the primary set of counters may become unavailable. If no runtime debugfs option is set, the build time counter set choice will be used. This feature is unsupported and unstable, and may break at any time. Enabling this option will prevent power management from working optimally and may cause instrumentation tools to return bogus results. No validation is done on the debugfs input. Invalid input could cause performance counter errors. Valid inputs are the values accepted by the SET_SELECT bits of the PRFCNT_CONFIG register as defined in the architecture specification. If unsure, say N. config MALI_JOB_DUMP bool "Enable system level support needed for job dumping" depends on MALI_MIDGARD && MALI_EXPERT default n help Choose this option to enable system level support needed for job dumping. This is typically used for instrumentation but has minimal overhead when not in use. Enable only if you know what you are doing. comment "Workarounds" depends on MALI_MIDGARD && MALI_EXPERT config MALI_PWRSOFT_765 bool "Enable workaround for PWRSOFT-765" depends on MALI_MIDGARD && MALI_EXPERT default n help PWRSOFT-765 fixes devfreq cooling devices issues. The fix was merged in kernel v4.10, however if backported into the kernel then this option must be manually selected. If using kernel >= v4.10 then say N, otherwise if devfreq cooling changes have been backported say Y to avoid compilation errors. config MALI_HW_ERRATA_1485982_NOT_AFFECTED bool "Disable workaround for BASE_HW_ISSUE_GPU2017_1336" depends on MALI_MIDGARD && MALI_EXPERT default n help This option disables the default workaround for GPU2017-1336. The workaround keeps the L2 cache powered up except for powerdown and reset. The workaround introduces a limitation that will prevent the running of protected mode content on fully coherent platforms, as the switch to IO coherency mode requires the L2 to be turned off. config MALI_HW_ERRATA_1485982_USE_CLOCK_ALTERNATIVE bool "Use alternative workaround for BASE_HW_ISSUE_GPU2017_1336" depends on MALI_MIDGARD && MALI_EXPERT && !MALI_HW_ERRATA_1485982_NOT_AFFECTED default n help This option uses an alternative workaround for GPU2017-1336. Lowering the GPU clock to a, platform specific, known good frequency before powering down the L2 cache. The clock can be specified in the device tree using the property, opp-mali-errata-1485982. Otherwise the slowest clock will be selected. config MALI_HOST_CONTROLS_SC_RAILS bool "Enable Host based control of the shader core power rails" depends on MALI_CSF_SUPPORT default n help This option enables the Host based control of the power rails for shader cores. It is recommended to use PDCA (Power Domain Control Adapter) inside the GPU to handshake with SoC PMU to control the power of cores. endif config MALI_ARBITRATION tristate "Enable Virtualization reference code" depends on MALI_MIDGARD default n help Enables the build of several reference modules used in the reference virtualization setup for Mali If unsure, say N. config MALI_TRACE_POWER_GPU_WORK_PERIOD bool "Enable per-application GPU metrics tracepoints" depends on MALI_MIDGARD default y help This option enables per-application GPU metrics tracepoints. If unsure, say N. source "$(MALI_KCONFIG_EXT_PREFIX)drivers/gpu/arm/midgard/tests/Kconfig" endif