On Wed, Aug 21, 2024 at 10:11:45PM -0400, Josh Rickmar wrote: > >Synopsis: S3 amdgpu resume broken on latest kernels > >Category: amdgpu > >Environment: > System : OpenBSD 7.6 > Details : OpenBSD 7.6-beta (GENERIC.MP) #48: Wed Aug 21 21:59:08 > EDT 2024 > > jr...@desktop.zettaport.com:/usr/src/sys/arch/amd64/compile/GENERIC.MP > > Architecture: OpenBSD.amd64 > Machine : amd64 > >Description: > > Initially I thought this was due to S0ix but after building my own > bisecting my own kernels, it seems something tickled the S3 codepath > for me in a way that breaks my resume. I've bisected it down to this > commit: > > 2024-08-16 cc2e793a kettenis Hook up a few more bits of suspend/resume power > management code. This > > and more specifically, an added call to amdgpu_pmops_suspend_noirq() > that seems like it should not be running on my hardware.
does this help? reverts our rev 1.16 'Skip the FADT check on OpenBSD' and adds 'drm/amd: Explicitly check for GFXOFF to be enabled for s0ix' https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/?id=e4c44b1a19625348fc004ce8c5f828d5d80d037e if it helps, is removing the ifdef without adding the if block enough? Index: sys/dev/pci/drm/amd/amdgpu/amdgpu_acpi.c =================================================================== RCS file: /cvs/src/sys/dev/pci/drm/amd/amdgpu/amdgpu_acpi.c,v diff -u -p -r1.16 amdgpu_acpi.c --- sys/dev/pci/drm/amd/amdgpu/amdgpu_acpi.c 17 Aug 2024 10:41:24 -0000 1.16 +++ sys/dev/pci/drm/amd/amdgpu/amdgpu_acpi.c 22 Aug 2024 05:12:52 -0000 @@ -1519,7 +1519,9 @@ bool amdgpu_acpi_is_s0ix_active(struct a if (adev->asic_type < CHIP_RAVEN) return false; -#ifdef __linux__ + if (!(adev->pm.pp_feature & PP_GFXOFF_MASK)) + return false; + /* * If ACPI_FADT_LOW_POWER_S0 is not set in the FADT, it is generally * risky to do any special firmware-related preparations for entering @@ -1532,7 +1534,6 @@ bool amdgpu_acpi_is_s0ix_active(struct a "To use suspend-to-idle change the sleep mode in BIOS setup.\n"); return false; } -#endif #if !IS_ENABLED(CONFIG_AMD_PMC) dev_err_once(adev->dev,