Commit 741d73f5 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'amd-drm-next-6.12-2024-09-06' of...

Merge tag 'amd-drm-next-6.12-2024-09-06' of https://gitlab.freedesktop.org/agd5f/linux

 into drm-next

amd-drm-next-6.12-2024-09-06:

amdgpu:
- IPS updates
- Post divider fix
- DML2 updates
- Misc static checker fixes
- DCN 3.5 fixes
- Replay fixes
- DMCUB updates
- SWSMU fixes
- DP MST fixes
- Add debug flag for per queue resets
- devcoredump updates
- SR-IOV fixes
- MES fixes
- Always allocate cleared VRAM for GEM
- Pipe reset for GC 9.4.3
- ODM policy fixes
- Per queue reset support for GC 10
- Per queue reset support for GC 11
- Per queue reset support for GC 12
- Display flickering fixes
- MPO fixes
- Display sharpening updates

amdkfd:
- SVM fix for IH for APUs

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240906211008.3072097-1-alexander.deucher@amd.com
parents 32bd3eb5 7a199557
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -179,4 +179,4 @@ IP Blocks
   :doc: IP Blocks

.. kernel-doc:: drivers/gpu/drm/amd/include/amd_shared.h
   :identifiers: amd_ip_block_type amd_ip_funcs
   :identifiers: amd_ip_block_type amd_ip_funcs DC_DEBUG_MASK
+1 −0
Original line number Diff line number Diff line
@@ -1164,6 +1164,7 @@ struct amdgpu_device {
	bool                            debug_disable_soft_recovery;
	bool                            debug_use_vram_fw_buf;
	bool                            debug_enable_ras_aca;
	bool                            debug_exp_resets;

	bool				enforce_isolation[MAX_XCP];
	/* Added this mutex for cleaner shader isolation between GFX and compute processes */
+4 −0
Original line number Diff line number Diff line
@@ -1151,6 +1151,10 @@ uint64_t kgd_gfx_v9_hqd_get_pq_addr(struct amdgpu_device *adev,
	uint32_t low, high;
	uint64_t queue_addr = 0;

	if (!adev->debug_exp_resets &&
	    !adev->gfx.num_gfx_rings)
		return 0;

	kgd_gfx_v9_acquire_queue(adev, pipe_id, queue_id, inst);
	amdgpu_gfx_rlc_enter_safe_mode(adev, inst);

+11 −9
Original line number Diff line number Diff line
@@ -28,8 +28,8 @@
#include "atom.h"

#ifndef CONFIG_DEV_COREDUMP
void amdgpu_coredump(struct amdgpu_device *adev, bool vram_lost,
		     struct amdgpu_reset_context *reset_context)
void amdgpu_coredump(struct amdgpu_device *adev, bool skip_vram_check,
		     bool vram_lost, struct amdgpu_job *job)
{
}
#else
@@ -315,7 +315,9 @@ amdgpu_devcoredump_read(char *buffer, loff_t offset, size_t count,
		}
	}

	if (coredump->reset_vram_lost)
	if (coredump->skip_vram_check)
		drm_printf(&p, "VRAM lost check is skipped!\n");
	else if (coredump->reset_vram_lost)
		drm_printf(&p, "VRAM is lost due to GPU reset!\n");

	return count - iter.remain;
@@ -326,12 +328,11 @@ static void amdgpu_devcoredump_free(void *data)
	kfree(data);
}

void amdgpu_coredump(struct amdgpu_device *adev, bool vram_lost,
		     struct amdgpu_reset_context *reset_context)
void amdgpu_coredump(struct amdgpu_device *adev, bool skip_vram_check,
		     bool vram_lost, struct amdgpu_job *job)
{
	struct amdgpu_coredump_info *coredump;
	struct drm_device *dev = adev_to_drm(adev);
	struct amdgpu_job *job = reset_context->job;
	struct amdgpu_coredump_info *coredump;
	struct drm_sched_job *s_job;

	coredump = kzalloc(sizeof(*coredump), GFP_NOWAIT);
@@ -341,11 +342,12 @@ void amdgpu_coredump(struct amdgpu_device *adev, bool vram_lost,
		return;
	}

	coredump->skip_vram_check = skip_vram_check;
	coredump->reset_vram_lost = vram_lost;

	if (reset_context->job && reset_context->job->vm) {
	if (job && job->vm) {
		struct amdgpu_vm *vm = job->vm;
		struct amdgpu_task_info *ti;
		struct amdgpu_vm *vm = reset_context->job->vm;

		ti = amdgpu_vm_get_task_info_vm(vm);
		if (ti) {
+3 −4
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@
#define __AMDGPU_DEV_COREDUMP_H__

#include "amdgpu.h"
#include "amdgpu_reset.h"

#ifdef CONFIG_DEV_COREDUMP

@@ -36,12 +35,12 @@ struct amdgpu_coredump_info {
	struct amdgpu_device            *adev;
	struct amdgpu_task_info         reset_task_info;
	struct timespec64               reset_time;
	bool                            skip_vram_check;
	bool                            reset_vram_lost;
	struct amdgpu_ring              *ring;
};
#endif

void amdgpu_coredump(struct amdgpu_device *adev, bool vram_lost,
		     struct amdgpu_reset_context *reset_context);

void amdgpu_coredump(struct amdgpu_device *adev, bool skip_vram_check,
		     bool vram_lost, struct amdgpu_job *job);
#endif
Loading