400 lines
13 KiB
Plaintext
400 lines
13 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
|
|
#
|
|
# (C) COPYRIGHT 2012-2024 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_BIFROST
|
|
tristate "Mali Bifrost series support"
|
|
select GPU_TRACEPOINTS if ANDROID
|
|
select DMA_SHARED_BUFFER
|
|
select FW_LOADER
|
|
default n
|
|
help
|
|
Enable this option to build support for a ARM Mali Bifrost GPU.
|
|
|
|
To compile this driver as a module, choose M here:
|
|
this will generate a single module, called mali_kbase.
|
|
|
|
if MALI_BIFROST
|
|
|
|
config MALI_PLATFORM_NAME
|
|
depends on MALI_BIFROST
|
|
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_BIFROST
|
|
default MALI_REAL_HW
|
|
|
|
config MALI_REAL_HW
|
|
bool "Enable build of Mali kernel driver for real HW"
|
|
depends on MALI_BIFROST
|
|
help
|
|
This is the default HW backend.
|
|
|
|
config MALI_BIFROST_NO_MALI
|
|
bool "Enable build of Mali kernel driver for No Mali"
|
|
depends on MALI_BIFROST && MALI_BIFROST_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.
|
|
|
|
endchoice
|
|
|
|
config MALI_NO_MALI_DEFAULT_GPU
|
|
string "Default GPU for No Mali"
|
|
depends on MALI_BIFROST_NO_MALI
|
|
default "tMIx"
|
|
help
|
|
This option sets the default GPU to identify as for No Mali builds.
|
|
|
|
config MALI_IS_FPGA
|
|
bool "Enable build of Mali kernel driver for FPGA"
|
|
depends on MALI_BIFROST
|
|
default n
|
|
help
|
|
This is the default HW backend.
|
|
|
|
menu "Platform specific options"
|
|
source "$(MALI_KCONFIG_EXT_PREFIX)drivers/gpu/arm/bifrost/platform/Kconfig"
|
|
endmenu
|
|
|
|
config MALI_CSF_SUPPORT
|
|
bool "Enable Mali CSF based GPU support"
|
|
default n
|
|
help
|
|
Enables support for CSF based GPUs.
|
|
|
|
config MALI_BIFROST_DEVFREQ
|
|
bool "Enable devfreq support for Mali"
|
|
depends on MALI_BIFROST && 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_BIFROST_DVFS
|
|
bool "Enable legacy DVFS"
|
|
depends on MALI_BIFROST && !MALI_BIFROST_DEVFREQ
|
|
default n
|
|
help
|
|
Choose this option to enable legacy DVFS in the Mali Midgard DDK.
|
|
|
|
config MALI_BIFROST_GATOR_SUPPORT
|
|
bool "Enable Streamline tracing support"
|
|
depends on MALI_BIFROST
|
|
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_BIFROST_ENABLE_TRACE
|
|
bool "Enable kbase tracing"
|
|
depends on MALI_BIFROST
|
|
default y if MALI_BIFROST_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_BIFROST
|
|
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_BIFROST
|
|
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_BIFROST && !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_BIFROST && MALI_CSF_SUPPORT && !MALI_BIFROST_NO_MALI
|
|
bool "Enable Kbase CoreSight tracing support"
|
|
default n
|
|
|
|
menuconfig MALI_BIFROST_EXPERT
|
|
depends on MALI_BIFROST
|
|
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_BIFROST_EXPERT
|
|
|
|
config LARGE_PAGE_SUPPORT
|
|
bool "Support for 2MB page allocations"
|
|
depends on MALI_BIFROST && MALI_BIFROST_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_BIFROST && MALI_BIFROST_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_BIFROST && MALI_BIFROST_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 "Debug options"
|
|
depends on MALI_BIFROST && MALI_BIFROST_EXPERT
|
|
|
|
config MALI_BIFROST_DEBUG
|
|
bool "Enable debug build"
|
|
depends on MALI_BIFROST && MALI_BIFROST_EXPERT
|
|
default n
|
|
help
|
|
Select this option for increased checking and reporting of errors.
|
|
|
|
config MALI_BIFROST_FENCE_DEBUG
|
|
bool "Enable debug sync fence usage"
|
|
depends on MALI_BIFROST && MALI_BIFROST_EXPERT && SYNC_FILE
|
|
default y if MALI_BIFROST_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_BIFROST_SYSTEM_TRACE
|
|
bool "Enable system event tracing support"
|
|
depends on MALI_BIFROST && MALI_BIFROST_EXPERT
|
|
default y if MALI_BIFROST_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_BIFROST && MALI_BIFROST_EXPERT
|
|
|
|
choice
|
|
prompt "Select Performance counters set"
|
|
default MALI_PRFCNT_SET_PRIMARY
|
|
depends on MALI_BIFROST && MALI_BIFROST_EXPERT
|
|
|
|
config MALI_PRFCNT_SET_PRIMARY
|
|
bool "Primary"
|
|
depends on MALI_BIFROST && MALI_BIFROST_EXPERT
|
|
help
|
|
Select this option to use primary set of performance counters.
|
|
|
|
config MALI_BIFROST_PRFCNT_SET_SECONDARY
|
|
bool "Secondary"
|
|
depends on MALI_BIFROST && MALI_BIFROST_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_BIFROST && MALI_BIFROST_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_BIFROST && MALI_BIFROST_EXPERT && DEBUG_FS && !MALI_CSF_SUPPORT
|
|
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_BIFROST && MALI_BIFROST_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_BIFROST && MALI_BIFROST_EXPERT
|
|
|
|
config MALI_PWRSOFT_765
|
|
bool "Enable workaround for PWRSOFT-765"
|
|
depends on MALI_BIFROST && MALI_BIFROST_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 KBASE_HW_ISSUE_GPU2017_1336"
|
|
depends on MALI_BIFROST && MALI_BIFROST_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 KBASE_HW_ISSUE_GPU2017_1336"
|
|
depends on MALI_BIFROST && MALI_BIFROST_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.
|
|
|
|
endif
|
|
|
|
config MALI_ARBITRATION
|
|
tristate "Enable Virtualization reference code"
|
|
depends on MALI_BIFROST
|
|
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_BIFROST
|
|
default y
|
|
help
|
|
This option enables per-application GPU metrics tracepoints.
|
|
|
|
If unsure, say N.
|
|
|
|
config MALI_CSF_INCLUDE_FW
|
|
depends on MALI_BIFROST && MALI_CSF_SUPPORT
|
|
bool "Whether to include CSF firmware into driver"
|
|
default y
|
|
|
|
# source "$(MALI_KCONFIG_EXT_PREFIX)drivers/gpu/arm/bifrost/tests/Kconfig"
|
|
|
|
endif
|