projects/linux·commit 92c4c9fd

Merge tag 'drm-next-2026-04-24' of https://gitlab.freedesktop.org/drm/kernel

92c4c9fd · Linus Torvalds <[email protected]> · 2026-04-24 11:33:23 -07:00

Pull drm next fixes from Dave Airlie:
 "This is the first of two fixes for the merge PRs, the other is based
  on 7.0 branch. This mostly AMD fixes, a couple of weeks of backlog
  built up and this weeks. The main complaint I've seen is some boot
  warnings around the FP code handling which this should fix. Otherwise
  a single rcar-du and a single i915 fix.

  amdgpu:
   - SMU 14 fixes
   - Partition fixes
   - SMUIO 15.x fix
   - SR-IOV fixes
   - JPEG fix
   - PSP 15.x fix
   - NBIF fix
   - Devcoredump fixes
   - DPC fix
   - RAS fixes
   - Aldebaran smu fix
   - IP discovery fix
   - SDMA 7.1 fix
   - Runtime pm fix
   - MES 12.1 fix
   - DML2 fixes
   - DCN 4.2 fixes
   - YCbCr fixes
   - Freesync fixes
   - ISM fixes
   - Overlay cursor fix
   - DC FP fixes
   - UserQ locking fixes
   - DC idle state manager fix
   - ASPM fix
   - GPUVM SVM fix
   - DCE 6 fix

  amdkfd:
   - Fix memory clear handling
   - num_of_nodes bounds check fix

  i915:
   - Fix uninitialized variable in the alignment loop [psr]

  rcar-du:
   - fix NULL-ptr crash"

* tag 'drm-next-2026-04-24' of https://gitlab.freedesktop.org/drm/kernel: (75 commits)
  drm/amdkfd: Add upper bound check for num_of_nodes
  drm: rcar-du: Fix crash when no CMM is available
  drm/amd/display: Disable 10-bit truncation and dithering on DCE 6.x
  drm/amdgpu: OR init_pte_flags into invalid leaf PTE updates
  drm/amd: Adjust ASPM support quirk to cover more Intel hosts
  drm/amd/display: Undo accidental fix revert in amdgpu_dm_ism.c
  drm/i915/psr: Init variable to avoid early exit from et alignment loop
  drm/amdgpu: drop userq fence driver refs out of fence process()
  drm/amdgpu/userq: unpin and unref doorbell and wptr outside mutex
  drm/amdgpu/userq: use pm_runtime_resume_and_get and fix err handling
  drm/amdgpu/userq: unmap_helper dont return the queue state
  drm/amdgpu/userq: unmap is to be called before freeing doorbell/wptr bo
  drm/amdgpu/userq: hold root bo lock in caller of input_va_validate
  drm/amdgpu/userq: caller to take reserv lock for vas_list_cleanup
  drm/amdgpu/userq: create_mqd does not need userq_mutex
  drm/amdgpu/userq: dont lock root bo with userq_mutex held
  drm/amdgpu/userq: fix kerneldoc for amdgpu_userq_ensure_ev_fence
  drm/amdgpu/userq: clean the VA mapping list for failed queue creation
  drm/amdgpu/userq: avoid uneccessary locking in amdgpu_userq_create
  drm/amd/display: Fix ISM teardown crash from NULL dc dereference
  ...
Commit
92c4c9fdc838d3b41a996bb700ea64b9e78fc7ea
Parents
892c894b · e49712ef

Merge commit. Changes below are compared with the first parent: 892c894b.

Changes

98 files changed · +1377 −532

