mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
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: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Link: https://lore.kernel.org/r/20230401085151.1786204-3-lucas.demarchi@intel.com Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
d19ad0e80e
commit
af049be5a3
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#include <kunit/test.h>
|
||||
|
||||
#include "tests/xe_migrate_test.h"
|
||||
#include "tests/xe_pci_test.h"
|
||||
|
||||
#include "xe_pci.h"
|
||||
|
||||
|
|
|
|||
62
drivers/gpu/drm/xe/tests/xe_pci.c
Normal file
62
drivers/gpu/drm/xe/tests/xe_pci.c
Normal file
|
|
@ -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;
|
||||
}
|
||||
15
drivers/gpu/drm/xe/tests/xe_pci_test.h
Normal file
15
drivers/gpu/drm/xe/tests/xe_pci_test.h
Normal file
|
|
@ -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
|
||||
|
|
@ -627,55 +627,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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user