Re: ERROR: modpost: "pm_suspend_target_state" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!

From: Alex Deucher
Date: Mon Aug 23 2021 - 16:32:07 EST


On Mon, Aug 23, 2021 at 4:27 PM Borislav Petkov <bp@xxxxxxxxx> wrote:
>
> On Mon, Aug 23, 2021 at 03:49:39PM -0400, Alex Deucher wrote:
> > Maybe fixed with this patch?
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5706cb3c910cc8283f344bc37a889a8d523a2c6d
>
> Nope, this one is already in:
>
> $ git tag --contains 5706cb3c910cc8283f344bc37a889a8d523a2c6d
> v5.14-rc5
> v5.14-rc6
> v5.14-rc7
>
> also, from only a quick poke so IMHO, the error says:
>
> ERROR: modpost: "pm_suspend_target_state" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
>
> which means you need the
>
> EXPORT_SYMBOL_GPL(pm_suspend_target_state);
>
> which is in kernel/power/suspend.c which gets enabled with
>
> obj-$(CONFIG_SUSPEND) += suspend.o
>
> and if you look at PM_SLEEP:
>
> config PM_SLEEP
> def_bool y
> depends on SUSPEND || HIBERNATE_CALLBACKS
>
> (notice the ||)
>
> and my randconfig has:
>
> $ grep -E "(HIBERNATE_CALLBACKS|SUSPEND)" .config
> # CONFIG_SUSPEND is not set
> CONFIG_HIBERNATE_CALLBACKS=y
>
> which means, you need:
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
> index 4137e848f6a2..a9ce3b20d371 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c
> @@ -1040,7 +1040,7 @@ void amdgpu_acpi_detect(void)
> */
> bool amdgpu_acpi_is_s0ix_supported(struct amdgpu_device *adev)
> {
> -#if IS_ENABLED(CONFIG_AMD_PMC) && IS_ENABLED(CONFIG_PM_SLEEP)
> +#if IS_ENABLED(CONFIG_AMD_PMC) && IS_ENABLED(CONFIG_SUSPEND)
> if (acpi_gbl_FADT.flags & ACPI_FADT_LOW_POWER_S0) {
> if (adev->flags & AMD_IS_APU)
> return pm_suspend_target_state == PM_SUSPEND_TO_IDLE;
>
>
> but whether that gives you what you want for amdgpu, you probably need
> to ponder on a bit.
>
> I sincerely hope that helps a little.

Thanks. I think that should do the trick. Care to send that as a formal patch?

Alex