[PATCH 2/2] drm/amdgpu: disable runpm if other reset method not runpm capable is chosen

Deucher, Alexander Alexander.Deucher at amd.com
Fri Mar 19 16:45:34 UTC 2021


[AMD Public Use]

Yeah, the reset method is independent of whether we can use BACO for runtime PM.  We can use BACO for power saving and use mode1 for reset.  Is there some issue I'm missing?

Alex

________________________________
From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> on behalf of Lazar, Lijo <Lijo.Lazar at amd.com>
Sent: Friday, March 19, 2021 7:27 AM
To: Quan, Evan <Evan.Quan at amd.com>; amd-gfx at lists.freedesktop.org <amd-gfx at lists.freedesktop.org>
Cc: Quan, Evan <Evan.Quan at amd.com>
Subject: RE: [PATCH 2/2] drm/amdgpu: disable runpm if other reset method not runpm capable is chosen

[AMD Public Use]



-----Original Message-----
From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Evan Quan
Sent: Friday, March 19, 2021 2:42 PM
To: amd-gfx at lists.freedesktop.org
Cc: Quan, Evan <Evan.Quan at amd.com>
Subject: [PATCH 2/2] drm/amdgpu: disable runpm if other reset method not runpm capable is chosen

Otherwise, the runpm will be always enabled on a BACO capable target even the reset method was forced as like mode1.

Change-Id: If6bf55c533e91470c9c83383788466161608f68d
Signed-off-by: Evan Quan <evan.quan at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu.h     | 1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 +-  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 2 ++
 drivers/gpu/drm/amd/amdgpu/cik.c        | 2 +-
 drivers/gpu/drm/amd/amdgpu/nv.c         | 2 +-
 drivers/gpu/drm/amd/amdgpu/si.c         | 2 +-
 drivers/gpu/drm/amd/amdgpu/soc15.c      | 2 +-
 drivers/gpu/drm/amd/amdgpu/vi.c         | 2 +-
 8 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 963ecfd84347..be12dd2550b8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -589,6 +589,7 @@ struct amdgpu_allowed_register_entry {  };

 enum amd_reset_method {
+       AMD_RESET_METHOD_AUTO = -1,
         AMD_RESET_METHOD_LEGACY = 0,
         AMD_RESET_METHOD_MODE0,
         AMD_RESET_METHOD_MODE1,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 6a06234dbcad..78e5445b28b5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -168,7 +168,7 @@ int amdgpu_noretry = -1;  int amdgpu_force_asic_type = -1;  int amdgpu_tmz = -1; /* auto */  uint amdgpu_freesync_vid_mode; -int amdgpu_reset_method = -1; /* auto */
+int amdgpu_reset_method = AMD_RESET_METHOD_AUTO; /* auto */
 int amdgpu_num_kcq = -1;

 static void amdgpu_drv_delayed_reset_work_handler(struct work_struct *work); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index 8844f650b17f..49068ad698a6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -168,6 +168,8 @@ int amdgpu_driver_load_kms(struct amdgpu_device *adev, unsigned long flags)
                 adev->runpm = true;
                 dev_info(adev->dev, "Using BOCO for runtime pm\n");
         } else if (amdgpu_device_supports_baco(dev) &&
+                  (amdgpu_reset_method == AMD_RESET_METHOD_AUTO ||
+                   amdgpu_reset_method == AMD_RESET_METHOD_BACO) &&

< > Why to link runpm suspend method with reset method?

Thanks,
Lijo
                    (amdgpu_runtime_pm != 0)) {
                 switch (adev->asic_type) {
                 case CHIP_VEGA20:
diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c b/drivers/gpu/drm/amd/amdgpu/cik.c
index c0fcc41ee574..e671871f4d28 100644
--- a/drivers/gpu/drm/amd/amdgpu/cik.c
+++ b/drivers/gpu/drm/amd/amdgpu/cik.c
@@ -1395,7 +1395,7 @@ cik_asic_reset_method(struct amdgpu_device *adev)
             amdgpu_reset_method == AMD_RESET_METHOD_BACO)
                 return amdgpu_reset_method;

-       if (amdgpu_reset_method != -1)
+       if (amdgpu_reset_method != AMD_RESET_METHOD_AUTO)
                 dev_warn(adev->dev, "Specified reset:%d isn't supported, using AUTO instead.\n",
                                   amdgpu_reset_method);

diff --git a/drivers/gpu/drm/amd/amdgpu/nv.c b/drivers/gpu/drm/amd/amdgpu/nv.c index 2670ae00c2e5..1e751d415f15 100644
--- a/drivers/gpu/drm/amd/amdgpu/nv.c
+++ b/drivers/gpu/drm/amd/amdgpu/nv.c
@@ -529,7 +529,7 @@ nv_asic_reset_method(struct amdgpu_device *adev)
             amdgpu_reset_method == AMD_RESET_METHOD_PCI)
                 return amdgpu_reset_method;

