[Intel-xe] [PATCH v2 2/7] drm/xe: Move test infra out of xe_pci.[ch]

Matt Roper matthew.d.roper at intel.com
Mon Apr 3 22:42:39 UTC 2023


On Sat, Apr 01, 2023 at 01:51:46AM -0700, Lucas De Marchi wrote:
> Move code out of xe_pci.[ch] into tests/*.[ch], like is done in other
> similar compilation units. Even if this is not part of "tests for
> xe_pci.c", they are functions exported and required by other tests. It's
> better not to clutter the module headers and sources with them.
> 
> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>

Reviewed-by: Matt Roper <matthew.d.roper at intel.com>

> ---
>  drivers/gpu/drm/xe/tests/xe_bo.c       |  2 +
>  drivers/gpu/drm/xe/tests/xe_dma_buf.c  |  1 +
>  drivers/gpu/drm/xe/tests/xe_migrate.c  |  1 +
>  drivers/gpu/drm/xe/tests/xe_pci.c      | 62 ++++++++++++++++++++++++++
>  drivers/gpu/drm/xe/tests/xe_pci_test.h | 15 +++++++
>  drivers/gpu/drm/xe/xe_pci.c            | 52 +--------------------
>  drivers/gpu/drm/xe/xe_pci.h            |  9 ----
>  7 files changed, 82 insertions(+), 60 deletions(-)
>  create mode 100644 drivers/gpu/drm/xe/tests/xe_pci.c
>  create mode 100644 drivers/gpu/drm/xe/tests/xe_pci_test.h
> 
> diff --git a/drivers/gpu/drm/xe/tests/xe_bo.c b/drivers/gpu/drm/xe/tests/xe_bo.c
> index 3c60cbdf516c..aa433a7b59b7 100644
> --- a/drivers/gpu/drm/xe/tests/xe_bo.c
> +++ b/drivers/gpu/drm/xe/tests/xe_bo.c
> @@ -6,6 +6,8 @@
>  #include <kunit/test.h>
>  
>  #include "tests/xe_bo_test.h"
> +#include "tests/xe_pci_test.h"
> +#include "tests/xe_test.h"
>  
>  #include "xe_bo_evict.h"
>  #include "xe_pci.h"
> diff --git a/drivers/gpu/drm/xe/tests/xe_dma_buf.c b/drivers/gpu/drm/xe/tests/xe_dma_buf.c
> index e66a8361ae1f..cf9dddf1a8d7 100644
> --- a/drivers/gpu/drm/xe/tests/xe_dma_buf.c
> +++ b/drivers/gpu/drm/xe/tests/xe_dma_buf.c
> @@ -6,6 +6,7 @@
>  #include <kunit/test.h>
>  
>  #include "tests/xe_dma_buf_test.h"
> +#include "tests/xe_pci_test.h"
>  
>  #include "xe_pci.h"
>  
> diff --git a/drivers/gpu/drm/xe/tests/xe_migrate.c b/drivers/gpu/drm/xe/tests/xe_migrate.c
> index 17829f878757..d410305c9b59 100644
> --- a/drivers/gpu/drm/xe/tests/xe_migrate.c
> +++ b/drivers/gpu/drm/xe/tests/xe_migrate.c
> @@ -6,6 +6,7 @@
>  #include <kunit/test.h>
>  
>  #include "tests/xe_migrate_test.h"
> +#include "tests/xe_pci_test.h"
>  
>  #include "xe_pci.h"
>  
> diff --git a/drivers/gpu/drm/xe/tests/xe_pci.c b/drivers/gpu/drm/xe/tests/xe_pci.c
> new file mode 100644
> index 000000000000..643bddb35214
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/tests/xe_pci.c
> @@ -0,0 +1,62 @@
> +// SPDX-License-Identifier: GPL-2.0 AND MIT
> +/*
> + * Copyright © 2023 Intel Corporation
> + */
> +
> +#include "tests/xe_pci_test.h"
> +
> +#include "tests/xe_test.h"
> +
> +#include <kunit/test.h>
> +
> +struct kunit_test_data {
> +	int ndevs;
> +	xe_device_fn xe_fn;
> +};
> +
> +static int dev_to_xe_device_fn(struct device *dev, void *__data)
> +
> +{
> +	struct drm_device *drm = dev_get_drvdata(dev);
> +	struct kunit_test_data *data = __data;
> +	int ret = 0;
> +	int idx;
> +
> +	data->ndevs++;
> +
> +	if (drm_dev_enter(drm, &idx))
> +		ret = data->xe_fn(to_xe_device(dev_get_drvdata(dev)));
> +	drm_dev_exit(idx);
> +
> +	return ret;
> +}
> +
> +/**
> + * xe_call_for_each_device - Iterate over all devices this driver binds to
> + * @xe_fn: Function to call for each device.
> + *
> + * This function iterated over all devices this driver binds to, and calls
> + * @xe_fn: for each one of them. If the called function returns anything else
> + * than 0, iteration is stopped and the return value is returned by this
> + * function. Across each function call, drm_dev_enter() / drm_dev_exit() is
> + * called for the corresponding drm device.
> + *
> + * Return: Zero or the error code of a call to @xe_fn returning an error
> + * code.
> + */
> +int xe_call_for_each_device(xe_device_fn xe_fn)
> +{
> +	int ret;
> +	struct kunit_test_data data = {
> +	    .xe_fn = xe_fn,
> +	    .ndevs = 0,
> +	};
> +
> +	ret = driver_for_each_device(&xe_pci_driver.driver, NULL,
> +				     &data, dev_to_xe_device_fn);
> +
> +	if (!data.ndevs)
> +		kunit_skip(current->kunit_test, "test runs only on hardware\n");
> +
> +	return ret;
> +}
> diff --git a/drivers/gpu/drm/xe/tests/xe_pci_test.h b/drivers/gpu/drm/xe/tests/xe_pci_test.h
> new file mode 100644
> index 000000000000..de65d8c9ccb5
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/tests/xe_pci_test.h
> @@ -0,0 +1,15 @@
> +/* SPDX-License-Identifier: GPL-2.0 AND MIT */
> +/*
> + * Copyright © 2023 Intel Corporation
> + */
> +
> +#ifndef _XE_PCI_TEST_H_
> +#define _XE_PCI_TEST_H_
> +
> +struct xe_device;
> +
> +typedef int (*xe_device_fn)(struct xe_device *);
> +
> +int xe_call_for_each_device(xe_device_fn xe_fn);
> +
> +#endif
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index b990985b5771..302f7f588da1 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -635,55 +635,5 @@ void xe_unregister_pci_driver(void)
>  }
>  
>  #if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)
> -struct kunit_test_data {
> -	int ndevs;
> -	xe_device_fn xe_fn;
> -};
> -
> -static int dev_to_xe_device_fn(struct device *dev, void *__data)
> -
> -{
> -	struct drm_device *drm = dev_get_drvdata(dev);
> -	struct kunit_test_data *data = __data;
> -	int ret = 0;
> -	int idx;
> -
> -	data->ndevs++;
> -
> -	if (drm_dev_enter(drm, &idx))
> -		ret = data->xe_fn(to_xe_device(dev_get_drvdata(dev)));
> -	drm_dev_exit(idx);
> -
> -	return ret;
> -}
> -
> -/**
> - * xe_call_for_each_device - Iterate over all devices this driver binds to
> - * @xe_fn: Function to call for each device.
> - *
> - * This function iterated over all devices this driver binds to, and calls
> - * @xe_fn: for each one of them. If the called function returns anything else
> - * than 0, iteration is stopped and the return value is returned by this
> - * function. Across each function call, drm_dev_enter() / drm_dev_exit() is
> - * called for the corresponding drm device.
> - *
> - * Return: Zero or the error code of a call to @xe_fn returning an error
> - * code.
> - */
> -int xe_call_for_each_device(xe_device_fn xe_fn)
> -{
> -	int ret;
> -	struct kunit_test_data data = {
> -	    .xe_fn = xe_fn,
> -	    .ndevs = 0,
> -	};
> -
> -	ret = driver_for_each_device(&xe_pci_driver.driver, NULL,
> -				     &data, dev_to_xe_device_fn);
> -
> -	if (!data.ndevs)
> -		kunit_skip(current->kunit_test, "test runs only on hardware\n");
> -
> -	return ret;
> -}
> +#include "tests/xe_pci.c"
>  #endif
> diff --git a/drivers/gpu/drm/xe/xe_pci.h b/drivers/gpu/drm/xe/xe_pci.h
> index 9e3089549d5f..611c1209b14c 100644
> --- a/drivers/gpu/drm/xe/xe_pci.h
> +++ b/drivers/gpu/drm/xe/xe_pci.h
> @@ -6,16 +6,7 @@
>  #ifndef _XE_PCI_H_
>  #define _XE_PCI_H_
>  
> -#include "tests/xe_test.h"
> -
>  int xe_register_pci_driver(void);
>  void xe_unregister_pci_driver(void);
>  
> -#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)
> -struct xe_device;
> -
> -typedef int (*xe_device_fn)(struct xe_device *);
> -
> -int xe_call_for_each_device(xe_device_fn xe_fn);
> -#endif
>  #endif
> -- 
> 2.39.0
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation


More information about the Intel-xe mailing list