FileStatusAddDelContent
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.cmodified+2−1View file
drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.cmodified+6−0View file
drivers/gpu/drm/amd/amdgpu/amdgpu_cper.cmodified+27−9View file
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.cmodified+6−3View file
drivers/gpu/drm/amd/amdgpu/amdgpu_device.cmodified+10−10View file
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.cmodified+2−1View file
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.cmodified+2−0View file
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.cmodified+77−63View file
drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.cmodified+33−14View file
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.cmodified+2−1View file
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_cpu.cmodified+11−1View file
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.cmodified+5−2View file
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.cmodified+26−5View file
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.cmodified+46−6View file
drivers/gpu/drm/amd/amdgpu/mes_userqueue.cmodified+21−0View file
drivers/gpu/drm/amd/amdgpu/mes_v12_1.cmodified+4−4View file
drivers/gpu/drm/amd/amdgpu/nbif_v6_3_1.cmodified+8−1View file
drivers/gpu/drm/amd/amdgpu/psp_v15_0.cmodified+1−0View file
drivers/gpu/drm/amd/amdgpu/sdma_v7_1.cmodified+12−0View file
drivers/gpu/drm/amd/amdkfd/kfd_chardev.cmodified+3−0View file
drivers/gpu/drm/amd/amdkfd/kfd_priv.hmodified+1−0View file
drivers/gpu/drm/amd/amdkfd/kfd_topology.cmodified+11−0View file
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.cmodified+106−29View file
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.hmodified+6−1View file
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.cmodified+5−2View file
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.cmodified+241−0View file
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_ism.cmodified+5−10View file
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.cmodified+1−1View file
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.cmodified+0−78View file
drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.cmodified+0−2View file
drivers/gpu/drm/amd/display/dc/core/dc_resource.cmodified+6−0View file
drivers/gpu/drm/amd/display/dc/dc.hmodified+8−5View file
drivers/gpu/drm/amd/display/dc/dc_dsc.hmodified+1−0View file
drivers/gpu/drm/amd/display/dc/dc_stream.hmodified+2−2View file
drivers/gpu/drm/amd/display/dc/dc_types.hmodified+6−0View file
drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.cmodified+0−2View file
drivers/gpu/drm/amd/display/dc/dm_helpers.hmodified+10−0View file
drivers/gpu/drm/amd/display/dc/dml/dcn20/dcn20_fpu.cmodified+1−1View file
drivers/gpu/drm/amd/display/dc/dml/dcn20/dcn20_fpu.hmodified+1−1View file
drivers/gpu/drm/amd/display/dc/dml/dcn31/dcn31_fpu.cmodified+3−3View file
drivers/gpu/drm/amd/display/dc/dml/dcn31/dcn31_fpu.hmodified+3−3View file
drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.cmodified+0−37View file
drivers/gpu/drm/amd/display/dc/dml2_0/Makefilemodified+1−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_core.cmodified+17−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_util.cmodified+14−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_translation_helper.cmodified+18−6View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_utils.cmodified+2−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_wrapper.cmodified+2−2View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_wrapper_fpu.cmodified+2−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/inc/bounding_boxes/dcn42_soc_bb.hmodified+19−6View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/inc/dml_top_display_cfg_types.hmodified+0−14View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_dcn4.cmodified+3−2View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_dcn4_calcs.cmodified+29−8View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_shared_types.hmodified+22−18View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_utils.cmodified+11−62View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_utils.hmodified+1−2View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_dpmm/dml2_dpmm_dcn4.cmodified+1−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_dpmm/dml2_dpmm_factory.cmodified+2−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_mcg/dml2_mcg_factory.cmodified+1−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_pmo/dml2_pmo_dcn42.cadded+192−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_pmo/dml2_pmo_dcn42.hadded+17−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_pmo/dml2_pmo_dcn4_fams2.cmodified+14−7View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_pmo/dml2_pmo_dcn4_fams2.hmodified+10−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_pmo/dml2_pmo_factory.cmodified+3−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_standalone_libraries/lib_float_math.cmodified+1−1View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_top/dml2_top_soc15.cmodified+2−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml2_dc_resource_mgmt.cmodified+9−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml2_translation_helper.cmodified+6−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml2_utils.cmodified+1−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml2_wrapper.cmodified+11−0View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml2_wrapper_fpu.cmodified+0−10View file
drivers/gpu/drm/amd/display/dc/dml2_0/dml_display_rq_dlg_calc.cmodified+1−0View file
drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.cmodified+6−7View file
drivers/gpu/drm/amd/display/dc/dsc/dcn20/dcn20_dsc.cmodified+1−1View file
drivers/gpu/drm/amd/display/dc/dsc/dcn35/dcn35_dsc.cmodified+1−1View file
drivers/gpu/drm/amd/display/dc/dsc/dcn401/dcn401_dsc.cmodified+1−1View file
drivers/gpu/drm/amd/display/dc/link/link_detection.cmodified+19−6View file
drivers/gpu/drm/amd/display/dc/link/link_dpms.cmodified+2−1View file
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.cmodified+3−2View file
drivers/gpu/drm/amd/display/dc/resource/dcn21/dcn21_resource.cmodified+7−0View file
drivers/gpu/drm/amd/display/dc/resource/dcn31/dcn31_resource.cmodified+9−0View file
drivers/gpu/drm/amd/display/dc/resource/dcn315/dcn315_resource.cmodified+9−0View file
drivers/gpu/drm/amd/display/dc/resource/dcn316/dcn316_resource.cmodified+7−0View file
drivers/gpu/drm/amd/display/dc/soc_and_ip_translator/dcn42/dcn42_soc_and_ip_translator.cmodified+4−0View file
drivers/gpu/drm/amd/display/include/ddc_service_types.hmodified+1−0View file
drivers/gpu/drm/amd/display/modules/freesync/freesync.cmodified+21−11View file
drivers/gpu/drm/amd/display/modules/power/power_helpers.cmodified+34−15View file
drivers/gpu/drm/amd/display/modules/vmid/vmid.cmodified+6−2View file
drivers/gpu/drm/amd/pm/amdgpu_pm.cmodified+10−4View file
drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.cmodified+0−3View file
drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.hmodified+1−0View file
drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.cmodified+3−3View file
drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.cmodified+59−11View file
drivers/gpu/drm/amd/pm/swsmu/smu_cmn.cmodified+25−12View file
drivers/gpu/drm/amd/pm/swsmu/smu_cmn.hmodified+9−5View file
drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.cmodified+2−7View file
drivers/gpu/drm/i915/display/intel_psr.cmodified+1−1View file
drivers/gpu/drm/renesas/rcar-du/rcar_du_crtc.cmodified+3−3View file

