[v2,05/11] drm/tests: helpers: Create a helper to allocate a locking ctx
Commit Message
As we get more and more tests, the locking context initialisation
creates more and more boilerplate, both at creation and destruction.
Let's create a helper that will allocate, initialise a context, and
register kunit actions to clean up once the test is done.
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/tests/drm_kunit_helpers.c | 41 +++++++++++++++++++++++++++++++
include/drm/drm_kunit_helpers.h | 2 ++
2 files changed, 43 insertions(+)
Comments
Hi Maxime,
kernel test robot noticed the following build warnings:
[auto build test WARNING on c58c49dd89324b18a812762a2bfa5a0458e4f252]
url: https://github.com/intel-lab-lkp/linux/commits/Maxime-Ripard/drm-tests-helpers-Switch-to-kunit-actions/20230720-191901
base: c58c49dd89324b18a812762a2bfa5a0458e4f252
patch link: https://lore.kernel.org/r/20230720-kms-kunit-actions-rework-v2-5-175017bd56ab%40kernel.org
patch subject: [PATCH v2 05/11] drm/tests: helpers: Create a helper to allocate a locking ctx
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20230720/202307202244.26VyeZKj-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20230720/202307202244.26VyeZKj-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202307202244.26VyeZKj-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/gpu/drm/tests/drm_kunit_helpers.c:145: warning: expecting prototype for drm_kunit_helper_context_alloc(). Prototype was for drm_kunit_helper_acquire_ctx_alloc() instead
vim +145 drivers/gpu/drm/tests/drm_kunit_helpers.c
130
131 /**
132 * drm_kunit_helper_context_alloc - Allocates an acquire context
133 * @test: The test context object
134 *
135 * Allocates and initializes a modeset acquire context.
136 *
137 * The context is tied to the kunit test context, so we must not call
138 * drm_modeset_acquire_fini() on it, it will be done so automatically.
139 *
140 * Returns:
141 * An ERR_PTR on error, a pointer to the newly allocated context otherwise
142 */
143 struct drm_modeset_acquire_ctx *
144 drm_kunit_helper_acquire_ctx_alloc(struct kunit *test)
> 145 {
146 struct drm_modeset_acquire_ctx *ctx;
147 int ret;
148
149 ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
150 KUNIT_ASSERT_NOT_NULL(test, ctx);
151
152 drm_modeset_acquire_init(ctx, 0);
153
154 ret = kunit_add_action_or_reset(test,
155 action_drm_release_context,
156 ctx);
157 if (ret)
158 return ERR_PTR(ret);
159
160 return ctx;
161 }
162 EXPORT_SYMBOL_GPL(drm_kunit_helper_acquire_ctx_alloc);
163
@@ -120,5 +120,46 @@ __drm_kunit_helper_alloc_drm_device_with_driver(struct kunit *test,
}
EXPORT_SYMBOL_GPL(__drm_kunit_helper_alloc_drm_device_with_driver);
+static void action_drm_release_context(void *ptr)
+{
+ struct drm_modeset_acquire_ctx *ctx = ptr;
+
+ drm_modeset_drop_locks(ctx);
+ drm_modeset_acquire_fini(ctx);
+}
+
+/**
+ * drm_kunit_helper_context_alloc - Allocates an acquire context
+ * @test: The test context object
+ *
+ * Allocates and initializes a modeset acquire context.
+ *
+ * The context is tied to the kunit test context, so we must not call
+ * drm_modeset_acquire_fini() on it, it will be done so automatically.
+ *
+ * Returns:
+ * An ERR_PTR on error, a pointer to the newly allocated context otherwise
+ */
+struct drm_modeset_acquire_ctx *
+drm_kunit_helper_acquire_ctx_alloc(struct kunit *test)
+{
+ struct drm_modeset_acquire_ctx *ctx;
+ int ret;
+
+ ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, ctx);
+
+ drm_modeset_acquire_init(ctx, 0);
+
+ ret = kunit_add_action_or_reset(test,
+ action_drm_release_context,
+ ctx);
+ if (ret)
+ return ERR_PTR(ret);
+
+ return ctx;
+}
+EXPORT_SYMBOL_GPL(drm_kunit_helper_acquire_ctx_alloc);
+
MODULE_AUTHOR("Maxime Ripard <maxime@cerno.tech>");
MODULE_LICENSE("GPL");
@@ -87,5 +87,7 @@ __drm_kunit_helper_alloc_drm_device(struct kunit *test,
sizeof(_type), \
offsetof(_type, _member), \
_feat))
+struct drm_modeset_acquire_ctx *
+drm_kunit_helper_acquire_ctx_alloc(struct kunit *test);
#endif // DRM_KUNIT_HELPERS_H_