Files
linux-nvgpu/drivers/gpu/nvgpu/Makefile.linux.configs
Jon Hunter 152d37e163 gpu: nvgpu: Define CONFIG_TEGRA_VIRTUALIZATION ccflag
When building NVGPU with virtualization enabled, we need to ensure that
the ccflag CONFIG_TEGRA_VIRTUALIZATION is defined. The Tegra HV driver
is only compiled when CONFIG_TEGRA_VIRTUALIZATION is defined. When NVGPU
is compiled without defining CONFIG_TEGRA_VIRTUALIZATION, then function
stubs in the header file "soc/tegra/virt/hv-ivc.h" will be used and these
stubs will return an error when called causing virtualization to fail.

Bug 4159372
Bug 4170085

Change-Id: Iab3cd47e25e086e31f8cc3337c0a732645ed4a7a
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2930315
(cherry picked from commit 6aa1600cb5b4b6ea783188c6d9e4cc56eedc17ea)
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2931658
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
2023-07-06 04:12:03 -07:00

352 lines
9.4 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
# Support for compression
CONFIG_NVGPU_COMPRESSION := y
# 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
ccflags-y += -DCONFIG_TEGRA_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 pci probe of IGPU
CONFIG_NVGPU_PCI_IGPU := 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_NVGPU_PCI_IGPU),y)
ccflags-y += -DCONFIG_NVGPU_PCI_IGPU
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