From 4dbbd8c4887481d3b94e69b4e7570550499770bd Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Wed, 22 May 2019 12:37:50 -0700 Subject: [PATCH] gpu: nvgpu: userspace: disable all non-safe features Add the ability to override an apparently non-safe profile build with the safe profile. This let's us force the safety profile build in the userspace build (make under userspace/) and the tmake build used for unit testing. Doing this keeps the tmake build closer to the userspace which helps prevent regressions in the userspace build as it has no direct GVS coverage. Change-Id: I00c000086aabf6a70b74cf5e052c80520653546a Signed-off-by: Alex Waterman Reviewed-on: https://git-master.nvidia.com/r/2123833 GVS: Gerrit_Virtual_Submit Reviewed-by: Thomas Fleury Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/Makefile.shared.configs | 38 +++++++++++++++++++++-- drivers/gpu/nvgpu/Makefile.tmk | 17 +++------- userspace/Makefile | 4 ++- userspace/Makefile.tmk | 19 ++---------- userspace/units/Makefile.units.common.tmk | 16 +--------- 5 files changed, 48 insertions(+), 46 deletions(-) diff --git a/drivers/gpu/nvgpu/Makefile.shared.configs b/drivers/gpu/nvgpu/Makefile.shared.configs index e484020a0..943bbd1b6 100644 --- a/drivers/gpu/nvgpu/Makefile.shared.configs +++ b/drivers/gpu/nvgpu/Makefile.shared.configs @@ -25,9 +25,40 @@ # variable NVGPU_COMMON_CFLAGS that needs to be used by the parent Makefile # to update corresponding cflags variable. +# Default is the regular profile. That can be overridden if necessary. by +# setting the NVGPU_FORCE_SAFETY_PROFILE. This is a useful hack while we +# wait for the userspace tmake build to make its way into a proper safety +# profile build. +profile := default + +# Decide whether to use the safety profile or the regular profile. +ifeq ($(NV_BUILD_CONFIGURATION_IS_SAFETY),1) +profile := safety +endif +ifeq ($(NVGPU_FORCE_SAFETY_PROFILE),1) +profile := safety +endif + +NVGPU_COMMON_CFLAGS := + +# +# Flags always enabled regardless of build profile. +# + +NVGPU_COMMON_CFLAGS += \ + -DCONFIG_TEGRA_GK20A_NVHOST \ + -DCONFIG_GK20A_CYCLE_STATS \ + -DCONFIG_TEGRA_T19X_GRHOST \ + -DCONFIG_NVGPU_SUPPORT_TURING \ + -DCONFIG_TEGRA_GK20A_PMU=1 \ + -DCONFIG_TEGRA_ACR=1 \ + -DCONFIG_TEGRA_GR_VIRTUALIZATION \ + -DCONFIG_GK20A_VIDMEM=1 \ + -DCONFIG_PCI_MSI + # Enable debugger APIs for safety build until devctl whitelisting is done NVGPU_DEBUGGER := 1 -NVGPU_COMMON_CFLAGS := -DNVGPU_DEBUGGER +NVGPU_COMMON_CFLAGS += -DNVGPU_DEBUGGER # Enable cyclestats APIs for safety build until complete debugger support is enabled NVGPU_CYCLESTATS_SUPPORT := 1 @@ -53,7 +84,10 @@ NVGPU_COMMON_CFLAGS += -DNVGPU_ENGINE NVGPU_FEATURE_CHANNEL_TSG_SCHEDULING := 1 NVGPU_COMMON_CFLAGS += -DNVGPU_FEATURE_CHANNEL_TSG_SCHEDULING -ifeq ($(NV_BUILD_CONFIGURATION_IS_SAFETY),0) +# +# Flags enabled for only the regular build profile. +# +ifneq ($(profile),safety) NVGPU_FECS_TRACE_SUPPORT := 1 NVGPU_COMMON_CFLAGS += -DCONFIG_GK20A_CTXSW_TRACE diff --git a/drivers/gpu/nvgpu/Makefile.tmk b/drivers/gpu/nvgpu/Makefile.tmk index eae2fd485..1abdbfa90 100644 --- a/drivers/gpu/nvgpu/Makefile.tmk +++ b/drivers/gpu/nvgpu/Makefile.tmk @@ -35,7 +35,7 @@ ARCH_PY := $(NV_SOURCE)/core-private/tools/arch/arch.py NVGPU_NEXT_SOURCE := \ $(NV_COMPONENT_DIR)/../../../../nvgpu-next/drivers/gpu/nvgpu -NVGPU_POSIX := -D__NVGPU_POSIX__ +NVGPU_POSIX := 1 NVGPU_ARCH := $(NV_COMPONENT_DIR)/../../../arch NVGPU_ARCH_YAML := $(NVGPU_ARCH)/*.yaml @@ -51,18 +51,11 @@ NV_COMPONENT_INCLUDES := \ ifneq ($(NV_BUILD_CONFIGURATION_OS_IS_QNX),1) NV_COMPONENT_SYSTEM_SHARED_LIBRARIES += pthread endif -NV_COMPONENT_CFLAGS += $(NVGPU_POSIX) - -NV_COMPONENT_CFLAGS += \ - -DCONFIG_TEGRA_GK20A_NVHOST \ - -DCONFIG_TEGRA_T19X_GRHOST \ - -DCONFIG_NVGPU_SUPPORT_TURING \ - -DCONFIG_TEGRA_GK20A_PMU=1 \ - -DCONFIG_TEGRA_ACR=1 \ - -DCONFIG_TEGRA_GR_VIRTUALIZATION \ - -DCONFIG_GK20A_VIDMEM=1 \ - -DCONFIG_PCI_MSI +NV_COMPONENT_CFLAGS += \ + -D__NVGPU_POSIX__ \ + -DCONFIG_NVGPU_SUPPORT_TURING +NVGPU_FORCE_SAFETY_PROFILE := 1 -include $(NV_COMPONENT_DIR)/Makefile.shared.configs NV_COMPONENT_CFLAGS += $(NVGPU_COMMON_CFLAGS) diff --git a/userspace/Makefile b/userspace/Makefile index 4b6fd964d..63e97f913 100644 --- a/userspace/Makefile +++ b/userspace/Makefile @@ -60,8 +60,10 @@ NVGPU_FAULT_INJECTION_ENABLEMENT=1 # Linux configs. We want these so that we can mirror builds from the actual # Linux kernel. -include Makefile.configs +# include Makefile.configs +CONFIGS := -D__NVGPU_POSIX__ +NVGPU_FORCE_SAFETY_PROFILE := 1 include $(NVGPU_SRC)/Makefile.shared.configs CONFIGS+=$(NVGPU_COMMON_CFLAGS) diff --git a/userspace/Makefile.tmk b/userspace/Makefile.tmk index 5818573c1..4c2141ad1 100644 --- a/userspace/Makefile.tmk +++ b/userspace/Makefile.tmk @@ -107,24 +107,11 @@ NV_COMPONENT_SYSTEM_SHARED_LIBRARIES += pthread NV_COMPONENT_SYSTEM_SHARED_LIBRARIES += dl endif -NV_COMPONENT_CFLAGS += -D__NVGPU_POSIX__ - -NV_COMPONENT_CFLAGS += \ - -DCONFIG_TEGRA_19x_GPU \ - -DCONFIG_TEGRA_GK20A_NVHOST \ - -DCONFIG_TEGRA_T19X_GRHOST \ - -DCONFIG_NVGPU_SUPPORT_TURING \ - -DCONFIG_TEGRA_GK20A_PMU=1 \ - -DCONFIG_TEGRA_ACR=1 \ - -DCONFIG_TEGRA_GR_VIRTUALIZATION \ - -DNVCPU_IS_AARCH64=1 \ - -DCONFIG_TEGRA_IOVMM=0 \ - -DCONFIG_ARCH_TEGRA_18x_SOC=1 \ - -DCONFIG_GK20A_VIDMEM=1 \ - -DCONFIG_PCI_MSI \ - -DCONFIG_SUPPORT_PMU_PSTATE \ +NV_COMPONENT_CFLAGS += \ + -D__NVGPU_POSIX__ \ -DNVGPU_UNITTEST_FAULT_INJECTION_ENABLEMENT +NVGPU_FORCE_SAFETY_PROFILE := 1 -include ../drivers/gpu/nvgpu/Makefile.shared.configs NV_COMPONENT_CFLAGS += $(NVGPU_COMMON_CFLAGS) diff --git a/userspace/units/Makefile.units.common.tmk b/userspace/units/Makefile.units.common.tmk index b8e52bcc8..bb945387f 100644 --- a/userspace/units/Makefile.units.common.tmk +++ b/userspace/units/Makefile.units.common.tmk @@ -53,21 +53,7 @@ else NV_COMPONENT_CFLAGS += -D__NVGPU_POSIX__ endif -NV_COMPONENT_CFLAGS += \ - -DCONFIG_TEGRA_19x_GPU \ - -DCONFIG_TEGRA_GK20A_NVHOST \ - -DCONFIG_TEGRA_T19X_GRHOST \ - -DCONFIG_NVGPU_SUPPORT_TURING \ - -DCONFIG_TEGRA_GK20A_PMU=1 \ - -DCONFIG_TEGRA_ACR=1 \ - -DCONFIG_TEGRA_GR_VIRTUALIZATION \ - -DNVCPU_IS_AARCH64=1 \ - -DCONFIG_TEGRA_IOVMM=0 \ - -DCONFIG_ARCH_TEGRA_18x_SOC=1 \ - -DCONFIG_GK20A_VIDMEM=1 \ - -DCONFIG_PCI_MSI \ - -DCONFIG_SUPPORT_PMU_PSTATE - +NVGPU_FORCE_SAFETY_PROFILE := 1 -include $(NV_SOURCE)/kernel/nvgpu/drivers/gpu/nvgpu/Makefile.shared.configs NV_COMPONENT_CFLAGS += $(NVGPU_COMMON_CFLAGS)