From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.0la.ch (mail.0la.ch [78.47.82.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3BB40303CBD for ; Wed, 26 Nov 2025 14:50:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=78.47.82.197 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764168628; cv=none; b=I1GXCDjVcsc/VciF2w9He25M9TsPAHgyGqFp7TM+o1ESN8jNQZSvdfuRNWXB33ch9oR/GMJdfnLNX0lsz6q7qJjZPkqwtGCjn9CX8oJ05ZcH9gvKYNswVdBWk3WTbyir711dQn+MCZR7beaf6YE1xrL3JrCneMHVAHBzX0P36EA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764168628; c=relaxed/simple; bh=aiZ8q7rMQr7HOHK05FqQG/vOPLIYi9Lu/naIzPiEYns=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=WzvJSw0wY7bPvwD/51/r/iq3kRX+58/8Cue+7SeGpmicemFg+3Z3pC77zQuQ8meran9cMgMxeFvJiQoAfIkOwR8sIysk+m/TtUqOACb4/Qej7zLvmbRN7HiSgYaWDaPeJ2Fr0Gp8rQS9MHAqIplDFl6FGMhEYrX+dVdegh1eD6o= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=0la.ch; spf=pass smtp.mailfrom=0la.ch; dkim=pass (2048-bit key) header.d=0la.ch header.i=@0la.ch header.b=cIg3mvHR; dkim=permerror (0-bit key) header.d=0la.ch header.i=@0la.ch header.b=BCcIxRta; arc=none smtp.client-ip=78.47.82.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=0la.ch Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=0la.ch Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=0la.ch header.i=@0la.ch header.b="cIg3mvHR"; dkim=permerror (0-bit key) header.d=0la.ch header.i=@0la.ch header.b="BCcIxRta" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=0la.ch; c=relaxed/relaxed; h=From:To:Subject:Date:Message-ID; t=1764168619; bh=bTKuWUkJZo/5pOFWX2Jts3L Ka9RbupFqmAGRIjK8R3M=; b=cIg3mvHRk+bn2ysZz/yneq3ScHhMbdOzY7qoRC2ggWDRKfPhLK tA5b3wsBQYKbjwgooDXA0nmt/e56FnM3r/srRSkK03F+78RyB/B7RvAfKqfSyNG/kPQYSfGSZjp Jus8c9TTGA438gkPsOLe7nHICDW/qLFK3XCzfjRzt9hcz9FkjYB1jmzHTbvWuup2VDvVMjszjTF BeejjUnIFz9A5kd/6WUigUVwcDogTP6+L3uNVXlCiPdSzIA1//RB+qqw2R78x0/yxyIg84F0EuT Yl5bXeNnzjMQuBwZsXggEdh3J7OHpWnNIMH8GC0m+IYXspHAekNda6Zo5yFikZ8gu3A==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=0la.ch; c=relaxed/relaxed; h=From:To:Subject:Date:Message-ID; t=1764168619; bh=bTKuWUkJZo/5pOFWX2Jts3L Ka9RbupFqmAGRIjK8R3M=; b=BCcIxRtaqZXVxNeY6hG4dVg/XaKsBcYIzUHcr2VZLyC++/9LoP 5trcQ+lZyq4XYE51kogKekJCuEXrm097f8BA==; Message-ID: Date: Wed, 26 Nov 2025 15:50:18 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v6 2/7] drm/edid: prepare for VESA vendor-specific data block extension To: Jani Nikula , Yaroslav Bolyukin , =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?UTF-8?Q?Christian_K=C3=B6nig?= , Wayne Lin , amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org References: <20251126065126.54016-1-iam@lach.pw> <20251126065126.54016-3-iam@lach.pw> <68c55e772424f8e001898cdd1edcf4856820461e@intel.com> Content-Language: en-US From: Yaroslav In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2025-11-26 15:08, Jani Nikula wrote: > On Wed, 26 Nov 2025, Jani Nikula wrote: >> On Wed, 26 Nov 2025, Yaroslav Bolyukin wrote: >>> Current VESA vendor-specific block parsing expects real block size to be >>> the same as the defined struct size, use real offsets in conditionals >>> instead to add struct fields in future commits. >>> >>> Signed-off-by: Yaroslav Bolyukin >> >> I think this is something we want to backport, since MSO would break >> with bigger vendor-specific blocks, and that leads to black screens on >> MSO displays. >> >> Cc: stable@vger.kernel.org >> Reviewed-by: Jani Nikula > > Oops, I'll take that back. > >> >>> --- >>> drivers/gpu/drm/drm_edid.c | 28 ++++++++++++---------------- >>> 1 file changed, 12 insertions(+), 16 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c >>> index 64f7a94dd9e4..a52fd6de9327 100644 >>> --- a/drivers/gpu/drm/drm_edid.c >>> +++ b/drivers/gpu/drm/drm_edid.c >>> @@ -6544,7 +6544,7 @@ static void drm_parse_vesa_specific_block(struct drm_connector *connector, >>> if (oui(vesa->oui[0], vesa->oui[1], vesa->oui[2]) != VESA_IEEE_OUI) >>> return; >>> >>> - if (sizeof(*vesa) != sizeof(*block) + block->num_bytes) { >>> + if (block->num_bytes < 5) { >>> drm_dbg_kms(connector->dev, >>> "[CONNECTOR:%d:%s] Unexpected VESA vendor block size\n", >>> connector->base.id, connector->name); >>> @@ -6567,24 +6567,20 @@ static void drm_parse_vesa_specific_block(struct drm_connector *connector, >>> break; >>> } >>> >>> - if (!info->mso_stream_count) { >>> - info->mso_pixel_overlap = 0; > > This is no longer cleared for !info->mso_stream_count. > > Perhaps the code could be reorganized to handle it better. It defaults to zero due to drm_reset_display_info() >>> - return; >>> - } >>> - >>> - info->mso_pixel_overlap = FIELD_GET(DISPLAYID_VESA_MSO_OVERLAP, vesa->mso); >>> - if (info->mso_pixel_overlap > 8) { >>> + if (info->mso_stream_count) { >>> + info->mso_pixel_overlap = FIELD_GET(DISPLAYID_VESA_MSO_OVERLAP, vesa->mso); >>> + if (info->mso_pixel_overlap > 8) { >>> + drm_dbg_kms(connector->dev, >>> + "[CONNECTOR:%d:%s] Reserved MSO pixel overlap value %u\n", >>> + connector->base.id, connector->name, >>> + info->mso_pixel_overlap); >>> + info->mso_pixel_overlap = 8; >>> + } >>> drm_dbg_kms(connector->dev, >>> - "[CONNECTOR:%d:%s] Reserved MSO pixel overlap value %u\n", >>> + "[CONNECTOR:%d:%s] MSO stream count %u, pixel overlap %u\n", >>> connector->base.id, connector->name, >>> - info->mso_pixel_overlap); >>> - info->mso_pixel_overlap = 8; >>> + info->mso_stream_count, info->mso_pixel_overlap); >>> } >>> - >>> - drm_dbg_kms(connector->dev, >>> - "[CONNECTOR:%d:%s] MSO stream count %u, pixel overlap %u\n", >>> - connector->base.id, connector->name, >>> - info->mso_stream_count, info->mso_pixel_overlap); >>> } >>> >>> static void drm_update_vesa_specific_block(struct drm_connector *connector, >