drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
From: Arnd Bergmann <arnd@arndb.de>
When power management is not enabled in the kernel build, the newly
added hibernation changes cause a link failure:
arm-linux-gnueabi-ld: drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o: in function `amdgpu_pmops_thaw':
amdgpu_drv.c:(.text+0x1514): undefined reference to `pm_hibernate_is_recovering'
Make the power management code in this driver conditional on
CONFIG_PM and CONFIG_PM_SLEEP
Fixes: 530694f54dd5 ("drm/amdgpu: do not resume device in thaw for normal hibernation")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 021defca9b61..66b5b3260fb9 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -2963,15 +2963,15 @@ long amdgpu_drm_ioctl(struct file *filp,
}
static const struct dev_pm_ops amdgpu_pm_ops = {
- .prepare = amdgpu_pmops_prepare,
- .complete = amdgpu_pmops_complete,
- .suspend = amdgpu_pmops_suspend,
- .suspend_noirq = amdgpu_pmops_suspend_noirq,
- .resume = amdgpu_pmops_resume,
- .freeze = amdgpu_pmops_freeze,
- .thaw = amdgpu_pmops_thaw,
- .poweroff = amdgpu_pmops_poweroff,
- .restore = amdgpu_pmops_restore,
+ .prepare = pm_sleep_ptr(amdgpu_pmops_prepare),
+ .complete = pm_sleep_ptr(amdgpu_pmops_complete),
+ .suspend = pm_sleep_ptr(amdgpu_pmops_suspend),
+ .suspend_noirq = pm_sleep_ptr(amdgpu_pmops_suspend_noirq),
+ .resume = pm_sleep_ptr(amdgpu_pmops_resume),
+ .freeze = pm_sleep_ptr(amdgpu_pmops_freeze),
+ .thaw = pm_sleep_ptr(amdgpu_pmops_thaw),
+ .poweroff = pm_sleep_ptr(amdgpu_pmops_poweroff),
+ .restore = pm_sleep_ptr(amdgpu_pmops_restore),
.runtime_suspend = amdgpu_pmops_runtime_suspend,
.runtime_resume = amdgpu_pmops_runtime_resume,
.runtime_idle = amdgpu_pmops_runtime_idle,
@@ -3116,7 +3116,7 @@ static struct pci_driver amdgpu_kms_pci_driver = {
.probe = amdgpu_pci_probe,
.remove = amdgpu_pci_remove,
.shutdown = amdgpu_pci_shutdown,
- .driver.pm = &amdgpu_pm_ops,
+ .driver.pm = pm_ptr(&amdgpu_pm_ops),
.err_handler = &amdgpu_pci_err_handler,
.dev_groups = amdgpu_sysfs_groups,
};
--
2.39.5
On 7/14/25 3:16 AM, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@arndb.de> > > When power management is not enabled in the kernel build, the newly > added hibernation changes cause a link failure: > > arm-linux-gnueabi-ld: drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o: in function `amdgpu_pmops_thaw': > amdgpu_drv.c:(.text+0x1514): undefined reference to `pm_hibernate_is_recovering' > > Make the power management code in this driver conditional on > CONFIG_PM and CONFIG_PM_SLEEP > > Fixes: 530694f54dd5 ("drm/amdgpu: do not resume device in thaw for normal hibernation") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> We're going to fix it using this stub instead. https://lore.kernel.org/linux-pm/20250712233715.821424-1-superm1@kernel.org/ It's in drm-misc-next as of this weekend and it should show up in linux-next in the next day or two. > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 20 ++++++++++---------- > 1 file changed, 10 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > index 021defca9b61..66b5b3260fb9 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > @@ -2963,15 +2963,15 @@ long amdgpu_drm_ioctl(struct file *filp, > } > > static const struct dev_pm_ops amdgpu_pm_ops = { > - .prepare = amdgpu_pmops_prepare, > - .complete = amdgpu_pmops_complete, > - .suspend = amdgpu_pmops_suspend, > - .suspend_noirq = amdgpu_pmops_suspend_noirq, > - .resume = amdgpu_pmops_resume, > - .freeze = amdgpu_pmops_freeze, > - .thaw = amdgpu_pmops_thaw, > - .poweroff = amdgpu_pmops_poweroff, > - .restore = amdgpu_pmops_restore, > + .prepare = pm_sleep_ptr(amdgpu_pmops_prepare), > + .complete = pm_sleep_ptr(amdgpu_pmops_complete), > + .suspend = pm_sleep_ptr(amdgpu_pmops_suspend), > + .suspend_noirq = pm_sleep_ptr(amdgpu_pmops_suspend_noirq), > + .resume = pm_sleep_ptr(amdgpu_pmops_resume), > + .freeze = pm_sleep_ptr(amdgpu_pmops_freeze), > + .thaw = pm_sleep_ptr(amdgpu_pmops_thaw), > + .poweroff = pm_sleep_ptr(amdgpu_pmops_poweroff), > + .restore = pm_sleep_ptr(amdgpu_pmops_restore), > .runtime_suspend = amdgpu_pmops_runtime_suspend, > .runtime_resume = amdgpu_pmops_runtime_resume, > .runtime_idle = amdgpu_pmops_runtime_idle, > @@ -3116,7 +3116,7 @@ static struct pci_driver amdgpu_kms_pci_driver = { > .probe = amdgpu_pci_probe, > .remove = amdgpu_pci_remove, > .shutdown = amdgpu_pci_shutdown, > - .driver.pm = &amdgpu_pm_ops, > + .driver.pm = pm_ptr(&amdgpu_pm_ops), > .err_handler = &amdgpu_pci_err_handler, > .dev_groups = amdgpu_sysfs_groups, > };
On Mon, Jul 14, 2025, at 16:59, Limonciello, Mario wrote: > On 7/14/25 3:16 AM, Arnd Bergmann wrote: >> From: Arnd Bergmann <arnd@arndb.de> >> >> When power management is not enabled in the kernel build, the newly >> added hibernation changes cause a link failure: >> >> arm-linux-gnueabi-ld: drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o: in function `amdgpu_pmops_thaw': >> amdgpu_drv.c:(.text+0x1514): undefined reference to `pm_hibernate_is_recovering' >> >> Make the power management code in this driver conditional on >> CONFIG_PM and CONFIG_PM_SLEEP >> >> Fixes: 530694f54dd5 ("drm/amdgpu: do not resume device in thaw for normal hibernation") >> Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > We're going to fix it using this stub instead. > > https://lore.kernel.org/linux-pm/20250712233715.821424-1-superm1@kernel.org/ > > It's in drm-misc-next as of this weekend and it should show up in > linux-next in the next day or two. That patch makes sense as well, but I think mine is useful as an improvement even if it doesn't address a link failure but only reduces the object size by reducing the amount of dead code. Arnd
On 7/14/25 10:01 AM, Arnd Bergmann wrote: > On Mon, Jul 14, 2025, at 16:59, Limonciello, Mario wrote: >> On 7/14/25 3:16 AM, Arnd Bergmann wrote: >>> From: Arnd Bergmann <arnd@arndb.de> >>> >>> When power management is not enabled in the kernel build, the newly >>> added hibernation changes cause a link failure: >>> >>> arm-linux-gnueabi-ld: drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o: in function `amdgpu_pmops_thaw': >>> amdgpu_drv.c:(.text+0x1514): undefined reference to `pm_hibernate_is_recovering' >>> >>> Make the power management code in this driver conditional on >>> CONFIG_PM and CONFIG_PM_SLEEP >>> >>> Fixes: 530694f54dd5 ("drm/amdgpu: do not resume device in thaw for normal hibernation") >>> Signed-off-by: Arnd Bergmann <arnd@arndb.de> >> >> We're going to fix it using this stub instead. >> >> https://lore.kernel.org/linux-pm/20250712233715.821424-1-superm1@kernel.org/ >> >> It's in drm-misc-next as of this weekend and it should show up in >> linux-next in the next day or two. > > That patch makes sense as well, but I think mine is useful as an > improvement even if it doesn't address a link failure but only > reduces the object size by reducing the amount of dead code. > > Arnd Thanks for pointing it out. You're right. I'll get it picked up. Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
On 7/14/25 10:49 AM, Mario Limonciello wrote: > On 7/14/25 10:01 AM, Arnd Bergmann wrote: >> On Mon, Jul 14, 2025, at 16:59, Limonciello, Mario wrote: >>> On 7/14/25 3:16 AM, Arnd Bergmann wrote: >>>> From: Arnd Bergmann <arnd@arndb.de> >>>> >>>> When power management is not enabled in the kernel build, the newly >>>> added hibernation changes cause a link failure: >>>> >>>> arm-linux-gnueabi-ld: drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o: in >>>> function `amdgpu_pmops_thaw': >>>> amdgpu_drv.c:(.text+0x1514): undefined reference to >>>> `pm_hibernate_is_recovering' >>>> >>>> Make the power management code in this driver conditional on >>>> CONFIG_PM and CONFIG_PM_SLEEP >>>> >>>> Fixes: 530694f54dd5 ("drm/amdgpu: do not resume device in thaw for >>>> normal hibernation") >>>> Signed-off-by: Arnd Bergmann <arnd@arndb.de> >>> >>> We're going to fix it using this stub instead. >>> >>> https://lore.kernel.org/linux-pm/20250712233715.821424-1- >>> superm1@kernel.org/ >>> >>> It's in drm-misc-next as of this weekend and it should show up in >>> linux-next in the next day or two. >> >> That patch makes sense as well, but I think mine is useful as an >> improvement even if it doesn't address a link failure but only >> reduces the object size by reducing the amount of dead code. >> >> Arnd > > Thanks for pointing it out. You're right. I'll get it picked up. > > Reviewed-by: Mario Limonciello <mario.limonciello@amd.com> The internal AMD CI raised a problem on a dGPU (details below). I think that the diff might be a little overzealous, perhaps on the poweroff() callback? Here is the assertion that got raised. https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/blob/master/lib/amdgpu/amd_pci_unplug.c#L376 Failed test(s) ============== igt@amdgpu/amd_pci_unplug@amdgpu_hotunplug_with_exported_bo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Error message ------------- Starting subtest: amdgpu_hotunplug_with_exported_bo (amd_pci_unplug:981) amdgpu/amd_pci_unplug-CRITICAL: Test assertion failure function amdgpu_hotunplug_with_exported_bo, file ../lib/amdgpu/amd_pci_unplug.c:344: (amd_pci_unplug:981) amdgpu/amd_pci_unplug-CRITICAL: Failed assertion: r == 1 (amd_pci_unplug:981) amdgpu/amd_pci_unplug-CRITICAL: Last errno: 2, No such file or directory (amd_pci_unplug:981) amdgpu/amd_pci_unplug-CRITICAL: error: 0 != 1 Subtest amdgpu_hotunplug_with_exported_bo failed. **** DEBUG **** (amd_pci_unplug:981) amdgpu/amd_pci_unplug-CRITICAL: Test assertion failure function amdgpu_hotunplug_with_exported_bo, file ../lib/amdgpu/amd_pci_unplug.c:344: (amd_pci_unplug:981) amdgpu/amd_pci_unplug-CRITICAL: Failed assertion: r == 1 (amd_pci_unplug:981) amdgpu/amd_pci_unplug-CRITICAL: Last errno: 2, No such file or directory (amd_pci_unplug:981) amdgpu/amd_pci_unplug-CRITICAL: error: 0 != 1 (amd_pci_unplug:981) igt_core-INFO: Stack trace: (amd_pci_unplug:981) igt_core-INFO: #0 ../lib/igt_core.c:2075 __igt_fail_assert() (amd_pci_unplug:981) igt_core-INFO: #1 ../lib/amdgpu/amd_pci_unplug.c:377 amdgpu_hotunplug_with_exported_bo() (amd_pci_unplug:981) igt_core-INFO: #2 ../tests/amdgpu/amd_pci_unplug.c:50 __igt_unique____real_main34() (amd_pci_unplug:981) igt_core-INFO: #3 ../tests/amdgpu/amd_pci_unplug.c:34 main() (amd_pci_unplug:981) igt_core-INFO: #4 ../sysdeps/nptl/libc_start_call_main.h:58 __libc_start_call_main() (amd_pci_unplug:981) igt_core-INFO: #5 ../csu/libc-start.c:128 __libc_start_main@@GLIBC_2.34() (amd_pci_unplug:981) igt_core-INFO: #6 [_start+0x25] **** END **** Subtest amdgpu_hotunplug_with_exported_bo: FAIL (0.033s) Dmesg output ------------ <6> [701.429516] [IGT] amd_pci_unplug: executing <6> [701.434258] [IGT] amd_pci_unplug: starting subtest amdgpu_hotunplug_with_exported_bo <6> [701.475508] [IGT] amd_pci_unplug: finished subtest amdgpu_hotunplug_with_exported_bo, FAIL <6> [701.483839] [IGT] amd_pci_unplug: exiting, ret=98
© 2016 - 2025 Red Hat, Inc.