From 2cf72837ec83f8be619a0df240c30103d0dafafc Mon Sep 17 00:00:00 2001 From: Philip Elcan Date: Wed, 15 Jan 2020 15:03:43 -0500 Subject: [PATCH] gpu: nvgpu: unit: add nvgpu_gk20a test Add test for common.nvgpu.gk20a unit. JIRA NVGPU-4818 Change-Id: Iae23d39675789fad141411162774c05f976c9831 Signed-off-by: Philip Elcan Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2279562 Reviewed-by: mobile promotions Tested-by: mobile promotions --- Makefile.umbrella.tmk | 1 + userspace/Makefile.sources | 1 + userspace/SWUTS.h | 1 + userspace/SWUTS.sources | 1 + .../units/interface/nvgpu_gk20a/Makefile | 26 +++++++++ .../nvgpu_gk20a/Makefile.interface.tmk | 23 ++++++++ .../units/interface/nvgpu_gk20a/Makefile.tmk | 24 ++++++++ .../units/interface/nvgpu_gk20a/nvgpu_gk20a.c | 46 +++++++++++++++ .../units/interface/nvgpu_gk20a/nvgpu_gk20a.h | 57 +++++++++++++++++++ 9 files changed, 180 insertions(+) create mode 100644 userspace/units/interface/nvgpu_gk20a/Makefile create mode 100644 userspace/units/interface/nvgpu_gk20a/Makefile.interface.tmk create mode 100644 userspace/units/interface/nvgpu_gk20a/Makefile.tmk create mode 100644 userspace/units/interface/nvgpu_gk20a/nvgpu_gk20a.c create mode 100644 userspace/units/interface/nvgpu_gk20a/nvgpu_gk20a.h diff --git a/Makefile.umbrella.tmk b/Makefile.umbrella.tmk index bd3d843fa..5ff035e76 100644 --- a/Makefile.umbrella.tmk +++ b/Makefile.umbrella.tmk @@ -50,6 +50,7 @@ NV_REPOSITORY_COMPONENTS += userspace/units/posix/rwsem NV_REPOSITORY_COMPONENTS += userspace/units/posix/queue NV_REPOSITORY_COMPONENTS += userspace/units/interface/bsearch NV_REPOSITORY_COMPONENTS += userspace/units/interface/lock +NV_REPOSITORY_COMPONENTS += userspace/units/interface/nvgpu_gk20a NV_REPOSITORY_COMPONENTS += userspace/units/interface/atomic NV_REPOSITORY_COMPONENTS += userspace/units/interface/rbtree NV_REPOSITORY_COMPONENTS += userspace/units/interface/static_analysis diff --git a/userspace/Makefile.sources b/userspace/Makefile.sources index bf20b7693..f97b1e664 100644 --- a/userspace/Makefile.sources +++ b/userspace/Makefile.sources @@ -63,6 +63,7 @@ UNITS := \ $(UNIT_SRC)/init \ $(UNIT_SRC)/interface/bsearch \ $(UNIT_SRC)/interface/lock \ + $(UNIT_SRC)/interface/nvgpu_gk20a \ $(UNIT_SRC)/interface/atomic \ $(UNIT_SRC)/interface/rbtree \ $(UNIT_SRC)/interface/static_analysis \ diff --git a/userspace/SWUTS.h b/userspace/SWUTS.h index ba9240dc4..818307c7c 100644 --- a/userspace/SWUTS.h +++ b/userspace/SWUTS.h @@ -33,6 +33,7 @@ * - @ref SWUTS-enabled * - @ref SWUTS-interface-bsearch * - @ref SWUTS-interface-lock + * - @ref SWUTS-interface-nvgpu-gk20a * - @ref SWUTS-interface-rbtree * - @ref SWUTS-interface-static_analysis * - @ref SWUTS-interface-string diff --git a/userspace/SWUTS.sources b/userspace/SWUTS.sources index 4825c346a..4e17993e4 100644 --- a/userspace/SWUTS.sources +++ b/userspace/SWUTS.sources @@ -4,6 +4,7 @@ INPUT += ../../../userspace/units/cg/nvgpu-cg.h INPUT += ../../../userspace/units/enabled/nvgpu-enabled.h INPUT += ../../../userspace/units/interface/bsearch/bsearch.h INPUT += ../../../userspace/units/interface/lock/lock.h +INPUT += ../../../userspace/units/interface/nvgpu_gk20a/nvgpu_gk20a.h INPUT += ../../../userspace/units/interface/rbtree/rbtree.h INPUT += ../../../userspace/units/interface/static_analysis/static_analysis.h INPUT += ../../../userspace/units/interface/string/nvgpu-string.h diff --git a/userspace/units/interface/nvgpu_gk20a/Makefile b/userspace/units/interface/nvgpu_gk20a/Makefile new file mode 100644 index 000000000..b382aae72 --- /dev/null +++ b/userspace/units/interface/nvgpu_gk20a/Makefile @@ -0,0 +1,26 @@ +# Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +.SUFFIXES: + +OBJS = nvgpu_gk20a.o +MODULE = nvgpu_gk20a + +include ../../Makefile.units diff --git a/userspace/units/interface/nvgpu_gk20a/Makefile.interface.tmk b/userspace/units/interface/nvgpu_gk20a/Makefile.interface.tmk new file mode 100644 index 000000000..8f1631032 --- /dev/null +++ b/userspace/units/interface/nvgpu_gk20a/Makefile.interface.tmk @@ -0,0 +1,23 @@ +################################### tell Emacs this is a -*- makefile-gmake -*- +# +# Copyright (c) 2020, NVIDIA CORPORATION. All Rights Reserved. +# +# NVIDIA CORPORATION and its licensors retain all intellectual property +# and proprietary rights in and to this software, related documentation +# and any modifications thereto. Any use, reproduction, disclosure or +# distribution of this software and related documentation without an express +# license agreement from NVIDIA CORPORATION is strictly prohibited. +# +# tmake for SW Mobile component makefile +# +############################################################################### + +NVGPU_UNIT_NAME=nvgpu_gk20a + +include $(NV_COMPONENT_DIR)/../../Makefile.units.common.interface.tmk + +# Local Variables: +# indent-tabs-mode: t +# tab-width: 8 +# End: +# vi: set tabstop=8 noexpandtab: diff --git a/userspace/units/interface/nvgpu_gk20a/Makefile.tmk b/userspace/units/interface/nvgpu_gk20a/Makefile.tmk new file mode 100644 index 000000000..e94afc309 --- /dev/null +++ b/userspace/units/interface/nvgpu_gk20a/Makefile.tmk @@ -0,0 +1,24 @@ +################################### tell Emacs this is a -*- makefile-gmake -*- +# +# Copyright (c) 2020, NVIDIA CORPORATION. All Rights Reserved. +# +# NVIDIA CORPORATION and its licensors retain all intellectual property +# and proprietary rights in and to this software, related documentation +# and any modifications thereto. Any use, reproduction, disclosure or +# distribution of this software and related documentation without an express +# license agreement from NVIDIA CORPORATION is strictly prohibited. +# +# tmake for SW Mobile component makefile +# +############################################################################### + +NVGPU_UNIT_NAME=nvgpu_gk20a +NVGPU_UNIT_SRCS=nvgpu_gk20a.c + +include $(NV_COMPONENT_DIR)/../../Makefile.units.common.tmk + +# Local Variables: +# indent-tabs-mode: t +# tab-width: 8 +# End: +# vi: set tabstop=8 noexpandtab: diff --git a/userspace/units/interface/nvgpu_gk20a/nvgpu_gk20a.c b/userspace/units/interface/nvgpu_gk20a/nvgpu_gk20a.c new file mode 100644 index 000000000..ee314f160 --- /dev/null +++ b/userspace/units/interface/nvgpu_gk20a/nvgpu_gk20a.c @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include + +#include + +#include "nvgpu_gk20a.h" + +int test_get_poll_timeout(struct unit_module *m, struct gk20a *g, void *args) +{ + const u32 default_timeout = 123456; + + g->poll_timeout_default = default_timeout; + unit_assert(nvgpu_get_poll_timeout(g) == default_timeout, + return UNIT_FAIL); + + return UNIT_SUCCESS; +} + +struct unit_module_test nvgpu_gk20a_tests[] = { + UNIT_TEST(get_poll_timeout, test_get_poll_timeout, NULL, 0), +}; + +UNIT_MODULE(nvgpu_gk20a, nvgpu_gk20a_tests, UNIT_PRIO_NVGPU_TEST); diff --git a/userspace/units/interface/nvgpu_gk20a/nvgpu_gk20a.h b/userspace/units/interface/nvgpu_gk20a/nvgpu_gk20a.h new file mode 100644 index 000000000..eac535275 --- /dev/null +++ b/userspace/units/interface/nvgpu_gk20a/nvgpu_gk20a.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef UNIT_NVGPU_GK20A_H +#define UNIT_NVGPU_GK20A_H + +struct gk20a; +struct unit_module; + +/** @addtogroup SWUTS-interface-nvgpu-gk20a + * @{ + * + * Software Unit Test Specification for common.nvgpu.gk20a + */ + +/** + * Test specification for: test_get_poll_timeout + * + * Description: Verify functionality nvgpu_get_poll_timeout(). + * + * Test Type: Feature + * + * Targets: nvgpu_get_poll_timeout, nvgpu_is_timeouts_enabled + * + * Input: None + * + * Steps: + * - Call nvgpu_get_poll_timeout and verify the correct value is returned. + * + * Output: Returns PASS if expected result is met, FAIL otherwise. + */ +int test_get_poll_timeout(struct unit_module *m, struct gk20a *g, void *args); + +/** + * @} + */ + +#endif /* UNIT_NVGPU_GK20A_H */