[PATCH v4 06/10] drm/xe/kunit: Restore test->priv when done with fake xe device

Michal Wajdeczko michal.wajdeczko at intel.com
Sat Dec 16 12:11:00 UTC 2023



On 15.12.2023 23:11, Lucas De Marchi wrote:
> On Fri, Dec 15, 2023 at 05:24:58PM +0100, Michal Wajdeczko wrote:
>> Current KUnit implementation does not reset test->priv in case of
>> parametrized tests and that may lead to wrongly treat our output
>> pointer to fake xe_device from first call as input pointer with
>> xe_pci_fake_data on subsequent calls.  Restore test->priv to
>> original value to avoid invalid access.
> 
> but wouldn't each parameterized test pass a different a data?

test->priv prepared by suit.init() should be the same
only test->param_value will change on each param iteration

> 
> not sure I'm following why this is a xe issue. Are you fixing it in xe
> while should be fixed in kunit?

who said I'm not fixing that in kunit ;)

[1]
https://lore.kernel.org/linux-kselftest/20231215151327.1835-1-michal.wajdeczko@intel.com/

Michal

> 
> Lucas De Marchi
> 
>>
>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
>> ---
>> drivers/gpu/drm/xe/tests/xe_kunit_helpers.c | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/xe/tests/xe_kunit_helpers.c
>> b/drivers/gpu/drm/xe/tests/xe_kunit_helpers.c
>> index 6d72dbf06139..fefe79b3b75a 100644
>> --- a/drivers/gpu/drm/xe/tests/xe_kunit_helpers.c
>> +++ b/drivers/gpu/drm/xe/tests/xe_kunit_helpers.c
>> @@ -41,6 +41,13 @@ struct xe_device
>> *xe_kunit_helper_alloc_xe_device(struct kunit *test,
>> }
>> EXPORT_SYMBOL_IF_KUNIT(xe_kunit_helper_alloc_xe_device);
>>
>> +static void kunit_action_restore_priv(void *priv)
>> +{
>> +    struct kunit *test = kunit_get_current_test();
>> +
>> +    test->priv = priv;
>> +}
>> +
>> /**
>>  * xe_kunit_helper_xe_device_test_init - Prepare a &xe_device for a
>> KUnit test.
>>  * @test: the &kunit where this fake &xe_device will be used
>> @@ -74,6 +81,9 @@ int xe_kunit_helper_xe_device_test_init(struct kunit
>> *test)
>>     err = xe_pci_fake_device_init(xe);
>>     KUNIT_ASSERT_EQ(test, err, 0);
>>
>> +    err = kunit_add_action_or_reset(test, kunit_action_restore_priv,
>> test->priv);
>> +    KUNIT_ASSERT_EQ(test, err, 0);
>> +
>>     test->priv = xe;
>>     return 0;
>> }
>> -- 
>> 2.25.1
>>


More information about the Intel-xe mailing list