mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 10:34:43 +03:00
L4T does not support virtualization currently and so we should be able to build NVGPU without virtualization support. This avoids having to build many virtualization drivers for Tegra. The build flag CONFIG_TEGRA_VIRTUALIZATION was added for building out-of-tree drivers to select if virtualization is enabled or not. This is enabled by default. However, if this is not set, then driver should still build. Currently, NVGPU is not building when CONFIG_TEGRA_VIRTUALIZATION is not set because CONFIG_TEGRA_GR_VIRTUALIZATION is now always enabled for NVGPU. Fix this by wrapping CONFIG_TEGRA_GR_VIRTUALIZATION with CONFIG_TEGRA_VIRTUALIZATION. Jira GVSCI-16046 Change-Id: I5448ad73d4d4e3e151ef216a7fcf0469890fd5ec Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2868502 Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
356 lines
9.6 KiB
Makefile
356 lines
9.6 KiB
Makefile
# Turn off all other configs, if CONFIG_GK20A is not set
|
|
CONFIG_GK20A := m
|
|
|
|
# Enable the nv_sched build.
|
|
CONFIG_NVS_PRESENT := y
|
|
CONFIG_KMD_SCHEDULING_WORKER_THREAD := y
|
|
|
|
# Enable GK20A PMU features.
|
|
CONFIG_GK20A_PMU := y
|
|
|
|
# Enable support for the GK20A graphics engine on Tegra
|
|
# by adding a Tegra platfrom interface to the GK20A driver.
|
|
CONFIG_TEGRA_GK20A := y
|
|
|
|
# Enable Support for Loading High Secure binary, and using
|
|
# Write Protected Regions (WPR) for storing ucodes, and bootstrap
|
|
# PMU, FECS and GPCCS in Low Secure mode.
|
|
CONFIG_TEGRA_ACR := y
|
|
|
|
# Support for debugger APIs
|
|
CONFIG_NVGPU_DEBUGGER := y
|
|
|
|
# Support for Falcon debugger APIs
|
|
CONFIG_NVGPU_FALCON_DEBUG := y
|
|
|
|
# Support for iGPU LS PMU enable/disable
|
|
CONFIG_NVGPU_LS_PMU := y
|
|
|
|
# Enable/Disable NVGPU logging
|
|
CONFIG_NVGPU_LOGGING := y
|
|
|
|
# Enable/Disable the support of HALs from chips that do not have functional
|
|
# safety certification
|
|
CONFIG_NVGPU_HAL_NON_FUSA := y
|
|
|
|
# Support recovery on failure (which may involve engine reset)
|
|
CONFIG_NVGPU_RECOVERY := y
|
|
|
|
# Enable support for compression on pre-K6.2 kernels. K6.2+ changes the
|
|
# internals of dma-bufs which breaks some hacks we implemented to support
|
|
# compression meta-data tracking. For now, on K6.2+ kernels, just disable
|
|
# compression. This is a hack that should be fixed.
|
|
CONFIG_NVGPU_COMPRESSION := y
|
|
ifeq ($(VERSION),6)
|
|
ifneq ($(PATCHLEVEL),0)
|
|
ifneq ($(PATCHLEVEL),1)
|
|
CONFIG_NVGPU_COMPRESSION := n
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# Enable MIG Support
|
|
CONFIG_NVGPU_MIG := y
|
|
|
|
# Enable gv11b support
|
|
CONFIG_NVGPU_SUPPORT_GV11B := y
|
|
|
|
# Set config for OOT module build
|
|
ifeq ($(CONFIG_TEGRA_OOT_MODULE),m)
|
|
CONFIG_TEGRA_HOST1X_NEXT := m
|
|
CONFIG_TEGRA_NVMAP_NEXT := m
|
|
ifeq ($(CONFIG_TEGRA_VIRTUALIZATION),y)
|
|
CONFIG_TEGRA_GR_VIRTUALIZATION := y
|
|
ccflags-y += -DCONFIG_TEGRA_GR_VIRTUALIZATION
|
|
endif
|
|
endif
|
|
|
|
# Enable support for extraction of comptags for CDE.
|
|
ifeq ($(CONFIG_NVGPU_COMPRESSION),y)
|
|
CONFIG_NVGPU_SUPPORT_CDE := y
|
|
endif
|
|
|
|
# Support for remap
|
|
CONFIG_NVGPU_REMAP := y
|
|
|
|
# Enable gsp scheduler support
|
|
CONFIG_NVGPU_GSP_SCHEDULER := y
|
|
|
|
#Enable stress test for GSP
|
|
ifeq ($(CONFIG_NVGPU_GSP_SCHEDULER),y)
|
|
CONFIG_NVGPU_GSP_STRESS_TEST := y
|
|
endif
|
|
|
|
ifeq ($(CONFIG_COMMON_CLK),y)
|
|
ifeq ($(CONFIG_PM_DEVFREQ),y)
|
|
# Select this entry to enable gk20a scaling
|
|
CONFIG_GK20A_DEVFREQ := y
|
|
|
|
# Enable support to pass PM_QOS constraints to devfreq based scaling.
|
|
CONFIG_GK20A_PM_QOS := y
|
|
|
|
endif
|
|
endif
|
|
|
|
# Say Y here to allow nvgpu to track and keep statistics on
|
|
# the system memory used by the driver. This does recreate
|
|
# some of the kmem_leak tracking but this is also applicable
|
|
# to other OSes which do not have Linux' kmem_leak.
|
|
#CONFIG_NVGPU_TRACK_MEM_USAGE := n
|
|
|
|
# Enable the cycle stats debugging features.
|
|
CONFIG_NVGPU_CYCLESTATS := y
|
|
|
|
# Enable support for the NVGPU Context Switch Tracing. In this mode,
|
|
# FECS collects timestamps for contexts loaded on GR engine. This
|
|
# allows tracking context switches on GR engine, as well as
|
|
# identifying processes that submitted work.
|
|
CONFIG_NVGPU_FECS_TRACE := y
|
|
|
|
# Enable support in GK20A for the nvhost (host1x) dma engine hardware
|
|
# that includes things like hardware syncpts. This requires
|
|
# TEGRA_GRHOST
|
|
ifdef CONFIG_TEGRA_GRHOST
|
|
CONFIG_TEGRA_GK20A_NVHOST := y
|
|
endif
|
|
ifdef CONFIG_TEGRA_HOST1X_NEXT
|
|
CONFIG_TEGRA_GK20A_NVHOST := y
|
|
CONFIG_TEGRA_GK20A_NVHOST_HOST1X := y
|
|
endif
|
|
|
|
ifdef CONFIG_TEGRA_NVMAP_NEXT
|
|
CONFIG_NVGPU_NVMAP_NEXT := y
|
|
endif
|
|
|
|
CONFIG_NVGPU_ENABLE_MISC_EC := n
|
|
ifdef CONFIG_TEGRA_EPL
|
|
CONFIG_NVGPU_ENABLE_MISC_EC := y
|
|
endif
|
|
|
|
CONFIG_NVGPU_NVMEM_FUSE := n
|
|
|
|
ifneq ($(findstring 5.10,$(NV_BUILD_KERNEL_OPTIONS)),)
|
|
CONFIG_NVGPU_NVMAP_NEXT := y
|
|
CONFIG_NVGPU_NVMEM_FUSE := y
|
|
endif
|
|
|
|
ifeq ($(NV_BUILD_SYSTEM_TYPE),embedded-linux)
|
|
# On Embedded Linux , tegra_prod_defconfig is used as kernel defconfig
|
|
# to build the production kernel. Used the variable NV_BUILD_KERNEL_CONFIG_NAME to
|
|
# detect the production build, to disable the debug and
|
|
# profiling related stuff on nvgpu
|
|
#
|
|
# Production Defconfig is available on below mentioned path
|
|
# https://lmi-hub/source/xref/stage-main_automotive/kernel/kernel-5.10/arch/arm64/configs/tegra_prod_defconfig
|
|
#
|
|
# The makefile which sets NV_BUILD_KERNEL_CONFIG_NAME is present on
|
|
# https://git-master.nvidia.com/r/plugins/gitiles/tegra/build/make/+/refs/changes/74/2809974/8/umbrella/parts/Makefile.kernel
|
|
|
|
ifeq ($(NV_BUILD_KERNEL_CONFIG_NAME),tegra_prod_defconfig)
|
|
CONFIG_NVGPU_EMB_LINUX_PROD_BUILD := y
|
|
endif
|
|
endif
|
|
|
|
CONFIG_NVGPU_IVM_BUILD := y
|
|
|
|
# Set config for OOT module build
|
|
ifeq ($(CONFIG_TEGRA_OOT_MODULE),m)
|
|
CONFIG_NVGPU_NVMEM_FUSE := y
|
|
endif
|
|
|
|
# Enable support for GPUs on PCIe bus.
|
|
ifeq ($(CONFIG_PCI),y)
|
|
# Support for NVGPU DGPU
|
|
CONFIG_NVGPU_DGPU := y
|
|
endif
|
|
|
|
# Enable nvgpu debug facility to redirect debug spew to ftrace. This
|
|
# affects kernel memory use, so should not be enabled by default.
|
|
ifeq ($(CONFIG_TRACING),y)
|
|
#CONFIG_GK20A_TRACE_PRINTK := y
|
|
endif
|
|
|
|
# Use __alloc_fd() to allocate the fds above 1024 for vidmem dmabufs
|
|
# This exempts from counting against process fd limit.
|
|
ifeq ($(CONFIG_NVGPU_DGPU),y)
|
|
ifneq ($(findstring 5.10,$(NV_BUILD_KERNEL_OPTIONS)),)
|
|
CONFIG_NVGPU_IGNORE_PROCESS_FD_LIMIT := y
|
|
endif
|
|
endif
|
|
|
|
# Support Nvlink
|
|
ifeq ($(CONFIG_TEGRA_NVLINK),y)
|
|
CONFIG_NVGPU_NVLINK := y
|
|
endif
|
|
|
|
# Support NVGPU Virtualization
|
|
ifeq ($(CONFIG_TEGRA_GR_VIRTUALIZATION),y)
|
|
CONFIG_NVGPU_GR_VIRTUALIZATION := y
|
|
endif
|
|
|
|
CONFIG_NVGPU_VPR := y
|
|
|
|
# Support Tegra fuse
|
|
ifeq ($(CONFIG_TEGRA_KFUSE),y)
|
|
CONFIG_NVGPU_TEGRA_FUSE := y
|
|
endif
|
|
|
|
# GPU job synchronization (fences before and after submits) can use raw
|
|
# syncpoints if available and sync fds if chosen. Without syncpoints,
|
|
# nvgpu also provides semaphore-backed sync fds to userspace.
|
|
#
|
|
# Select which kernel-provided API is used for sync fds. Matching
|
|
# support is required for the userspace drivers too.
|
|
ifeq ($(CONFIG_SYNC),y)
|
|
CONFIG_NVGPU_SYNCFD_ANDROID := y
|
|
else ifeq ($(CONFIG_SYNC_FILE), y)
|
|
CONFIG_NVGPU_SYNCFD_STABLE := y
|
|
else
|
|
CONFIG_NVGPU_SYNCFD_NONE := y
|
|
endif
|
|
|
|
CONFIG_NVS_ROUND_ROBIN_SCHEDULER_DISABLE := y
|
|
ccflags-y += -DCONFIG_NVS_ROUND_ROBIN_SCHEDULER_DISABLE
|
|
|
|
# Set config for OOT module build
|
|
ifeq ($(CONFIG_TEGRA_OOT_MODULE),m)
|
|
CONFIG_GK20A_DEVFREQ := y
|
|
endif
|
|
|
|
# Set config FUSE_UPSTREAM for OOT for enabling some soc related APIs.
|
|
ifeq ($(CONFIG_TEGRA_OOT_MODULE),m)
|
|
CONFIG_TEGRA_FUSE_UPSTREAM := y
|
|
ccflags-y += -DCONFIG_TEGRA_FUSE_UPSTREAM
|
|
endif
|
|
|
|
ifeq ($(CONFIG_TEGRA_HSIERRRPTINJ),y)
|
|
ifeq ($(CONFIG_NVGPU_ENABLE_MISC_EC),y)
|
|
CONFIG_NVGPU_FSI_ERR_INJECTION := y
|
|
endif
|
|
endif
|
|
|
|
CONFIG_NVGPU_TSG_SHARING := y
|
|
|
|
CONFIG_NVGPU_EPL_INIT := n
|
|
|
|
ifeq ($(CONFIG_GK20A_PMU),y)
|
|
ccflags-y += -DCONFIG_GK20A_PMU
|
|
endif
|
|
ifeq ($(CONFIG_TEGRA_GK20A),y)
|
|
ccflags-y += -DCONFIG_TEGRA_GK20A
|
|
endif
|
|
ifeq ($(CONFIG_TEGRA_ACR),y)
|
|
ccflags-y += -DCONFIG_TEGRA_ACR
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_DEBUGGER),y)
|
|
ccflags-y += -DCONFIG_NVGPU_DEBUGGER
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_FALCON_DEBUG),y)
|
|
ccflags-y += -DCONFIG_NVGPU_FALCON_DEBUG
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_LS_PMU),y)
|
|
ccflags-y += -DCONFIG_NVGPU_LS_PMU
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_LOGGING),y)
|
|
ccflags-y += -DCONFIG_NVGPU_LOGGING
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_HAL_NON_FUSA),y)
|
|
ccflags-y += -DCONFIG_NVGPU_HAL_NON_FUSA
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_RECOVERY),y)
|
|
ccflags-y += -DCONFIG_NVGPU_RECOVERY
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_COMPRESSION),y)
|
|
ccflags-y += -DCONFIG_NVGPU_COMPRESSION
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_SUPPORT_GV11B),y)
|
|
ccflags-y += -DCONFIG_NVGPU_SUPPORT_GV11B
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_REMAP),y)
|
|
ccflags-y += -DCONFIG_NVGPU_REMAP
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_SUPPORT_CDE),y)
|
|
ccflags-y += -DCONFIG_NVGPU_SUPPORT_CDE
|
|
endif
|
|
ifeq ($(CONFIG_GK20A_DEVFREQ),y)
|
|
ccflags-y += -DCONFIG_GK20A_DEVFREQ
|
|
endif
|
|
ifeq ($(CONFIG_GK20A_PM_QOS),y)
|
|
ccflags-y += -DCONFIG_GK20A_PM_QOS
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_TRACK_MEM_USAGE),y)
|
|
ccflags-y += -DCONFIG_NVGPU_TRACK_MEM_USAGE
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_CYCLESTATS),y)
|
|
ccflags-y += -DCONFIG_NVGPU_CYCLESTATS
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_FECS_TRACE),y)
|
|
ccflags-y += -DCONFIG_NVGPU_FECS_TRACE
|
|
endif
|
|
ifeq ($(CONFIG_TEGRA_GK20A_NVHOST),y)
|
|
ccflags-y += -DCONFIG_TEGRA_GK20A_NVHOST
|
|
endif
|
|
ifeq ($(CONFIG_TEGRA_GK20A_NVHOST_HOST1X),y)
|
|
ccflags-y += -DCONFIG_TEGRA_GK20A_NVHOST_HOST1X
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_NVMEM_FUSE),y)
|
|
ccflags-y += -DCONFIG_NVGPU_NVMEM_FUSE
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_NVMAP_NEXT),y)
|
|
ccflags-y += -DCONFIG_NVGPU_NVMAP_NEXT
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_DGPU),y)
|
|
ccflags-y += -DCONFIG_NVGPU_DGPU
|
|
endif
|
|
ifeq ($(CONFIG_GK20A_TRACE_PRINTK),y)
|
|
ccflags-y += -DCONFIG_GK20A_TRACE_PRINTK
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_USE_TEGRA_ALLOC_FD),y)
|
|
ccflags-y += -DCONFIG_NVGPU_USE_TEGRA_ALLOC_FD
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_NVLINK),y)
|
|
ccflags-y += -DCONFIG_NVGPU_NVLINK
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_GR_VIRTUALIZATION),y)
|
|
ccflags-y += -DCONFIG_NVGPU_GR_VIRTUALIZATION
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_VPR),y)
|
|
ccflags-y += -DCONFIG_NVGPU_VPR
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_TEGRA_FUSE),y)
|
|
ccflags-y += -DCONFIG_NVGPU_TEGRA_FUSE
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_SYNCFD_ANDROID),y)
|
|
ccflags-y += -DCONFIG_NVGPU_SYNCFD_ANDROID
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_SYNCFD_STABLE),y)
|
|
ccflags-y += -DCONFIG_NVGPU_SYNCFD_STABLE
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_SYNCFD_NONE),y)
|
|
ccflags-y += -DCONFIG_NVGPU_SYNCFD_NONE
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_GSP_SCHEDULER),y)
|
|
ccflags-y += -DCONFIG_NVGPU_GSP_SCHEDULER
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_GSP_STRESS_TEST),y)
|
|
ccflags-y += -DCONFIG_NVGPU_GSP_STRESS_TEST
|
|
endif
|
|
ifeq ($(CONFIG_NVS_PRESENT),y)
|
|
ccflags-y += -DCONFIG_NVS_PRESENT
|
|
endif
|
|
ifeq ($(CONFIG_KMD_SCHEDULING_WORKER_THREAD),y)
|
|
ccflags-y += -DCONFIG_KMD_SCHEDULING_WORKER_THREAD
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_IVM_BUILD),y)
|
|
ccflags-y += -DCONFIG_NVGPU_IVM_BUILD
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_ENABLE_MISC_EC),y)
|
|
ccflags-y += -DCONFIG_NVGPU_ENABLE_MISC_EC
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_FSI_ERR_INJECTION),y)
|
|
ccflags-y += -DCONFIG_NVGPU_FSI_ERR_INJECTION
|
|
endif
|
|
ifeq ($(CONFIG_NVGPU_TSG_SHARING),y)
|
|
ccflags-y += -DCONFIG_NVGPU_TSG_SHARING
|
|
endif
|