Commit af049be5 authored by Lucas De Marchi's avatar Lucas De Marchi Committed by Rodrigo Vivi

drm/xe: Move test infra out of xe_pci.[ch]

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: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
Link: https://lore.kernel.org/r/20230401085151.1786204-3-lucas.demarchi@intel.comSigned-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent d19ad0e8
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
#include <kunit/test.h> #include <kunit/test.h>
#include "tests/xe_bo_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_bo_evict.h"
#include "xe_pci.h" #include "xe_pci.h"
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <kunit/test.h> #include <kunit/test.h>
#include "tests/xe_dma_buf_test.h" #include "tests/xe_dma_buf_test.h"
#include "tests/xe_pci_test.h"
#include "xe_pci.h" #include "xe_pci.h"
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <kunit/test.h> #include <kunit/test.h>
#include "tests/xe_migrate_test.h" #include "tests/xe_migrate_test.h"
#include "tests/xe_pci_test.h"
#include "xe_pci.h" #include "xe_pci.h"
......
// 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;
}
/* 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
...@@ -627,55 +627,5 @@ void xe_unregister_pci_driver(void) ...@@ -627,55 +627,5 @@ void xe_unregister_pci_driver(void)
} }
#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST) #if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)
struct kunit_test_data { #include "tests/xe_pci.c"
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;
}
#endif #endif
...@@ -6,16 +6,7 @@ ...@@ -6,16 +6,7 @@
#ifndef _XE_PCI_H_ #ifndef _XE_PCI_H_
#define _XE_PCI_H_ #define _XE_PCI_H_
#include "tests/xe_test.h"
int xe_register_pci_driver(void); int xe_register_pci_driver(void);
void xe_unregister_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 #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment