[igt-dev] [PATCH V2 i-g-t] test/amdgpu: add apu check for pciplug test

vitaly prosyak vprosyak at amd.com
Tue Nov 7 18:31:12 UTC 2023


Hi Kamil,


On 2023-11-07 04:12, Kamil Konieczny wrote:
> Hi Jesse,
> On 2023-11-07 at 11:37:33 +0800, Jesse Zhang wrote:
>> For apu, it is integrated with cpu.
>> So hotplug test should be unnecessary for it.
>>
>> V2:
>>  -IGT built-in approach to check this condition
>>    in the fixture function. (Vitlay)
>>
>> Cc: Vitaly Prosyak <vitaly.prosyak at amd.com>
>> Cc: Luben Tuikov <luben.tuikov at amd.com>
>> Cc: Alex Deucher <alexander.deucher at amd.com>
>> Cc: Christian Koenig <christian.koenig at amd.com>
>> Cc: Tim Huang <tim.huang at amd.com>
>> Cc: Kamil Konieczny <kamil.konieczny at linux.intel.com>
>>
>> Signed-off-by: Jesse Zhang <Jesse.Zhang at amd.com>
>> Reviewed-by: Vitaly Prosyak <vitaly.prosyak at amd.com>
>> ---
>>  tests/amdgpu/amd_pci_unplug.c | 32 +++++++++++++++++++++++++++++++-
>>  1 file changed, 31 insertions(+), 1 deletion(-)
>>
>> diff --git a/tests/amdgpu/amd_pci_unplug.c b/tests/amdgpu/amd_pci_unplug.c
>> index 4c055b99f..22e053795 100644
>> --- a/tests/amdgpu/amd_pci_unplug.c
>> +++ b/tests/amdgpu/amd_pci_unplug.c
>> @@ -30,15 +30,42 @@
>>  #include "lib/amdgpu/amd_pci_unplug.h"
>>  #include "lib/amdgpu/amd_ip_blocks.h"
>>  
>> +static bool
>> +is_hot_plug_test_enable(amdgpu_device_handle device_handle, const struct amdgpu_gpu_info *gpu_info)
> ---^^^^^^^^^^^^^^^^^^^
> Better: is_hotplug_supported
>
>> +{
>> +	bool enable = true;
>> +
>> +		/* skip hotplug test on APUs */
> ---------- ^
> You are not skipping anything in this function.
>
>> +	if (gpu_info->ids_flags & AMDGPU_IDS_FLAGS_FUSION) {
>> +		igt_info("Don't support hot plug on APUs, hot plug test is disabled\n");
> ----------------- ^^^^^^^^^^^^^
> Better: Hotplug not possible for APU.
>
> Btw what is APU? I ask because that is another shortcut.
>
>> +		enable = false;
>> +	}
>> +	return enable;
>> +}
>>  
>>  igt_main
>>  {
>>  
>>  	struct amd_pci_unplug_setup setup = {0};
>>  	struct amd_pci_unplug unplug = {0};
>> +	amdgpu_device_handle device;
>> +	struct amdgpu_gpu_info gpu_info = {};
>> +	int fd = -1;
>>  
>>  	igt_fixture {
>> +		uint32_t major, minor;
>> +		int err;
>> +
>> +		fd = drm_open_driver(DRIVER_AMDGPU);
>> +		err = amdgpu_device_initialize(fd, &major, &minor, &device);
>> +		igt_require(err == 0);
>> +		igt_info("Initialized amdgpu, driver version %d.%d\n",
>> +			 major, minor);
>> +		err = amdgpu_query_gpu_info(device, &gpu_info);
>> +		igt_assert_eq(err, 0);
>> +
>>  		setup.minor_version_req = 46;
>> +		igt_skip_on(!is_hot_plug_test_enable(device, &gpu_info));
> Problem with such skip in fixture is that it is global,
> it will aplly to all cases even when you will not have APU
> or have both APU and dGPU connected by PCI.
> Imho it is better to place this in particular subtests.
>
> Btw when you have APU you still would want to test hotunplug
> for dGPU connected by PCI? Or am I missing something?
> Could you have APU on separate PCI card?
You are correct, we may have APU and dGPU in this case the skip-in fixture would be a mistake solution.
We implemented in IGT where we handle more than one GPU case where exported fence to another GPU(amdgpu_hotunplug_with_exported_fence)
The function amdgpu_hotunplug_setup_test would be a good place to check whether it is dGPU or APU.

We have to manually igt_info {.. about skipping the test} vs when having built-in feature in fixture function.

Thanks Vitaly

> Regards,
> Kamil
>
>>  	}
>>  
>>  	igt_subtest("amdgpu_hotunplug_simple")
>> @@ -54,5 +81,8 @@ igt_main
>>  	igt_subtest("amdgpu_hotunplug_with_exported_fence")
>>  		amdgpu_hotunplug_with_exported_fence(&setup, &unplug);
>>  
>> -	igt_fixture { }
>> +	igt_fixture {
>> +		amdgpu_device_deinitialize(device);
>> +		drm_close_driver(fd);
>> +	}
>>  }
>> -- 
>> 2.25.1
>>


More information about the igt-dev mailing list