From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3655D355F49 for ; Mon, 13 Jul 2026 19:33:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783971238; cv=none; b=dqE+9FvKmyCMUaFozzf7BWfREctgcWst9RjWN+r5jTOcbd58jQVpMRnl7jVe0btuk9RX1CDt1HudvcZwqe/h6kyMA3tNrEJagL3xiBKeQB31HqiKad1EggHQbh4+BrZmDy/HcavMgW52fIuJXIFFLBLg11Shwk7EE9MkmEwbjyw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783971238; c=relaxed/simple; bh=HUhqoaJnHU6x9vCPbTNcjqIltV0Z094DVR0us6Llrj4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=VU5vL7KfKWnlgB6nMDbJSuQXOV2fDRKF5BneLoV0CBlRzm5mD5p/4FmPN4CeIHoI8jojJfmIwA7C/uu+f+cRE7lXfkCgXQoTrc6FXIyGUyhrfKJJQ5NvMRBUUIo8jQUEaIgS5BlnztZaJs1Up2IWXif4zU1J1U0SpmHfSu7MHnI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=I0VhwMIQ; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="I0VhwMIQ" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-47c6e9a694bso1986358f8f.1 for ; Mon, 13 Jul 2026 12:33:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783971235; x=1784576035; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=fva3fNs5KHsr7s0cnZc7nNvHW+HXrMU/GnXk6nCiZ1U=; b=I0VhwMIQUWLMJntfEnqqvuBxLpyj0Ggr11k36lu1Yru8LvAVMSvCLnBokw47E+92di LkIgg16ulDSzz+SnZTIRz9N6an/GfKCPh6/V7XXBS7ad5JarLiudHtrIZTdPOuCawagA 2/vIEzoNl4EN8mEXCbCmY79ZHZrhgZwN6mOD088OBSD8qYmlM8xDKpcMjBVMCgMZZOE0 2MsktTAufd+LQpT09HPSuKAPVE9kfzXG8WOLKCdXA7c6CqWMWY0cHASTDSCbwnGT+mq0 icpznoO7RXzqe32lQkokkCeFYjq/DaIPdQ3SWgJkQh384DlX/7z6T9AvAj1Yrp1Tn5bS U80w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783971235; x=1784576035; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=fva3fNs5KHsr7s0cnZc7nNvHW+HXrMU/GnXk6nCiZ1U=; b=naDgF1yWYP5X5zmV2g87e0fwD54fn9N2kKQt6fQPntt6aWWNt4lRqitgOYGgpXqk+3 VEfrJIHNONCLgd6ngmcWPUs3ciO6GR4pyOcjIk36v67NZveJbE3E6dRY8LxrOlu3EE93 Ax3vxQ8OpkrRA26VNLEpI1rNwEL74h7IcxnD04LIWvk7UPFJI6/o8BYN5M9E/R6lyNwE 7z8HWFbkyPz5D/B57IcWCd4XmY3heJU6keDa6cz/tvJtCS2gKhIxSE8Z9w2bvR3yz5nZ Va89Vi3GY8toPaC4MJ9SDPskTnJkK96BbyXdHuKBqNCXLFamHmBo9RUYIz90xqAj5iXE I8Eg== X-Forwarded-Encrypted: i=1; AHgh+RqvJhw33fFxEnxVz4zh8Q/jO6zL3slGaZQNgM4YImbMMKeKvS13h1mvHsx1wwuhW1o0PJ0EFjFwKP6ac8Q=@vger.kernel.org X-Gm-Message-State: AOJu0YxikQV5xrwKD0uP8bMu/eq0cntcr+2T4mjf+p5P59ZCZbKFPyVZ WwXsJCG6Vm1HuayuspnAH/0IgujGXlGcBhNy2uQeELxL/P699cB4RuSs X-Gm-Gg: AfdE7cmDzBA4P1/pwuYcnQj436ezdOaHMH7naK1KGm9u/Wy4jd3fKs+uToanCAFH9rT JKOM3RjjHIFRQWC2drwAXhWrfk8eE44/LPV0Hrq8SCx2wHBxBzMW67YS63nB6N8USv5Gw68dscz 6rPF+cUcBcFeay62U/vW5dW1G71ap1GkcTF2WBIUa5J2hP6urYhSxKzsx+x+aZiSipSRmZ1U8kG uzmXc3dLMFlAjTFJkGDSG5s3ICpn7huY78o5uUnLKwi8UPzOMRz9ZL33nuU7Fr4FW+0rGLM/Dqn Cycm+TujPoMqRdRrh3fpe2p9amisp8YwOFryyvzo6yVVFPSbTJljlQS+YLlWa7qY6v4KxsrfPUI YwaVpDA36wZoHRptkFCB8+h1H8XpKf0LjN91VfO4ljZYd48zCx1PP32HFpLw8JfpdChpyTLu4PB 2BIfFP/8gxjIDDphv7J0NDmg6O9MRa X-Received: by 2002:a05:6000:24c9:b0:47a:1f6b:ddb8 with SMTP id ffacd0b85a97d-47f2dcf4294mr12197284f8f.39.1783971235502; Mon, 13 Jul 2026 12:33:55 -0700 (PDT) Received: from timo-z13.fritz.box ([193.30.163.202]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f4634e0d9sm1912993f8f.2.2026.07.13.12.33.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 12:33:55 -0700 (PDT) From: =?UTF-8?q?Timo=20Pr=C3=B6mer?= To: Harry Wentland , Leo Li , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , David Airlie , Simona Vetter Cc: Rodrigo Siqueira , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Timoyoungster Subject: [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count() instead of raw extensions Date: Mon, 13 Jul 2026 21:32:37 +0200 Message-ID: <20260713193237.2639-3-timo.proemer04@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260713193237.2639-1-timo.proemer04@gmail.com> References: <20260713193237.2639-1-timo.proemer04@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Timoyoungster Instead of manually calculating the EDID block count by reading the extensions field from the raw edid structure (`edid->extensions + 1`), utilize the core DRM helper `drm_edid_block_count()`. This now includes possible HF-EEODB extension blocks, which are not included in `edid->extensions` and were previously truncated with the `memmove`. Signed-off-by: Timo Prömer --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c index c6f94eb71..d6d6ea719 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c @@ -1160,6 +1160,7 @@ enum dc_edid_status dm_helpers_read_local_edid( struct drm_connector *connector = &aconnector->base; struct i2c_adapter *ddc; int retry = 25; + int block_count; enum dc_edid_status edid_status = EDID_NO_RESPONSE; const struct drm_edid *drm_edid; const struct edid *edid; @@ -1201,11 +1202,15 @@ enum dc_edid_status dm_helpers_read_local_edid( continue; edid = drm_edid_raw(drm_edid); // FIXME: Get rid of drm_edid_raw() - if (!edid || - edid->extensions >= sizeof(sink->dc_edid.raw_edid) / EDID_LENGTH) + if (!edid) return EDID_BAD_INPUT; - sink->dc_edid.length = EDID_LENGTH * (edid->extensions + 1); + block_count = drm_edid_block_count(drm_edid); + + if (block_count > sizeof(sink->dc_edid.raw_edid) / EDID_LENGTH) + return EDID_BAD_INPUT; + + sink->dc_edid.length = EDID_LENGTH * block_count; memmove(sink->dc_edid.raw_edid, (uint8_t *)edid, sink->dc_edid.length); /* We don't need the original edid anymore */ -- 2.55.0