[PATCH] drm/amd: Exclude dGPUs in eGPU enclosures from DPM quirks

Mario Limonciello mario.limonciello at amd.com
Mon Nov 6 21:43:07 UTC 2023


On 11/6/2023 15:40, Alex Deucher wrote:
> On Mon, Nov 6, 2023 at 3:07 PM Mario Limonciello
> <mario.limonciello at amd.com> wrote:
>>
>> DPM should be enabled on dGPUs that are used in eGPU enclosures
>> regardless of the host support.
> 
> Are you sure?  Seems like this would be dependent on whether the eGPU
> bridge supports dynamic switching or not.

Right; but the bridge the eGPU is connected to is "outside" the host.

We shouldn't be blocking the bridge 100% of the time if it's connected 
to an Intel host.

I *believe* right now the way the code is put together if you take an 
otherwise identical OS image with amd-staging-drm-next and connect an 
eGPU to an Intel USB4 host you'll end up with DPM turned off and an AMD 
USB4 host will have it enabled.

> 
> Alex
> 
>>
>> Signed-off-by: Mario Limonciello <mario.limonciello at amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 ++++++--
>>   1 file changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> index e2199d8fd30e..29d5820e912b 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> @@ -1466,11 +1466,15 @@ bool amdgpu_device_seamless_boot_supported(struct amdgpu_device *adev)
>>    * https://edc.intel.com/content/www/us/en/design/products/platforms/details/raptor-lake-s/13th-generation-core-processors-datasheet-volume-1-of-2/005/pci-express-support/
>>    * https://gitlab.freedesktop.org/drm/amd/-/issues/2663
>>    */
>> -static bool amdgpu_device_pcie_dynamic_switching_supported(void)
>> +static bool amdgpu_device_pcie_dynamic_switching_supported(struct amdgpu_device *adev)
>>   {
>>   #if IS_ENABLED(CONFIG_X86)
>>          struct cpuinfo_x86 *c = &cpu_data(0);
>>
>> +       /* don't worry about external dGPUs */
>> +       if (dev_is_removable(adev->dev))
>> +               return true;
>> +
>>          if (c->x86_vendor == X86_VENDOR_INTEL)
>>                  return false;
>>   #endif
>> @@ -2310,7 +2314,7 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)
>>                  adev->pm.pp_feature &= ~PP_GFXOFF_MASK;
>>          if (amdgpu_sriov_vf(adev) && adev->asic_type == CHIP_SIENNA_CICHLID)
>>                  adev->pm.pp_feature &= ~PP_OVERDRIVE_MASK;
>> -       if (!amdgpu_device_pcie_dynamic_switching_supported())
>> +       if (!amdgpu_device_pcie_dynamic_switching_supported(adev))
>>                  adev->pm.pp_feature &= ~PP_PCIE_DPM_MASK;
>>
>>          total = true;
>> --
>> 2.34.1
>>



More information about the amd-gfx mailing list