All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] drm/amdgpu: rework amdgpu open() path to function in sleep state
@ 2026-10-29  4:09 Shahyan Soltani
  2026-10-29  4:09 ` [PATCH v3 1/2] drm/amdgpu: defer amdgpu_vm_pt_clear() to validation Shahyan Soltani
  2026-10-29  4:09 ` [PATCH v3 2/2] drm/amdgpu: remove pm_runtime from open/close kms paths Shahyan Soltani
  0 siblings, 2 replies; 6+ messages in thread
From: Shahyan Soltani @ 2026-10-29  4:09 UTC (permalink / raw)
  To: amd-gfx; +Cc: alexander.deucher, christian.koenig

This patch series reworks the amdgpu open/close, vm, cs, and validation
functionality to allow for access of the GPU's CPU sided bookkeeping
data without waking up the GPU from idle.

The overhaul will allow a few tools to function without waking up the
GPU, which can improve power efficiency within relevant domains, and can
hopefully be expanded on later to adapt for useful utilities.

v2:

- Force a vm->generation mismatch by adding 1 to the result of
amdgpu_vm_generation.

- Separate validation logic from patch "drm/amdgpu: defer GPU resume from
open/close to first use" into a new patch.

- Change validation logic to not depend on flags to operate. Instead
relying on a vm->generation mismatch.

- Clear vm pts in the kernel.evicted loop instead.

- Remove the root_cleared flag.

- Let the vm domain be initialized to VRAM in amdgpu_vm_pt_create if the
vm->root.bo is not null.

- Clear the root page table on vm_init if pm_ref was true.

v3:

- Merged: commit fbbcdad4c7c8 ("drm/amdgpu: clear vm pts upon a
  vm->generation mismatch")

- Remove pm_runtime_get_sync() and pm_runtime_put_autosuspend() from
  open/postclose kms.

- Remove the powered_init flag and parameter to vm_init.

- Remove amdgpu_vm_generation() result + 1 patch to instead depend on
  setting vm->generation to ~0ULL to force the mismatch.

- Initialize the root PD's domain to 0 (system memory) instead of GTT.

- Add validation handling in accordance with amdgpu_ualink.c vm
  initialization.

Concerns:

In the first patch, amdgpu_vm_init() reserved a fence slot for
amdgpu_vm_pt_clear() prior to this patch set:

	r = dma_resv_reserve_fences(root_bo->tbo.base.resv, 1);
	if (r)
		goto error_free_root;
-	r = amdgpu_vm_pt_clear(adev, vm, root, false);

Due to my limited knowledge on how fences function and when they are
required, I wasn't sure whether I had to replicate this in ualink and
possibly other locations that require amdgpu_vm_validate(). Such as in
amdgpu_amdkfd_gpuvm.c. Since amdgpu_vm_pt_clear is now deferred to
validate.

As a result I left it untouched within those domains and used
amdgpu_ualink_reserve_npa_vm_and_bos() instead of amdgpu_bo_reserve()
for ualink, since the former is native to ualink and reserves both the
bo and fence slots.

This can be easily changed into amdgpu_bo_reserve() in v4 of the patch
if required.

In the second patch, amdgpu_driver_postclose_kms calls functions
amdgpu_uvd_free_handles and amdgpu_vce_free_handles. Both of which
require hardware access. I attempted to test this with a Radeon VII
card, which to my knowledge does utilize these multimedia
specifications. However, I was unable to get the gpu to enter BACO/BOCO
mode and wasn't fully able to test the path.

I'm not sure if it was an exception to my card or BACO/BOCO isn't
supported on those older GFX IPs.

Shahyan Soltani (2):
  drm/amdgpu: defer amdgpu_vm_pt_clear() to validation
  drm/amdgpu: remove pm_runtime from open/close kms paths

 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c    | 18 +++----------
 drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c | 31 ++++++++++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.h |  1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c     |  6 +----
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c  | 13 +++++++--
 5 files changed, 47 insertions(+), 22 deletions(-)

-- 
2.56.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-11-12 10:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-29  4:09 [PATCH v3 0/2] drm/amdgpu: rework amdgpu open() path to function in sleep state Shahyan Soltani
2026-10-29  4:09 ` [PATCH v3 1/2] drm/amdgpu: defer amdgpu_vm_pt_clear() to validation Shahyan Soltani
2026-11-12 10:09   ` Christian König
2026-10-29  4:09 ` [PATCH v3 2/2] drm/amdgpu: remove pm_runtime from open/close kms paths Shahyan Soltani
2026-11-12 10:24   ` Christian König
2026-11-12 10:25   ` Christian König

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.