On Fri, Nov 24, 2023 at 11:15:12AM +0100, Marco Pagani wrote:
On 2023-11-24 09:49, Maxime Ripard wrote:
Hi,
On Thu, Nov 23, 2023 at 11:01:46AM +0100, Marco Pagani wrote:
+static int drm_gem_shmem_test_init(struct kunit *test) +{
- struct device *dev;
- struct fake_dev {
struct drm_device drm_dev;
- } *fdev;
[...]
- /*
* The DRM core will automatically initialize the GEM core and create
* a DRM Memory Manager object which provides an address space pool
* for GEM objects allocation.
*/
- fdev = drm_kunit_helper_alloc_drm_device(test, dev, struct fake_dev,
drm_dev, DRIVER_GEM);
- KUNIT_ASSERT_NOT_ERR_OR_NULL(test, fdev);
Sorry I missed it earlier, but you don't need the intermediate structure if you use
struct drm_device *drm;
drm = __drm_kunit_helper_alloc_drm_device(test, dev, sizeof(*drm), 0, DRIVER_GEM); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, drm);
I prefer to use drm_kunit_helper_alloc_drm_device() with the intermediate structure. It makes the code clearer, in my opinion. Initially, when developing the suite, I was using __drm_kunit_helper_alloc_drm_device() as most test suites do, but I feel the list of arguments including "sizeof(*drm), 0," is less straightforward to understand.
Then we can create an init helper, and you can allocate the drm_device through drmm_kzalloc, but I'd like tests to use consistent constructs.
This can of course be made as a later patch: you use the same construct the other tests do here, and later we work on the init function and convert all tests to use it.
Maxime
linaro-mm-sig@lists.linaro.org