Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp1033411rwb; Sat, 1 Oct 2022 13:39:17 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5aoY854DhGNjIxfZ3AZ67LoBp6UcNRxAfvlxLW59z/gJO+GCl6QKin+ddCpWqeYL2hhvo/ X-Received: by 2002:a17:907:6e87:b0:782:2d55:f996 with SMTP id sh7-20020a1709076e8700b007822d55f996mr10790248ejc.502.1664656757102; Sat, 01 Oct 2022 13:39:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664656757; cv=none; d=google.com; s=arc-20160816; b=e8xOiCfuM7dJmpPhAk/zExxRlx+JpkXbkC5dFaYugEq74slkmJKI7/fPDtYbOJTam0 kkVGDZwdTePUEorEBmJZ+9FZL6CdW897u8ycUz64GfeYcnRZdmGH9fpcn2zHeXix4Hzk J+SD00fCp4acZkBvALBo2J8XSFHqVe8okqLoVHOO5vADUMe7GJkjVL//fc7uV2l4tddX fyOo0JDyjbuLJ42C/SJCb4L3BO+anF8ZYXl74sVS+QqA2gbKPLuHsGKzkKXIY0woC0FQ zRMCr6xmFMWzj8z8z72HHOlX40h7YfnBBbQp0oTQxmFLxqhpu4lvnMS+zSvhdJr5mLUW NTOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:mail-followup-to:message-id:subject:cc:to:from:date; bh=ARPFAoRsGC6XeycM2yB3Lghl87gLc2h/5/wqmkIdPk8=; b=VvZlcT32D52jQxFd5/xwhft1g/5F8Xm51B42dMBG6bpgK68KSt8EZOe6tR00v6bj/4 Kb8vON2P+qfPQexIBoG0VaSH+rTCSt9O45c3WROJ/liFK2dPuaaAfWWVMtE/R8SrYNRA JXRv0Kq2b9+qTqlnmZhoBh5gzaGJLTgAR1uwjuia7CHCACcTUk2AKz2rN3V41WbM57mF etBDff6FBCOT7ynY8tvdhA5HriYvpWI6DS1+mtfP3JVhPvWqeGCQSoJHLsPVd9gTuliX 7lBcon1UJL3fpWpyirUvKK/0NpBx1LdvowveYvI9VdWUO6AhNyxrnp/31tsfEMJRSeek RSRQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id r18-20020a170906549200b007809c50fd78si4354483ejo.262.2022.10.01.13.38.47; Sat, 01 Oct 2022 13:39:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229672AbiJAUXU (ORCPT + 99 others); Sat, 1 Oct 2022 16:23:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229651AbiJAUXR (ORCPT ); Sat, 1 Oct 2022 16:23:17 -0400 Received: from relay04.th.seeweb.it (relay04.th.seeweb.it [5.144.164.165]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0E52E3C8C2 for ; Sat, 1 Oct 2022 13:23:16 -0700 (PDT) Received: from SoMainline.org (94-209-172-39.cable.dynamic.v4.ziggo.nl [94.209.172.39]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by m-r1.th.seeweb.it (Postfix) with ESMTPSA id A6E70200A7; Sat, 1 Oct 2022 22:23:14 +0200 (CEST) Date: Sat, 1 Oct 2022 22:23:13 +0200 From: Marijn Suijten To: phone-devel@vger.kernel.org, Rob Clark , Dmitry Baryshkov , Vinod Koul Cc: ~postmarketos/upstreaming@lists.sr.ht, AngeloGioacchino Del Regno , Konrad Dybcio , Martin Botka , Jami Kettunen , David Airlie , Daniel Vetter , Abhinav Kumar , Sean Paul , Thomas Zimmermann , Javier Martinez Canillas , Alex Deucher , Douglas Anderson , Vladimir Lypak , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Lyude Paul Subject: Re: [PATCH 5/5] drm/dsc: Prevent negative BPG offsets from shadowing adjacent bitfields Message-ID: <20221001202313.fkdsv5ul4v6akhc3@SoMainline.org> Mail-Followup-To: Marijn Suijten , phone-devel@vger.kernel.org, Rob Clark , Dmitry Baryshkov , Vinod Koul , ~postmarketos/upstreaming@lists.sr.ht, AngeloGioacchino Del Regno , Konrad Dybcio , Martin Botka , Jami Kettunen , David Airlie , Daniel Vetter , Abhinav Kumar , Sean Paul , Thomas Zimmermann , Javier Martinez Canillas , Alex Deucher , Douglas Anderson , Vladimir Lypak , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Lyude Paul References: <20221001190807.358691-1-marijn.suijten@somainline.org> <20221001190807.358691-6-marijn.suijten@somainline.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20221001190807.358691-6-marijn.suijten@somainline.org> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2022-10-01 21:08:07, Marijn Suijten wrote: > msm's dsi_host specifies negative BPG offsets which fill the full 8 bits > of a char thanks to two's complement: this however results in those bits > bleeding into the next parameter when the field is only expected to > contain 6-bit wide values. > As a consequence random slices appear corrupted on-screen (tested on a > Sony Tama Akatsuki device with sdm845). > > Use AND operators to limit all values that constitute the RC Range > parameter fields to their expected size. > > Fixes: b9080324d6ca ("drm/msm/dsi: add support for dsc data") > Signed-off-by: Marijn Suijten > --- > drivers/gpu/drm/display/drm_dsc_helper.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/display/drm_dsc_helper.c b/drivers/gpu/drm/display/drm_dsc_helper.c > index c869c6e51e2b..2e7ef242685d 100644 > --- a/drivers/gpu/drm/display/drm_dsc_helper.c > +++ b/drivers/gpu/drm/display/drm_dsc_helper.c > @@ -243,11 +243,11 @@ void drm_dsc_pps_payload_pack(struct drm_dsc_picture_parameter_set *pps_payload, > */ > for (i = 0; i < DSC_NUM_BUF_RANGES; i++) { > pps_payload->rc_range_parameters[i] = > - cpu_to_be16((dsc_cfg->rc_range_params[i].range_min_qp << > + cpu_to_be16(((dsc_cfg->rc_range_params[i].range_min_qp & 0x1f) << > DSC_PPS_RC_RANGE_MINQP_SHIFT) | > - (dsc_cfg->rc_range_params[i].range_max_qp << > + ((dsc_cfg->rc_range_params[i].range_max_qp & 0x1f) << > DSC_PPS_RC_RANGE_MAXQP_SHIFT) | > - (dsc_cfg->rc_range_params[i].range_bpg_offset)); > + (dsc_cfg->rc_range_params[i].range_bpg_offset & 0x3f)); Pre-empting the reviews: I was contemplating whether to use FIELD_PREP here, given that it's not yet used anywhere else in this file. For that I'd remove the existing _SHIFT definitions and replace them with: #define DSC_PPS_RC_RANGE_MINQP_MASK GENMASK(15, 11) #define DSC_PPS_RC_RANGE_MAXQP_MASK GENMASK(10, 6) #define DSC_PPS_RC_RANGE_BPG_OFFSET_MASK GENMASK(5, 0) And turn this section of code into: cpu_to_be16(FIELD_PREP(DSC_PPS_RC_RANGE_MINQP_MASK, dsc_cfg->rc_range_params[i].range_min_qp) | FIELD_PREP(DSC_PPS_RC_RANGE_MAXQP_MASK, dsc_cfg->rc_range_params[i].range_max_qp) | FIELD_PREP(DSC_PPS_RC_RANGE_BPG_OFFSET_MASK, dsc_cfg->rc_range_params[i].range_bpg_offset)); Is that okay/recommended? - Marijn > } > > /* PPS 88 */ > -- > 2.37.3 >