-       if (amdgpu_reset_method != -1)
+       if (amdgpu_reset_method != AMD_RESET_METHOD_AUTO)
                 dev_warn(adev->dev, "Specified reset method:%d isn't supported, using AUTO instead.\n",
                                   amdgpu_reset_method);

diff --git a/drivers/gpu/drm/amd/amdgpu/si.c b/drivers/gpu/drm/amd/amdgpu/si.c index 7cbc2bb03bc6..b9db761a7cc5 100644
--- a/drivers/gpu/drm/amd/amdgpu/si.c
+++ b/drivers/gpu/drm/amd/amdgpu/si.c
@@ -1420,7 +1420,7 @@ si_asic_reset_method(struct amdgpu_device *adev)
         if (amdgpu_reset_method == AMD_RESET_METHOD_PCI)
                 return amdgpu_reset_method;
         else if (amdgpu_reset_method != AMD_RESET_METHOD_LEGACY &&
-                amdgpu_reset_method != -1)
+                amdgpu_reset_method != AMD_RESET_METHOD_AUTO)
                 dev_warn(adev->dev, "Specified reset method:%d isn't supported, using AUTO instead.\n",
                          amdgpu_reset_method);

diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
index c354a11e2fd9..ad11f2e1f4db 100644
--- a/drivers/gpu/drm/amd/amdgpu/soc15.c
+++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
@@ -689,7 +689,7 @@ soc15_asic_reset_method(struct amdgpu_device *adev)
                 return amdgpu_reset_method;
         }

-       if (amdgpu_reset_method != -1)
+       if (amdgpu_reset_method != AMD_RESET_METHOD_AUTO)
                 dev_warn(adev->dev, "Specified reset method:%d isn't supported, using AUTO instead.\n",
                                   amdgpu_reset_method);

diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c index ea338de5818a..6b380a25e22e 100644
--- a/drivers/gpu/drm/amd/amdgpu/vi.c
+++ b/drivers/gpu/drm/amd/amdgpu/vi.c
@@ -895,7 +895,7 @@ vi_asic_reset_method(struct amdgpu_device *adev)
             amdgpu_reset_method == AMD_RESET_METHOD_BACO)
                 return amdgpu_reset_method;

-       if (amdgpu_reset_method != -1)
+       if (amdgpu_reset_method != AMD_RESET_METHOD_AUTO)
                 dev_warn(adev->dev, "Specified reset method:%d isn't supported, using AUTO instead.\n",
                                   amdgpu_reset_method);

--
2.29.0

_______________________________________________
amd-gfx mailing list
amd-gfx at lists.freedesktop.org
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=04%7C01%7Calexander.deucher%40amd.com%7C5cacb7cb280c4055647a08d8eac9edbc%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637517500293380275%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=93jzFipkAGazXCqwfxbKUkvTDUHmuSZT6cNAcymg%2BRQ%3D&reserved=0
_______________________________________________
amd-gfx mailing list
amd-gfx at lists.freedesktop.org
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=04%7C01%7Calexander.deucher%40amd.com%7C5cacb7cb280c4055647a08d8eac9edbc%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637517500293380275%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=93jzFipkAGazXCqwfxbKUkvTDUHmuSZT6cNAcymg%2BRQ%3D&reserved=0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20210319/9303fcd4/attachment-0001.htm>


More information about the amd-gfx mailing list