Only the first 600 diff lines are shown. Download the complete patch.

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c

View file
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index 29b400c..72a5a29 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -1735,7 +1735,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
alloc_flags = 0;
} else {
- alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
+ alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
+ AMDGPU_GEM_CREATE_VRAM_CLEARED;
alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;

drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c

View file
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
index b04fa9f..92c98e9 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
@@ -866,6 +866,7 @@ amdgpu_connector_vga_detect(struct drm_connector *connector, bool force)
if (dret) {
amdgpu_connector->detected_by_load = false;
drm_edid_free(amdgpu_connector->edid);
+ amdgpu_connector->edid = NULL;
amdgpu_connector_get_edid(connector);
if (!amdgpu_connector->edid) {
@@ -882,6 +883,7 @@ amdgpu_connector_vga_detect(struct drm_connector *connector, bool force)
*/
if (amdgpu_connector->use_digital && amdgpu_connector->shared_ddc) {
drm_edid_free(amdgpu_connector->edid);
+ amdgpu_connector->edid = NULL;
ret = connector_status_disconnected;
} else {
ret = connector_status_connected;
@@ -977,6 +979,7 @@ static void amdgpu_connector_shared_ddc(enum drm_connector_status *status,
if (!amdgpu_display_hpd_sense(adev,
amdgpu_connector->hpd.hpd)) {
drm_edid_free(amdgpu_connector->edid);
+ amdgpu_connector->edid = NULL;
*status = connector_status_disconnected;
}
}
@@ -1046,6 +1049,7 @@ amdgpu_connector_dvi_detect(struct drm_connector *connector, bool force)
if (dret) {
amdgpu_connector->detected_by_load = false;
drm_edid_free(amdgpu_connector->edid);
+ amdgpu_connector->edid = NULL;
amdgpu_connector_get_edid(connector);
if (!amdgpu_connector->edid) {
@@ -1062,6 +1066,7 @@ amdgpu_connector_dvi_detect(struct drm_connector *connector, bool force)
*/
if ((!amdgpu_connector->use_digital) && amdgpu_connector->shared_ddc) {
drm_edid_free(amdgpu_connector->edid);
+ amdgpu_connector->edid = NULL;
ret = connector_status_disconnected;
} else {
ret = connector_status_connected;
@@ -1412,6 +1417,7 @@ amdgpu_connector_dp_detect(struct drm_connector *connector, bool force)
}
drm_edid_free(amdgpu_connector->edid);
+ amdgpu_connector->edid = NULL;
if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) ||
(connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) {

drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c

View file
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c
index c72c345..4e6e390 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c
@@ -32,6 +32,8 @@ static const guid_t BOOT = BOOT_TYPE;
static const guid_t CRASHDUMP = AMD_CRASHDUMP;
static const guid_t RUNTIME = AMD_GPU_NONSTANDARD_ERROR;
+#define CPER_SIGNATURE_SZ (sizeof(((struct cper_hdr *)0)->signature))
+
static void __inc_entry_length(struct cper_hdr *hdr, uint32_t size)
{
hdr->record_length += size;
@@ -425,23 +427,40 @@ int amdgpu_cper_generate_ce_records(struct amdgpu_device *adev,
static bool amdgpu_cper_is_hdr(struct amdgpu_ring *ring, u64 pos)
{
- struct cper_hdr *chdr;
+ char signature[CPER_SIGNATURE_SZ];
+
+ if ((pos << 2) >= ring->ring_size)
+ return false;
- chdr = (struct cper_hdr *)&(ring->ring[pos]);
- return strcmp(chdr->signature, "CPER") ? false : true;
+ if ((pos << 2) + CPER_SIGNATURE_SZ <= ring->ring_size) {
+ memcpy(signature, &ring->ring[pos], CPER_SIGNATURE_SZ);
+ } else {
+ u32 chunk = ring->ring_size - (pos << 2);
+
+ memcpy(signature, &ring->ring[pos], chunk);
+ memcpy(signature + chunk, ring->ring, CPER_SIGNATURE_SZ - chunk);
+ }
+
+ return !memcmp(signature, "CPER", CPER_SIGNATURE_SZ);
}
static u32 amdgpu_cper_ring_get_ent_sz(struct amdgpu_ring *ring, u64 pos)
{
- struct cper_hdr *chdr;
+ struct cper_hdr chdr;
u64 p;
u32 chunk, rec_len = 0;
- chdr = (struct cper_hdr *)&(ring->ring[pos]);
chunk = ring->ring_size - (pos << 2);
- if (!strcmp(chdr->signature, "CPER")) {
- rec_len = chdr->record_length;
+ if (amdgpu_cper_is_hdr(ring, pos)) {
+ if (chunk >= sizeof(chdr)) {
+ memcpy(&chdr, &ring->ring[pos], sizeof(chdr));
+ } else {
+ memcpy(&chdr, &ring->ring[pos], chunk);
+ memcpy((u8 *)&chdr + chunk, ring->ring, sizeof(chdr) - chunk);
+ }
+
+ rec_len = chdr.record_length;
goto calc;
}
@@ -450,8 +469,7 @@ static u32 amdgpu_cper_ring_get_ent_sz(struct amdgpu_ring *ring, u64 pos)
goto calc;
for (p = pos + 1; p <= ring->buf_mask; p++) {
- chdr = (struct cper_hdr *)&(ring->ring[p]);
- if (!strcmp(chdr->signature, "CPER")) {
+ if (amdgpu_cper_is_hdr(ring, p)) {
rec_len = (p - pos) << 2;
goto calc;
}

drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c

View file
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
index 3f1cc22..d386bc7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
@@ -464,6 +464,9 @@ static void amdgpu_devcoredump_deferred_work(struct work_struct *work)
struct amdgpu_device *adev = container_of(work, typeof(*adev), coredump_work);
struct amdgpu_coredump_info *coredump = adev->coredump;
+ if (!coredump)
+ goto end;
+
/* Do a one-time preparation of the coredump output because
* repeatingly calling drm_coredump_printer is very slow.
*/
@@ -499,7 +502,7 @@ void amdgpu_coredump(struct amdgpu_device *adev, bool skip_vram_check,
int i, off, idx;
/* No need to generate a new coredump if there's one in progress already. */
- if (work_pending(&adev->coredump_work))
+ if (work_busy(&adev->coredump_work))
return;
if (job && job->pasid)
@@ -511,7 +514,6 @@ void amdgpu_coredump(struct amdgpu_device *adev, bool skip_vram_check,
coredump->skip_vram_check = skip_vram_check;
coredump->reset_vram_lost = vram_lost;
- coredump->pasid = job->pasid;
if (job && job->pasid) {
struct amdgpu_task_info *ti;
@@ -521,6 +523,7 @@ void amdgpu_coredump(struct amdgpu_device *adev, bool skip_vram_check,
coredump->reset_task_info = *ti;
amdgpu_vm_put_task_info(ti);
}
+ coredump->pasid = job->pasid;
coredump->num_ibs = job->num_ibs;
for (i = 0; i < job->num_ibs; ++i) {
coredump->ibs[i].gpu_addr = job->ibs[i].gpu_addr;
@@ -563,7 +566,7 @@ void amdgpu_coredump(struct amdgpu_device *adev, bool skip_vram_check,
coredump->rings[idx].offset = off;
memcpy(&coredump->rings_dw[off], ring->ring, ring->ring_size);
- off += ring->ring_size;
+ off += ring->ring_size / 4;
idx++;
}
coredump->num_rings = idx;

drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

View file
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 584c9ec..737ef1e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -1334,18 +1334,15 @@ static bool amdgpu_device_aspm_support_quirk(struct amdgpu_device *adev)
#if IS_ENABLED(CONFIG_X86)
struct cpuinfo_x86 *c = &cpu_data(0);
- if (!(amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(12, 0, 0) ||
- amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(12, 0, 1)))
- return false;
-
- if (c->x86 == 6 &&
- adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN5) {
+ if (c->x86_vendor == X86_VENDOR_INTEL) {
switch (c->x86_model) {
case VFM_MODEL(INTEL_ALDERLAKE):
case VFM_MODEL(INTEL_ALDERLAKE_L):
case VFM_MODEL(INTEL_RAPTORLAKE):
case VFM_MODEL(INTEL_RAPTORLAKE_P):
case VFM_MODEL(INTEL_RAPTORLAKE_S):
+ case VFM_MODEL(INTEL_TIGERLAKE):
+ case VFM_MODEL(INTEL_TIGERLAKE_L):
return true;
default:
return false;
@@ -5518,8 +5515,6 @@ static void amdgpu_device_recovery_prepare(struct amdgpu_device *adev,
list_add_tail(&tmp_adev->reset_list, device_list);
if (adev->shutdown)
tmp_adev->shutdown = true;
- if (amdgpu_reset_in_dpc(adev))
- tmp_adev->pcie_reset_ctx.in_link_reset = true;
}
if (!list_is_first(&adev->reset_list, device_list))
list_rotate_to_front(&adev->reset_list, device_list);
@@ -6291,6 +6286,9 @@ pci_ers_result_t amdgpu_pci_error_detected(struct pci_dev *pdev, pci_channel_sta
amdgpu_reset_set_dpc_status(adev, true);
mutex_lock(&hive->hive_lock);
+ } else {
+ if (amdgpu_device_bus_status_check(adev))
+ amdgpu_reset_set_dpc_status(adev, true);
}
memset(&reset_context, 0, sizeof(reset_context));
INIT_LIST_HEAD(&device_list);
@@ -6411,6 +6409,7 @@ pci_ers_result_t amdgpu_pci_slot_reset(struct pci_dev *pdev)
list_for_each_entry(tmp_adev, &hive->device_list, gmc.xgmi.head)
tmp_adev->pcie_reset_ctx.in_link_reset = true;
} else {
+ adev->pcie_reset_ctx.in_link_reset = true;
set_bit(AMDGPU_SKIP_HW_RESET, &reset_context.flags);
}
@@ -6467,9 +6466,10 @@ void amdgpu_pci_resume(struct pci_dev *pdev)
tmp_adev->pcie_reset_ctx.in_link_reset = false;
list_add_tail(&tmp_adev->reset_list, &device_list);
}
- } else
+ } else {
+ adev->pcie_reset_ctx.in_link_reset = false;
list_add_tail(&adev->reset_list, &device_list);
-
+ }
amdgpu_device_sched_resume(&device_list, NULL, NULL);
amdgpu_device_gpu_resume(adev, &device_list, false);
amdgpu_device_recovery_put_reset_lock(adev, &device_list);

drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c

View file
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
index 8ec5465..fcad7da 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
@@ -535,10 +535,11 @@ static int amdgpu_discovery_get_table_info(struct amdgpu_device *adev,
*info = &bhdrv2->table_list[table_id];
break;
case 1:
+ case 0:
*info = &bhdr->table_list[table_id];
break;
default:
- dev_err(adev->dev, "Invalid ip discovery table version\n");
+ dev_err(adev->dev, "Invalid ip discovery table version %d\n",bhdr->version_major);
return -EINVAL;
}

drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c

View file
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
index 2956e45..b8ca876 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
@@ -2013,6 +2013,8 @@ static void amdgpu_gfx_sysfs_xcp_fini(struct amdgpu_device *adev)
(xcp_mgr->funcs && xcp_mgr->funcs->switch_partition_mode);
device_remove_file(adev->dev, &dev_attr_current_compute_partition);
+ device_remove_file(adev->dev, &dev_attr_compute_partition_mem_alloc_mode);
+
if (xcp_switch_supported)
device_remove_file(adev->dev,
&dev_attr_available_compute_partition);

drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c

View file
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
index bfca5b0..d5abf78 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
@@ -239,13 +239,12 @@ int amdgpu_userq_input_va_validate(struct amdgpu_device *adev,
u64 size;
int r = 0;
+ /* Caller must hold vm->root.bo reservation */
+ dma_resv_assert_held(queue->vm->root.bo->tbo.base.resv);
+
user_addr = (addr & AMDGPU_GMC_HOLE_MASK) >> AMDGPU_GPU_PAGE_SHIFT;
size = expected_size >> AMDGPU_GPU_PAGE_SHIFT;
- r = amdgpu_bo_reserve(vm->root.bo, false);
- if (r)
- return r;
-
va_map = amdgpu_vm_bo_lookup_mapping(vm, user_addr);
if (!va_map) {
r = -EINVAL;
@@ -255,13 +254,11 @@ int amdgpu_userq_input_va_validate(struct amdgpu_device *adev,
if (user_addr >= va_map->start &&
va_map->last - user_addr + 1 >= size) {
amdgpu_userq_buffer_va_list_add(queue, va_map, user_addr);
- amdgpu_bo_unreserve(vm->root.bo);
return 0;
}
r = -EINVAL;
out_err:
- amdgpu_bo_unreserve(vm->root.bo);
return r;
}
@@ -270,15 +267,13 @@ static bool amdgpu_userq_buffer_va_mapped(struct amdgpu_vm *vm, u64 addr)
struct amdgpu_bo_va_mapping *mapping;
bool r;
- if (amdgpu_bo_reserve(vm->root.bo, false))
- return false;
+ dma_resv_assert_held(vm->root.bo->tbo.base.resv);
mapping = amdgpu_vm_bo_lookup_mapping(vm, addr);
if (!IS_ERR_OR_NULL(mapping) && atomic_read(&mapping->bo_va->userq_va_mapped))
r = true;
else
r = false;
- amdgpu_bo_unreserve(vm->root.bo);
return r;
}
@@ -314,25 +309,21 @@ static int amdgpu_userq_buffer_vas_list_cleanup(struct amdgpu_device *adev,
{
struct amdgpu_userq_va_cursor *va_cursor, *tmp;
struct amdgpu_bo_va_mapping *mapping;
- int r;
- r = amdgpu_bo_reserve(queue->vm->root.bo, false);
- if (r)
- return r;
+ /* Caller must hold vm->root.bo reservation */
+ dma_resv_assert_held(queue->vm->root.bo->tbo.base.resv);
list_for_each_entry_safe(va_cursor, tmp, &queue->userq_va_list, list) {
mapping = amdgpu_vm_bo_lookup_mapping(queue->vm, va_cursor->gpu_addr);
if (!mapping) {
- r = -EINVAL;
- goto err;
+ return -EINVAL;
}
dev_dbg(adev->dev, "delete the userq:%p va:%llx\n",
queue, va_cursor->gpu_addr);
amdgpu_userq_buffer_va_list_del(mapping, va_cursor);
}
-err:
- amdgpu_bo_unreserve(queue->vm->root.bo);
- return r;
+
+ return 0;
}
static int amdgpu_userq_preempt_helper(struct amdgpu_usermode_queue *queue)
@@ -446,8 +437,6 @@ static void amdgpu_userq_cleanup(struct amdgpu_usermode_queue *queue)
/* Wait for mode-1 reset to complete */
down_read(&adev->reset_domain->sem);
- /* Drop the userq reference. */
- amdgpu_userq_buffer_vas_list_cleanup(adev, queue);
uq_funcs->mqd_destroy(queue);
/* Use interrupt-safe locking since IRQ handlers may access these XArrays */
xa_erase_irq(&adev->userq_doorbell_xa, queue->doorbell_index);
@@ -455,11 +444,19 @@ static void amdgpu_userq_cleanup(struct amdgpu_usermode_queue *queue)
queue->fence_drv = NULL;
queue->userq_mgr = NULL;
list_del(&queue->userq_va_list);
- kfree(queue);
up_read(&adev->reset_domain->sem);
}
+/**
+ * amdgpu_userq_ensure_ev_fence - ensure a valid, unsignaled eviction fence exists
+ * @uq_mgr: the usermode queue manager for this process
+ * @evf_mgr: the eviction fence manager to check and rearm
+ *
+ * Ensures that a valid and not yet signaled eviction fence is attached to the
+ * usermode queue before any queue operations proceed. If it is signalled, then
+ * rearm a new eviction fence.
+ */
void
amdgpu_userq_ensure_ev_fence(struct amdgpu_userq_mgr *uq_mgr,
struct amdgpu_eviction_fence_mgr *evf_mgr)
@@ -619,6 +616,9 @@ static int
amdgpu_userq_destroy(struct amdgpu_userq_mgr *uq_mgr, struct amdgpu_usermode_queue *queue)
{
struct amdgpu_device *adev = uq_mgr->adev;
+ struct amdgpu_fpriv *fpriv = uq_mgr_to_fpriv(uq_mgr);
+ struct amdgpu_vm *vm = &fpriv->vm;
+
int r = 0;
cancel_delayed_work_sync(&uq_mgr->resume_work);
@@ -626,38 +626,44 @@ amdgpu_userq_destroy(struct amdgpu_userq_mgr *uq_mgr, struct amdgpu_usermode_que
/* Cancel any pending hang detection work and cleanup */
cancel_delayed_work_sync(&queue->hang_detect_work);
+ r = amdgpu_bo_reserve(vm->root.bo, false);
+ if (r) {
+ drm_file_err(uq_mgr->file, "Failed to reserve root bo during userqueue destroy\n");
+ return r;
+ }
+ amdgpu_userq_buffer_vas_list_cleanup(adev, queue);
+ amdgpu_bo_unreserve(vm->root.bo);
+
mutex_lock(&uq_mgr->userq_mutex);
queue->hang_detect_fence = NULL;
amdgpu_userq_wait_for_last_fence(queue);
- r = amdgpu_bo_reserve(queue->db_obj.obj, true);
- if (!r) {
- amdgpu_bo_unpin(queue->db_obj.obj);
- amdgpu_bo_unreserve(queue->db_obj.obj);
- }
- amdgpu_bo_unref(&queue->db_obj.obj);
-
- r = amdgpu_bo_reserve(queue->wptr_obj.obj, true);
- if (!r) {
- amdgpu_bo_unpin(queue->wptr_obj.obj);
- amdgpu_bo_unreserve(queue->wptr_obj.obj);
- }
- amdgpu_bo_unref(&queue->wptr_obj.obj);
-
- atomic_dec(&uq_mgr->userq_count[queue->queue_type]);
#if defined(CONFIG_DEBUG_FS)
debugfs_remove_recursive(queue->debugfs_queue);
#endif
amdgpu_userq_detect_and_reset_queues(uq_mgr);
r = amdgpu_userq_unmap_helper(queue);
/*TODO: It requires a reset for userq hw unmap error*/
- if (unlikely(r != AMDGPU_USERQ_STATE_UNMAPPED)) {
+ if (r) {
drm_warn(adev_to_drm(uq_mgr->adev), "trying to destroy a HW mapping userq\n");
queue->state = AMDGPU_USERQ_STATE_HUNG;
}
+
+ atomic_dec(&uq_mgr->userq_count[queue->queue_type]);
amdgpu_userq_cleanup(queue);
mutex_unlock(&uq_mgr->userq_mutex);
+ amdgpu_bo_reserve(queue->db_obj.obj, true);
+ amdgpu_bo_unpin(queue->db_obj.obj);
+ amdgpu_bo_unreserve(queue->db_obj.obj);
+ amdgpu_bo_unref(&queue->db_obj.obj);
+
+ amdgpu_bo_reserve(queue->wptr_obj.obj, true);
+ amdgpu_bo_unpin(queue->wptr_obj.obj);
+ amdgpu_bo_unreserve(queue->wptr_obj.obj);
+ amdgpu_bo_unref(&queue->wptr_obj.obj);
+ kfree(queue);
+
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
return r;
@@ -730,35 +736,25 @@ amdgpu_userq_create(struct drm_file *filp, union drm_amdgpu_userq *args)
if (r)
return r;
- r = pm_runtime_get_sync(adev_to_drm(adev)->dev);
+ r = pm_runtime_resume_and_get(adev_to_drm(adev)->dev);
if (r < 0) {
- drm_file_err(uq_mgr->file, "pm_runtime_get_sync() failed for userqueue create\n");
- pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
+ drm_file_err(uq_mgr->file, "pm_runtime_resume_and_get() failed for userqueue create\n");
return r;
}
- /*
- * There could be a situation that we are creating a new queue while
- * the other queues under this UQ_mgr are suspended. So if there is any
- * resume work pending, wait for it to get done.
- *
- * This will also make sure we have a valid eviction fence ready to be used.
- */
- amdgpu_userq_ensure_ev_fence(&fpriv->userq_mgr, &fpriv->evf_mgr);
-
uq_funcs = adev->userq_funcs[args->in.ip_type];
if (!uq_funcs) {
drm_file_err(uq_mgr->file, "Usermode queue is not supported for this IP (%u)\n",
args->in.ip_type);
r = -EINVAL;
- goto unlock;
+ goto err_pm_runtime;
}
queue = kzalloc_obj(struct amdgpu_usermode_queue);
if (!queue) {
drm_file_err(uq_mgr->file, "Failed to allocate memory for queue\n");
r = -ENOMEM;
- goto unlock;
+ goto err_pm_runtime;
}
INIT_LIST_HEAD(&queue->userq_va_list);
@@ -773,20 +769,27 @@ amdgpu_userq_create(struct drm_file *filp, union drm_amdgpu_userq *args)
db_info.doorbell_offset = args->in.doorbell_offset;
queue->userq_mgr = uq_mgr;
+
/* Validate the userq virtual address.*/
+ r = amdgpu_bo_reserve(fpriv->vm.root.bo, false);
+ if (r)
+ goto free_queue;
+
if (amdgpu_userq_input_va_validate(adev, queue, args->in.queue_va, args->in.queue_size) ||
amdgpu_userq_input_va_validate(adev, queue, args->in.rptr_va, AMDGPU_GPU_PAGE_SIZE) ||
amdgpu_userq_input_va_validate(adev, queue, args->in.wptr_va, AMDGPU_GPU_PAGE_SIZE)) {
r = -EINVAL;
- goto free_queue;
+ amdgpu_bo_unreserve(fpriv->vm.root.bo);
+ goto clean_mapping;
}
+ amdgpu_bo_unreserve(fpriv->vm.root.bo);
/* Convert relative doorbell offset into absolute doorbell index */
index = amdgpu_userq_get_doorbell_index(uq_mgr, &db_info, filp);
if (index == (uint64_t)-EINVAL) {
drm_file_err(uq_mgr->file, "Failed to get doorbell for queue\n");
r = -EINVAL;
- goto free_queue;
+ goto clean_mapping;
}
queue->doorbell_index = index;
@@ -794,7 +797,7 @@ amdgpu_userq_create(struct drm_file *filp, union drm_amdgpu_userq *args)
r = amdgpu_userq_fence_driver_alloc(adev, &queue->fence_drv);
if (r) {
drm_file_err(uq_mgr->file, "Failed to alloc fence driver\n");
- goto free_queue;
+ goto clean_mapping;
}
r = uq_funcs->mqd_create(queue, &args->in);
@@ -803,6 +806,8 @@ amdgpu_userq_create(struct drm_file *filp, union drm_amdgpu_userq *args)
goto clean_fence_driver;
}
+ amdgpu_userq_ensure_ev_fence(&fpriv->userq_mgr, &fpriv->evf_mgr);
+
/* don't map the queue if scheduling is halted */
if (adev->userq_halt_for_enforce_isolation &&
((queue->queue_type == AMDGPU_HW_IP_GFX) ||
@@ -814,7 +819,6 @@ amdgpu_userq_create(struct drm_file *filp, union drm_amdgpu_userq *args)
r = amdgpu_userq_map_helper(queue);
if (r) {
drm_file_err(uq_mgr->file, "Failed to map Queue\n");
- down_read(&adev->reset_domain->sem);
goto clean_mqd;
}
}
@@ -830,9 +834,8 @@ amdgpu_userq_create(struct drm_file *filp, union drm_amdgpu_userq *args)
if (r) {
if (!skip_map_queue)
amdgpu_userq_unmap_helper(queue);
-
r = -ENOMEM;
- goto clean_mqd;
+ goto clean_reset_domain;
}
r = xa_err(xa_store_irq(&adev->userq_doorbell_xa, index, queue, GFP_KERNEL));
@@ -840,8 +843,7 @@ amdgpu_userq_create(struct drm_file *filp, union drm_amdgpu_userq *args)
xa_erase(&uq_mgr->userq_xa, qid);
if (!skip_map_queue)
amdgpu_userq_unmap_helper(queue);
-
- goto clean_mqd;
+ goto clean_reset_domain;
}
up_read(&adev->reset_domain->sem);
@@ -853,16 +855,21 @@ amdgpu_userq_create(struct drm_file *filp, union drm_amdgpu_userq *args)
mutex_unlock(&uq_mgr->userq_mutex);
return 0;
+clean_reset_domain:
+ up_read(&adev->reset_domain->sem);
clean_mqd:
+ mutex_unlock(&uq_mgr->userq_mutex);
uq_funcs->mqd_destroy(queue);
- up_read(&adev->reset_domain->sem);
clean_fence_driver:
amdgpu_userq_fence_driver_free(queue);
+clean_mapping:
+ amdgpu_bo_reserve(fpriv->vm.root.bo, true);
+ amdgpu_userq_buffer_vas_list_cleanup(adev, queue);
+ amdgpu_bo_unreserve(fpriv->vm.root.bo);
free_queue:
kfree(queue);

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdgpu/amdgpu_vm_cpu.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdgpu/mes_userqueue.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdgpu/mes_v12_1.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdgpu/nbif_v6_3_1.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdgpu/psp_v15_0.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdkfd/kfd_chardev.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdkfd/kfd_priv.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/amdkfd/kfd_topology.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_ism.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/core/dc_resource.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dc.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dc_dsc.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dc_stream.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dc_types.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dm_helpers.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml/dcn20/dcn20_fpu.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml/dcn20/dcn20_fpu.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml/dcn31/dcn31_fpu.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml/dcn31/dcn31_fpu.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_core.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_util.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_translation_helper.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_utils.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_wrapper.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/dml21_wrapper_fpu.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/inc/bounding_boxes/dcn42_soc_bb.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/inc/dml_top_display_cfg_types.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_dcn4.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_dcn4_calcs.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_shared_types.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_utils.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_utils.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_dpmm/dml2_dpmm_dcn4.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_dpmm/dml2_dpmm_factory.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_mcg/dml2_mcg_factory.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_pmo/dml2_pmo_dcn42.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_pmo/dml2_pmo_dcn42.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_pmo/dml2_pmo_dcn4_fams2.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_pmo/dml2_pmo_dcn4_fams2.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_pmo/dml2_pmo_factory.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_standalone_libraries/lib_float_math.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_top/dml2_top_soc15.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml2_dc_resource_mgmt.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml2_translation_helper.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml2_utils.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml2_wrapper.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml2_wrapper_fpu.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dml2_0/dml_display_rq_dlg_calc.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dsc/dcn20/dcn20_dsc.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dsc/dcn35/dcn35_dsc.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/dsc/dcn401/dcn401_dsc.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/link/link_detection.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/link/link_dpms.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/resource/dcn21/dcn21_resource.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/resource/dcn31/dcn31_resource.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/resource/dcn315/dcn315_resource.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/resource/dcn316/dcn316_resource.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/dc/soc_and_ip_translator/dcn42/dcn42_soc_and_ip_translator.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/include/ddc_service_types.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/modules/freesync/freesync.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/modules/power/power_helpers.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/display/modules/vmid/vmid.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/pm/amdgpu_pm.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/pm/swsmu/smu_cmn.h

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/i915/display/intel_psr.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpu/drm/renesas/rcar-du/rcar_du_crtc.c

View file

This diff is incomplete. Download the complete patch.