Re: [Freedreno] [PATCH] drm/msm/dsi: Implement reset correctly
On Thu, Oct 10, 2019 at 12:49 PM Sean Paul wrote: > > On Thu, Oct 10, 2019 at 2:45 PM Sean Paul wrote: > > > > On Wed, Oct 09, 2019 at 02:34:54PM -0700, Jeffrey Hugo wrote: > > > On msm8998, vblank timeouts are observed because the DSI controller is not > > > reset properly, which ends up stalling the MDP. This is because the reset > > > logic is not correct per the hardware documentation. > > > > > > The documentation states that after asserting reset, software should wait > > > some time (no indication of how long), or poll the status register until > > > it > > > returns 0 before deasserting reset. > > > > > > wmb() is insufficient for this purpose since it just ensures ordering, not > > > timing between writes. Since asserting and deasserting reset occurs on > > > the > > > same register, ordering is already guaranteed by the architecture, making > > > the wmb extraneous. > > > > > > Since we would define a timeout for polling the status register to avoid a > > > possible infinite loop, lets just use a static delay of 20 ms, since > > > 16.666 > > > ms is the time available to process one frame at 60 fps. > > > > > > Fixes: a689554ba6ed (drm/msm: Initial add DSI connector support) > > > Signed-off-by: Jeffrey Hugo > > > --- > > > > > > Rob et al, is it possible for this to go into a 5.4-rc? > > Sorry, I missed this on the first go-around, I'm Ok with this getting > into 5.4. Rob, if you're Ok with this, I can send it through -misc > unless you're planning an msm-fixes PR. > > > > > > > drivers/gpu/drm/msm/dsi/dsi_host.c | 4 ++-- > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c > > > b/drivers/gpu/drm/msm/dsi/dsi_host.c > > > index 663ff9f4fac9..68ded9b4735d 100644 > > > --- a/drivers/gpu/drm/msm/dsi/dsi_host.c > > > +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c > > > @@ -986,7 +986,7 @@ static void dsi_sw_reset(struct msm_dsi_host > > > *msm_host) > > > wmb(); /* clocks need to be enabled before reset */ > > > > > > dsi_write(msm_host, REG_DSI_RESET, 1); > > > - wmb(); /* make sure reset happen */ > > > + msleep(20); /* make sure reset happen */ > > > > Could you please pull this out into a #define used for both in case we > > decide to > > tweak it? I don't want these 2 values to drift. > > Oh, yeah. That's a really good point. Will fix. > > oh yeah, and with that fixed, > > Reviewed-by: Sean Paul Thanks. > > > Thanks, > > Sean > > > > > dsi_write(msm_host, REG_DSI_RESET, 0); > > > } > > > > > > @@ -1396,7 +1396,7 @@ static void dsi_sw_reset_restore(struct > > > msm_dsi_host *msm_host) > > > > > > /* dsi controller can only be reset while clocks are running */ > > > dsi_write(msm_host, REG_DSI_RESET, 1); > > > - wmb(); /* make sure reset happen */ > > > + msleep(20); /* make sure reset happen */ > > > dsi_write(msm_host, REG_DSI_RESET, 0); > > > wmb(); /* controller out of reset */ > > > dsi_write(msm_host, REG_DSI_CTRL, data0); > > > -- > > > 2.17.1 > > > > > > > -- > > Sean Paul, Software Engineer, Google / Chromium OS ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
Re: [Freedreno] [PATCH v2 3/5] drm/msm/dsi: Add configuration for 28nm PLL on family B
On Thu, Sep 26, 2019 at 12:52:54PM +0200, khol...@gmail.com wrote: > From: "Angelo G. Del Regno" > > The 28nm PLL has a different iospace on MSM/APQ family B SoCs: > add a new configuration and use it when the DT reports the > "qcom,dsi-phy-28nm-hpm-fam-b" compatible. > > Signed-off-by: Angelo G. Del Regno > --- > .../devicetree/bindings/display/msm/dsi.txt| 1 + > drivers/gpu/drm/msm/dsi/phy/dsi_phy.c | 2 ++ > drivers/gpu/drm/msm/dsi/phy/dsi_phy.h | 1 + > drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm.c | 18 ++ > 4 files changed, 22 insertions(+) > > diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt > b/Documentation/devicetree/bindings/display/msm/dsi.txt > index af95586c898f..d3ba9ee22f38 100644 > --- a/Documentation/devicetree/bindings/display/msm/dsi.txt > +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt > @@ -83,6 +83,7 @@ DSI PHY: > Required properties: > - compatible: Could be the following >* "qcom,dsi-phy-28nm-hpm" > + * "qcom,dsi-phy-28nm-hpm-fam-b" >* "qcom,dsi-phy-28nm-lp" >* "qcom,dsi-phy-20nm" >* "qcom,dsi-phy-28nm-8960" Same comment here re: putting binding updates in separate patches. Sean > diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c > b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c > index 4097eca1b3ef..507c0146a305 100644 > --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c > +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c > @@ -481,6 +481,8 @@ static const struct of_device_id dsi_phy_dt_match[] = { > #ifdef CONFIG_DRM_MSM_DSI_28NM_PHY > { .compatible = "qcom,dsi-phy-28nm-hpm", > .data = _phy_28nm_hpm_cfgs }, > + { .compatible = "qcom,dsi-phy-28nm-hpm-fam-b", > + .data = _phy_28nm_hpm_famb_cfgs }, > { .compatible = "qcom,dsi-phy-28nm-lp", > .data = _phy_28nm_lp_cfgs }, > #endif > diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.h > b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.h > index c4069ce6afe6..24b294ed3059 100644 > --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.h > +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.h > @@ -40,6 +40,7 @@ struct msm_dsi_phy_cfg { > }; > > extern const struct msm_dsi_phy_cfg dsi_phy_28nm_hpm_cfgs; > +extern const struct msm_dsi_phy_cfg dsi_phy_28nm_hpm_famb_cfgs; > extern const struct msm_dsi_phy_cfg dsi_phy_28nm_lp_cfgs; > extern const struct msm_dsi_phy_cfg dsi_phy_20nm_cfgs; > extern const struct msm_dsi_phy_cfg dsi_phy_28nm_8960_cfgs; > diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm.c > b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm.c > index b3f678f6c2aa..3b9300545e16 100644 > --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm.c > +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy_28nm.c > @@ -142,6 +142,24 @@ const struct msm_dsi_phy_cfg dsi_phy_28nm_hpm_cfgs = { > .num_dsi_phy = 2, > }; > > +const struct msm_dsi_phy_cfg dsi_phy_28nm_hpm_famb_cfgs = { > + .type = MSM_DSI_PHY_28NM_HPM, > + .src_pll_truthtable = { {true, true}, {false, true} }, > + .reg_cfg = { > + .num = 1, > + .regs = { > + {"vddio", 10, 100}, > + }, > + }, > + .ops = { > + .enable = dsi_28nm_phy_enable, > + .disable = dsi_28nm_phy_disable, > + .init = msm_dsi_phy_init_common, > + }, > + .io_start = { 0x1a94400, 0x1a94800 }, > + .num_dsi_phy = 2, > +}; > + > const struct msm_dsi_phy_cfg dsi_phy_28nm_lp_cfgs = { > .type = MSM_DSI_PHY_28NM_LP, > .src_pll_truthtable = { {true, true}, {true, true} }, > -- > 2.21.0 > -- Sean Paul, Software Engineer, Google / Chromium OS ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
Re: [Freedreno] [PATCH v2 1/5] drm/msm/mdp5: Add optional TBU and TBU_RT clocks
On Thu, Sep 26, 2019 at 12:52:52PM +0200, khol...@gmail.com wrote: > From: "Angelo G. Del Regno" Hi Angelo, Thank you for your patches! > > Some SoCs, like MSM8956/8976 (and APQ variants), do feature these > clocks and we need to enable them in order to get the hardware to > properly work. Could you add an explanation to the commit message of what these clocks are/do, for those of us who don't know? > > Signed-off-by: Angelo G. Del Regno > --- > Documentation/devicetree/bindings/display/msm/mdp5.txt | 2 ++ > drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 10 ++ > drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h | 2 ++ > 3 files changed, 14 insertions(+) > > diff --git a/Documentation/devicetree/bindings/display/msm/mdp5.txt > b/Documentation/devicetree/bindings/display/msm/mdp5.txt > index 4e11338548aa..43d11279c925 100644 > --- a/Documentation/devicetree/bindings/display/msm/mdp5.txt > +++ b/Documentation/devicetree/bindings/display/msm/mdp5.txt > @@ -76,6 +76,8 @@ Required properties: > Optional properties: > - clock-names: the following clocks are optional: >* "lut" > + * "tbu" > + * "tbu_rt" Bindings updates should be in their own patch, and you'll need to cc the correct dt lists and maintainers (especially Rob Herring) in order to get their attention. (hint: use scripts/get_maintainer.pl) Sean > > Example: > > diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c > b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c > index fec6ef1ae3b9..23be9b95dd7e 100644 > --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c > +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c > @@ -293,6 +293,10 @@ int mdp5_disable(struct mdp5_kms *mdp5_kms) > mdp5_kms->enable_count--; > WARN_ON(mdp5_kms->enable_count < 0); > > + if (mdp5_kms->tbu_rt_clk) > + clk_disable_unprepare(mdp5_kms->tbu_rt_clk); > + if (mdp5_kms->tbu_clk) > + clk_disable_unprepare(mdp5_kms->tbu_clk); > clk_disable_unprepare(mdp5_kms->ahb_clk); > clk_disable_unprepare(mdp5_kms->axi_clk); > clk_disable_unprepare(mdp5_kms->core_clk); > @@ -313,6 +317,10 @@ int mdp5_enable(struct mdp5_kms *mdp5_kms) > clk_prepare_enable(mdp5_kms->core_clk); > if (mdp5_kms->lut_clk) > clk_prepare_enable(mdp5_kms->lut_clk); > + if (mdp5_kms->tbu_clk) > + clk_prepare_enable(mdp5_kms->tbu_clk); > + if (mdp5_kms->tbu_rt_clk) > + clk_prepare_enable(mdp5_kms->tbu_rt_clk); > > return 0; > } > @@ -948,6 +956,8 @@ static int mdp5_init(struct platform_device *pdev, struct > drm_device *dev) > > /* optional clocks: */ > get_clk(pdev, _kms->lut_clk, "lut", false); > + get_clk(pdev, _kms->tbu_clk, "tbu", false); > + get_clk(pdev, _kms->tbu_rt_clk, "tbu_rt", false); > > /* we need to set a default rate before enabling. Set a safe >* rate first, then figure out hw revision, and then set a > diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h > b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h > index d1bf4fdfc815..128866742593 100644 > --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h > +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.h > @@ -53,6 +53,8 @@ struct mdp5_kms { > struct clk *ahb_clk; > struct clk *core_clk; > struct clk *lut_clk; > + struct clk *tbu_clk; > + struct clk *tbu_rt_clk; > struct clk *vsync_clk; > > /* > -- > 2.21.0 > -- Sean Paul, Software Engineer, Google / Chromium OS ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
Re: [Freedreno] [PATCH] drm/msm/dsi: Implement reset correctly
On Thu, Oct 10, 2019 at 2:45 PM Sean Paul wrote: > > On Wed, Oct 09, 2019 at 02:34:54PM -0700, Jeffrey Hugo wrote: > > On msm8998, vblank timeouts are observed because the DSI controller is not > > reset properly, which ends up stalling the MDP. This is because the reset > > logic is not correct per the hardware documentation. > > > > The documentation states that after asserting reset, software should wait > > some time (no indication of how long), or poll the status register until it > > returns 0 before deasserting reset. > > > > wmb() is insufficient for this purpose since it just ensures ordering, not > > timing between writes. Since asserting and deasserting reset occurs on the > > same register, ordering is already guaranteed by the architecture, making > > the wmb extraneous. > > > > Since we would define a timeout for polling the status register to avoid a > > possible infinite loop, lets just use a static delay of 20 ms, since 16.666 > > ms is the time available to process one frame at 60 fps. > > > > Fixes: a689554ba6ed (drm/msm: Initial add DSI connector support) > > Signed-off-by: Jeffrey Hugo > > --- > > > > Rob et al, is it possible for this to go into a 5.4-rc? Sorry, I missed this on the first go-around, I'm Ok with this getting into 5.4. Rob, if you're Ok with this, I can send it through -misc unless you're planning an msm-fixes PR. > > > > drivers/gpu/drm/msm/dsi/dsi_host.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c > > b/drivers/gpu/drm/msm/dsi/dsi_host.c > > index 663ff9f4fac9..68ded9b4735d 100644 > > --- a/drivers/gpu/drm/msm/dsi/dsi_host.c > > +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c > > @@ -986,7 +986,7 @@ static void dsi_sw_reset(struct msm_dsi_host *msm_host) > > wmb(); /* clocks need to be enabled before reset */ > > > > dsi_write(msm_host, REG_DSI_RESET, 1); > > - wmb(); /* make sure reset happen */ > > + msleep(20); /* make sure reset happen */ > > Could you please pull this out into a #define used for both in case we decide > to > tweak it? I don't want these 2 values to drift. > oh yeah, and with that fixed, Reviewed-by: Sean Paul > Thanks, > Sean > > > dsi_write(msm_host, REG_DSI_RESET, 0); > > } > > > > @@ -1396,7 +1396,7 @@ static void dsi_sw_reset_restore(struct msm_dsi_host > > *msm_host) > > > > /* dsi controller can only be reset while clocks are running */ > > dsi_write(msm_host, REG_DSI_RESET, 1); > > - wmb(); /* make sure reset happen */ > > + msleep(20); /* make sure reset happen */ > > dsi_write(msm_host, REG_DSI_RESET, 0); > > wmb(); /* controller out of reset */ > > dsi_write(msm_host, REG_DSI_CTRL, data0); > > -- > > 2.17.1 > > > > -- > Sean Paul, Software Engineer, Google / Chromium OS ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
Re: [Freedreno] [PATCH] drm/msm/dsi: Implement reset correctly
On Wed, Oct 09, 2019 at 02:34:54PM -0700, Jeffrey Hugo wrote: > On msm8998, vblank timeouts are observed because the DSI controller is not > reset properly, which ends up stalling the MDP. This is because the reset > logic is not correct per the hardware documentation. > > The documentation states that after asserting reset, software should wait > some time (no indication of how long), or poll the status register until it > returns 0 before deasserting reset. > > wmb() is insufficient for this purpose since it just ensures ordering, not > timing between writes. Since asserting and deasserting reset occurs on the > same register, ordering is already guaranteed by the architecture, making > the wmb extraneous. > > Since we would define a timeout for polling the status register to avoid a > possible infinite loop, lets just use a static delay of 20 ms, since 16.666 > ms is the time available to process one frame at 60 fps. > > Fixes: a689554ba6ed (drm/msm: Initial add DSI connector support) > Signed-off-by: Jeffrey Hugo > --- > > Rob et al, is it possible for this to go into a 5.4-rc? > > drivers/gpu/drm/msm/dsi/dsi_host.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c > b/drivers/gpu/drm/msm/dsi/dsi_host.c > index 663ff9f4fac9..68ded9b4735d 100644 > --- a/drivers/gpu/drm/msm/dsi/dsi_host.c > +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c > @@ -986,7 +986,7 @@ static void dsi_sw_reset(struct msm_dsi_host *msm_host) > wmb(); /* clocks need to be enabled before reset */ > > dsi_write(msm_host, REG_DSI_RESET, 1); > - wmb(); /* make sure reset happen */ > + msleep(20); /* make sure reset happen */ Could you please pull this out into a #define used for both in case we decide to tweak it? I don't want these 2 values to drift. Thanks, Sean > dsi_write(msm_host, REG_DSI_RESET, 0); > } > > @@ -1396,7 +1396,7 @@ static void dsi_sw_reset_restore(struct msm_dsi_host > *msm_host) > > /* dsi controller can only be reset while clocks are running */ > dsi_write(msm_host, REG_DSI_RESET, 1); > - wmb(); /* make sure reset happen */ > + msleep(20); /* make sure reset happen */ > dsi_write(msm_host, REG_DSI_RESET, 0); > wmb(); /* controller out of reset */ > dsi_write(msm_host, REG_DSI_CTRL, data0); > -- > 2.17.1 > -- Sean Paul, Software Engineer, Google / Chromium OS ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
[Freedreno] [PATCH v2] drm/msm: Sanitize the modeset_is_locked checks in dpu
From: Sean Paul As Daniel mentions in his email [1], non-blocking commits don't hold the modeset locks, so we can safely access state as long as these functions are in the commit path. So remove the WARN_ON in dpu_kms_encoder_enable. In dpu_crtc_get_intf_mode, things are a bit more complicated. So keep the WARN_ON, but add a comment explaining the situation and hope someone comes along and fixes the issue. [1]- https://lists.freedesktop.org/archives/dri-devel/2019-October/239441.html Link to v1: https://patchwork.freedesktop.org/patch/msgid/20191010151351.126735-1-s...@poorly.run Changes in v2: - Restored the WARN_ON in get_intf_mode and added a clarifying comment (Daniel) Fixes: 1dfdb0e107db ("drm/msm: dpu: Add modeset lock checks where applicable") Cc: Jeykumar Sankaran Cc: Rob Clark Suggested-by: Daniel Vetter Partially-Reviewed-by: Daniel Vetter Signed-off-by: Sean Paul --- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 9 + drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 1 - 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c index 0b9dc042d2e22..f197dce545761 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -271,6 +271,15 @@ enum dpu_intf_mode dpu_crtc_get_intf_mode(struct drm_crtc *crtc) return INTF_MODE_NONE; } + /* +* TODO: This function is called from dpu debugfs and as part of atomic +* check. When called from debugfs, the crtc->mutex must be held to +* read crtc->state. However reading crtc->state from atomic check isn't +* allowed (unless you have a good reason, a big comment, and a deep +* understanding of how the atomic/modeset locks work (<- and this is +* probably not possible)). So we'll keep the WARN_ON here for now, but +* really we need to figure out a better way to track our operating mode +*/ WARN_ON(!drm_modeset_is_locked(>mutex)); /* TODO: Returns the first INTF_MODE, could there be multiple values? */ diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index b1645ad83a1e1..6c92f0fbeac98 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -316,7 +316,6 @@ void dpu_kms_encoder_enable(struct drm_encoder *encoder) if (funcs && funcs->commit) funcs->commit(encoder); - WARN_ON(!drm_modeset_is_locked(>mode_config.connection_mutex)); drm_for_each_crtc(crtc, dev) { if (!(crtc->state->encoder_mask & drm_encoder_mask(encoder))) continue; -- Sean Paul, Software Engineer, Google / Chromium OS ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
[Freedreno] [PATCH 3/4] media: radio: wl1273: fix interrupt masking on release
If a process is interrupted while accessing the radio device and the core lock is contended, release() could return early and fail to update the interrupt mask. Note that the return value of the v4l2 release file operation is ignored. Fixes: 87d1a50ce451 ("[media] V4L2: WL1273 FM Radio: TI WL1273 FM radio driver") Cc: stable # 2.6.38 Cc: Matti Aaltonen Cc: Mauro Carvalho Chehab Signed-off-by: Johan Hovold --- drivers/media/radio/radio-wl1273.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/media/radio/radio-wl1273.c b/drivers/media/radio/radio-wl1273.c index 104ac41c6f96..112376873167 100644 --- a/drivers/media/radio/radio-wl1273.c +++ b/drivers/media/radio/radio-wl1273.c @@ -1148,8 +1148,7 @@ static int wl1273_fm_fops_release(struct file *file) if (radio->rds_users > 0) { radio->rds_users--; if (radio->rds_users == 0) { - if (mutex_lock_interruptible(>lock)) - return -EINTR; + mutex_lock(>lock); radio->irq_flags &= ~WL1273_RDS_EVENT; -- 2.23.0 ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
Re: [Freedreno] [PATCH 2/4] media: bdisp: fix memleak on release
Hi Johan Thank you for the patch BR Fabien On 10/10/2019 3:13 PM, Johan Hovold wrote: > If a process is interrupted while accessing the video device and the > device lock is contended, release() could return early and fail to free > related resources. > > Note that the return value of the v4l2 release file operation is > ignored. > > Fixes: 28ffeebbb7bd ("[media] bdisp: 2D blitter driver using v4l2 mem2mem > framework") > Cc: stable # 4.2 > Cc: Fabien Dessenne > Cc: Hans Verkuil > Cc: Mauro Carvalho Chehab > Signed-off-by: Johan Hovold Reviewed-by: Fabien Dessenne > --- > drivers/media/platform/sti/bdisp/bdisp-v4l2.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/media/platform/sti/bdisp/bdisp-v4l2.c > b/drivers/media/platform/sti/bdisp/bdisp-v4l2.c > index e90f1ba30574..675b5f2b4c2e 100644 > --- a/drivers/media/platform/sti/bdisp/bdisp-v4l2.c > +++ b/drivers/media/platform/sti/bdisp/bdisp-v4l2.c > @@ -651,8 +651,7 @@ static int bdisp_release(struct file *file) > > dev_dbg(bdisp->dev, "%s\n", __func__); > > - if (mutex_lock_interruptible(>lock)) > - return -ERESTARTSYS; > + mutex_lock(>lock); > > v4l2_m2m_ctx_release(ctx->fh.m2m_ctx); > ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
[Freedreno] [PATCH 0/4] treewide: fix interrupted release
Two old USB drivers had a bug in them which could lead to memory leaks if an interrupted process raced with a disconnect event. Turns out we had a few more driver in other subsystems with the same kind of bug in them. Note that all but the s390 patch have only been compile tested, while the s390 one has not even been built. Johan Johan Hovold (4): drm/msm: fix memleak on release media: bdisp: fix memleak on release media: radio: wl1273: fix interrupt masking on release s390/zcrypt: fix memleak at release drivers/gpu/drm/msm/msm_debugfs.c | 6 +- drivers/media/platform/sti/bdisp/bdisp-v4l2.c | 3 +-- drivers/media/radio/radio-wl1273.c| 3 +-- drivers/s390/crypto/zcrypt_api.c | 3 +-- 4 files changed, 4 insertions(+), 11 deletions(-) -- 2.23.0 ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
[Freedreno] [PATCH 1/4] drm/msm: fix memleak on release
If a process is interrupted while accessing the "gpu" debugfs file and the drm device struct_mutex is contended, release() could return early and fail to free related resources. Note that the return value from release() is ignored. Fixes: 4f776f4511c7 ("drm/msm/gpu: Convert the GPU show function to use the GPU state") Cc: stable # 4.18 Cc: Jordan Crouse Cc: Rob Clark Signed-off-by: Johan Hovold --- drivers/gpu/drm/msm/msm_debugfs.c | 6 +- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_debugfs.c b/drivers/gpu/drm/msm/msm_debugfs.c index 6be879578140..1c74381a4fc9 100644 --- a/drivers/gpu/drm/msm/msm_debugfs.c +++ b/drivers/gpu/drm/msm/msm_debugfs.c @@ -47,12 +47,8 @@ static int msm_gpu_release(struct inode *inode, struct file *file) struct msm_gpu_show_priv *show_priv = m->private; struct msm_drm_private *priv = show_priv->dev->dev_private; struct msm_gpu *gpu = priv->gpu; - int ret; - - ret = mutex_lock_interruptible(_priv->dev->struct_mutex); - if (ret) - return ret; + mutex_lock(_priv->dev->struct_mutex); gpu->funcs->gpu_state_put(show_priv->state); mutex_unlock(_priv->dev->struct_mutex); -- 2.23.0 ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
[Freedreno] [PATCH 2/4] media: bdisp: fix memleak on release
If a process is interrupted while accessing the video device and the device lock is contended, release() could return early and fail to free related resources. Note that the return value of the v4l2 release file operation is ignored. Fixes: 28ffeebbb7bd ("[media] bdisp: 2D blitter driver using v4l2 mem2mem framework") Cc: stable # 4.2 Cc: Fabien Dessenne Cc: Hans Verkuil Cc: Mauro Carvalho Chehab Signed-off-by: Johan Hovold --- drivers/media/platform/sti/bdisp/bdisp-v4l2.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/media/platform/sti/bdisp/bdisp-v4l2.c b/drivers/media/platform/sti/bdisp/bdisp-v4l2.c index e90f1ba30574..675b5f2b4c2e 100644 --- a/drivers/media/platform/sti/bdisp/bdisp-v4l2.c +++ b/drivers/media/platform/sti/bdisp/bdisp-v4l2.c @@ -651,8 +651,7 @@ static int bdisp_release(struct file *file) dev_dbg(bdisp->dev, "%s\n", __func__); - if (mutex_lock_interruptible(>lock)) - return -ERESTARTSYS; + mutex_lock(>lock); v4l2_m2m_ctx_release(ctx->fh.m2m_ctx); -- 2.23.0 ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
[Freedreno] [PATCH 4/4] s390/zcrypt: fix memleak at release
If a process is interrupted while accessing the crypto device and the global ap_perms_mutex is contented, release() could return early and fail to free related resources. Fixes: 00fab2350e6b ("s390/zcrypt: multiple zcrypt device nodes support") Cc: stable # 4.19 Cc: Harald Freudenberger Cc: Martin Schwidefsky Signed-off-by: Johan Hovold --- drivers/s390/crypto/zcrypt_api.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/s390/crypto/zcrypt_api.c b/drivers/s390/crypto/zcrypt_api.c index 45bdb47f84c1..9157e728a362 100644 --- a/drivers/s390/crypto/zcrypt_api.c +++ b/drivers/s390/crypto/zcrypt_api.c @@ -522,8 +522,7 @@ static int zcrypt_release(struct inode *inode, struct file *filp) if (filp->f_inode->i_cdev == _cdev) { struct zcdn_device *zcdndev; - if (mutex_lock_interruptible(_perms_mutex)) - return -ERESTARTSYS; + mutex_lock(_perms_mutex); zcdndev = find_zcdndev_by_devt(filp->f_inode->i_rdev); mutex_unlock(_perms_mutex); if (zcdndev) { -- 2.23.0 ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
Re: [Freedreno] [PATCH] Revert "drm/msm: dpu: Add modeset lock checks where applicable"
On Thu, Oct 10, 2019 at 5:13 PM Sean Paul wrote: > > From: Sean Paul > > This reverts commit 1dfdb0e107dbe6ebff3f6bbbe4aad0b5aa87bba4. > > As Daniel mentions in his email [1], non-blocking commits don't hold the > modeset locks, so we can safely access state as long as these functions > are in the commit path. I'm not entirely sure if these have always been > isolated to the commit path, but they seem to be now. > > [1]- https://lists.freedesktop.org/archives/dri-devel/2019-October/239441.html > > Fixes: 1dfdb0e107db ("drm/msm: dpu: Add modeset lock checks where applicable") > Cc: Jeykumar Sankaran > Cc: Rob Clark > Suggested-by: Daniel Vetter > Signed-off-by: Sean Paul > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 2 -- > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 1 - > 2 files changed, 3 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > index db6c9ccf3be26..c645dd201368b 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > @@ -282,8 +282,6 @@ enum dpu_intf_mode dpu_crtc_get_intf_mode(struct drm_crtc > *crtc) > return INTF_MODE_NONE; > } > > - WARN_ON(!drm_modeset_is_locked(>mutex)); This one is worse ... it's used in two places: - debugfs, where you actually want to make sure you're holding this lock - atomic_check, where this is broken since you're supposed to look at the free-standing states only, except if you really know what you're doing. Given that there's no comment here, I suspect that's not the case. Note that for atomic_check you're guaranteed to hold the modeset lock. I'd put a FIXME here, but leave the WARN_ON until this is fixed properly. > - > /* TODO: Returns the first INTF_MODE, could there be multiple values? > */ > drm_for_each_encoder_mask(encoder, crtc->dev, > crtc->state->encoder_mask) > return dpu_encoder_get_intf_mode(encoder); > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > index e393a423d7d7a..0e68e20d19c87 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > @@ -305,7 +305,6 @@ void dpu_kms_encoder_enable(struct drm_encoder *encoder) > if (funcs && funcs->commit) > funcs->commit(encoder); > > - WARN_ON(!drm_modeset_is_locked(>mode_config.connection_mutex)); Reviewed-by: Daniel Vetter but only for this hunk here. -Daniel > drm_for_each_crtc(crtc, dev) { > if (!(crtc->state->encoder_mask & drm_encoder_mask(encoder))) > continue; > -- > Sean Paul, Software Engineer, Google / Chromium OS > -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
[Freedreno] [PATCH] Revert "drm/msm: dpu: Add modeset lock checks where applicable"
From: Sean Paul This reverts commit 1dfdb0e107dbe6ebff3f6bbbe4aad0b5aa87bba4. As Daniel mentions in his email [1], non-blocking commits don't hold the modeset locks, so we can safely access state as long as these functions are in the commit path. I'm not entirely sure if these have always been isolated to the commit path, but they seem to be now. [1]- https://lists.freedesktop.org/archives/dri-devel/2019-October/239441.html Fixes: 1dfdb0e107db ("drm/msm: dpu: Add modeset lock checks where applicable") Cc: Jeykumar Sankaran Cc: Rob Clark Suggested-by: Daniel Vetter Signed-off-by: Sean Paul --- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 2 -- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 1 - 2 files changed, 3 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c index db6c9ccf3be26..c645dd201368b 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -282,8 +282,6 @@ enum dpu_intf_mode dpu_crtc_get_intf_mode(struct drm_crtc *crtc) return INTF_MODE_NONE; } - WARN_ON(!drm_modeset_is_locked(>mutex)); - /* TODO: Returns the first INTF_MODE, could there be multiple values? */ drm_for_each_encoder_mask(encoder, crtc->dev, crtc->state->encoder_mask) return dpu_encoder_get_intf_mode(encoder); diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index e393a423d7d7a..0e68e20d19c87 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -305,7 +305,6 @@ void dpu_kms_encoder_enable(struct drm_encoder *encoder) if (funcs && funcs->commit) funcs->commit(encoder); - WARN_ON(!drm_modeset_is_locked(>mode_config.connection_mutex)); drm_for_each_crtc(crtc, dev) { if (!(crtc->state->encoder_mask & drm_encoder_mask(encoder))) continue; -- Sean Paul, Software Engineer, Google / Chromium OS ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
Re: [Freedreno] [PATCH 0/4] treewide: fix interrupted release
On Thu, Oct 10, 2019 at 03:13:29PM +0200, Johan Hovold wrote: > Two old USB drivers had a bug in them which could lead to memory leaks > if an interrupted process raced with a disconnect event. > > Turns out we had a few more driver in other subsystems with the same > kind of bug in them. > > Note that all but the s390 patch have only been compile tested, while > the s390 one has not even been built. Random funny idea: Could we do some debug annotations (akin to might_sleep) that splats when you might_sleep_interruptible somewhere where interruptible sleeps are generally a bad idea? Like in fops->release? Something like non_block_start/end that I've recently done, but for interruptible sleeps only? Would need might_sleep_interruptibly() annotations and non_interruptly_sleep_start/end annotations. -Daniel > > Johan > > > Johan Hovold (4): > drm/msm: fix memleak on release > media: bdisp: fix memleak on release > media: radio: wl1273: fix interrupt masking on release > s390/zcrypt: fix memleak at release > > drivers/gpu/drm/msm/msm_debugfs.c | 6 +- > drivers/media/platform/sti/bdisp/bdisp-v4l2.c | 3 +-- > drivers/media/radio/radio-wl1273.c| 3 +-- > drivers/s390/crypto/zcrypt_api.c | 3 +-- > 4 files changed, 4 insertions(+), 11 deletions(-) > > -- > 2.23.0 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
Re: [Freedreno] [PATCH v2 16/24] drm/msm: dpu: Add modeset lock checks where applicable
On Thu, Oct 10, 2019 at 12:20:56AM +0200, Daniel Vetter wrote: > On Fri, Nov 16, 2018 at 7:44 PM Sean Paul wrote: > > > > From: Sean Paul > > > > Add modeset lock checks to functions that could be called outside the > > core atomic stack. > > > > Changes in v2: > > - None > > > > Signed-off-by: Sean Paul > > --- > > drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 2 ++ > > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 1 + > > 2 files changed, 3 insertions(+) > > > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > > b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > > index a008a87a8113..cd0a0bea4335 100644 > > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > > @@ -284,6 +284,8 @@ enum dpu_intf_mode dpu_crtc_get_intf_mode(struct > > drm_crtc *crtc) > > return INTF_MODE_NONE; > > } > > > > + WARN_ON(!drm_modeset_is_locked(>mutex)); > > + > > /* TODO: Returns the first INTF_MODE, could there be multiple > > values? */ > > drm_for_each_encoder_mask(encoder, crtc->dev, > > crtc->state->encoder_mask) > > return dpu_encoder_get_intf_mode(encoder); > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > > b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > > index 64134d619748..5104fc01147e 100644 > > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > > @@ -358,6 +358,7 @@ void dpu_kms_encoder_enable(struct drm_encoder *encoder) > > if (funcs && funcs->commit) > > funcs->commit(encoder); > > > > + WARN_ON(!drm_modeset_is_locked(>mode_config.connection_mutex)); > > drm_for_each_crtc(crtc, dev) { > > if (!(crtc->state->encoder_mask & > > drm_encoder_mask(encoder))) > > continue; > > I'm fairly sure this is called in the atomic_commit path, and in there > you might not actually hold these locks (if you do a nonblocking > modeset). Indeed. I'm not sure what my thinking was when submitting this, I think some of the callsites may have changed since this was posted (with the enable/probe refactors from a few months ago). At any rate, doesn't matter now, I'll post the revert :-) > > The locking rules for ->state are pretty fun: Either hold the lock, or > be in atomic commit. In the later case atomic helpers' commit ordering > guarantees that you can safely access ->state (but read-only only) > without hodling any locks. You might want to revert. > > Don't ask why I stumbled over this. Ok, I'll just assume that you read seanpaul's 11-month old reviews before bed to relax ;-) Sean > -Daniel > -- > Daniel Vetter > Software Engineer, Intel Corporation > +41 (0) 79 365 57 48 - http://blog.ffwll.ch -- Sean Paul, Software Engineer, Google / Chromium OS ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
[Freedreno] [PATCH 0/4] drm/msm: Remove four set but not used variables
zhengbin (4): drm/msm/mdp5: Remove set but not used variable 'fmt' drm/msm/mdp5: Remove set but not used variable 'hw_cfg' in blend_setup drm/msm/dsi: Remove set but not used variable 'lpx' drm/msm/dsi: Remove set but not used variable 'lp' drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 3 --- drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c | 2 -- drivers/gpu/drm/msm/dsi/dsi_host.c| 3 +-- drivers/gpu/drm/msm/dsi/phy/dsi_phy.c | 6 ++ 4 files changed, 3 insertions(+), 11 deletions(-) -- 2.7.4 ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
[Freedreno] [PATCH 3/4] drm/msm/dsi: Remove set but not used variable 'lpx'
Fixes gcc '-Wunused-but-set-variable' warning: drivers/gpu/drm/msm/dsi/phy/dsi_phy.c: In function msm_dsi_dphy_timing_calc_v2: drivers/gpu/drm/msm/dsi/phy/dsi_phy.c:156:17: warning: variable lpx set but not used [-Wunused-but-set-variable] drivers/gpu/drm/msm/dsi/phy/dsi_phy.c: In function msm_dsi_dphy_timing_calc_v3: drivers/gpu/drm/msm/dsi/phy/dsi_phy.c:273:17: warning: variable lpx set but not used [-Wunused-but-set-variable] 'lpx' in msm_dsi_dphy_timing_calc_v2 is not used since commit a4df68fa232e ("drm/msm/dsi: Add new method to calculate 14nm PHY timings") 'lpx' in msm_dsi_dphy_timing_calc_v3 is not used since commit f1fa7ff44056 ("drm/msm/dsi: implement auto PHY timing calculator for 10nm PHY") Reported-by: Hulk Robot Signed-off-by: zhengbin --- drivers/gpu/drm/msm/dsi/phy/dsi_phy.c | 6 ++ 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c index 3522863..aa22c3a 100644 --- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c +++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c @@ -145,7 +145,7 @@ int msm_dsi_dphy_timing_calc_v2(struct msm_dsi_dphy_timing *timing, { const unsigned long bit_rate = clk_req->bitclk_rate; const unsigned long esc_rate = clk_req->escclk_rate; - s32 ui, ui_x8, lpx; + s32 ui, ui_x8; s32 tmax, tmin; s32 pcnt0 = 50; s32 pcnt1 = 50; @@ -175,7 +175,6 @@ int msm_dsi_dphy_timing_calc_v2(struct msm_dsi_dphy_timing *timing, ui = mult_frac(NSEC_PER_MSEC, coeff, bit_rate / 1000); ui_x8 = ui << 3; - lpx = mult_frac(NSEC_PER_MSEC, coeff, esc_rate / 1000); temp = S_DIV_ROUND_UP(38 * coeff - val_ckln * ui, ui_x8); tmin = max_t(s32, temp, 0); @@ -262,7 +261,7 @@ int msm_dsi_dphy_timing_calc_v3(struct msm_dsi_dphy_timing *timing, { const unsigned long bit_rate = clk_req->bitclk_rate; const unsigned long esc_rate = clk_req->escclk_rate; - s32 ui, ui_x8, lpx; + s32 ui, ui_x8; s32 tmax, tmin; s32 pcnt0 = 50; s32 pcnt1 = 50; @@ -284,7 +283,6 @@ int msm_dsi_dphy_timing_calc_v3(struct msm_dsi_dphy_timing *timing, ui = mult_frac(NSEC_PER_MSEC, coeff, bit_rate / 1000); ui_x8 = ui << 3; - lpx = mult_frac(NSEC_PER_MSEC, coeff, esc_rate / 1000); temp = S_DIV_ROUND_UP(38 * coeff, ui_x8); tmin = max_t(s32, temp, 0); -- 2.7.4 ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
[Freedreno] [PATCH 4/4] drm/msm/dsi: Remove set but not used variable 'lp'
Fixes gcc '-Wunused-but-set-variable' warning: drivers/gpu/drm/msm/dsi/dsi_host.c: In function dsi_cmd_dma_rx: drivers/gpu/drm/msm/dsi/dsi_host.c:1302:7: warning: variable lp set but not used [-Wunused-but-set-variable] It is not used since commit a689554ba6ed ("drm/msm: Initial add DSI connector support") Reported-by: Hulk Robot Signed-off-by: zhengbin --- drivers/gpu/drm/msm/dsi/dsi_host.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index 663ff9f..4851188 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -1291,14 +1291,13 @@ static int dsi_cmd_dma_tx(struct msm_dsi_host *msm_host, int len) static int dsi_cmd_dma_rx(struct msm_dsi_host *msm_host, u8 *buf, int rx_byte, int pkt_size) { - u32 *lp, *temp, data; + u32 *temp, data; int i, j = 0, cnt; u32 read_cnt; u8 reg[16]; int repeated_bytes = 0; int buf_offset = buf - msm_host->rx_buf; - lp = (u32 *)buf; temp = (u32 *)reg; cnt = (rx_byte + 3) >> 2; if (cnt > 4) -- 2.7.4 ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
[Freedreno] [PATCH 2/4] drm/msm/mdp5: Remove set but not used variable 'hw_cfg' in blend_setup
Fixes gcc '-Wunused-but-set-variable' warning: drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c: In function blend_setup: drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c:225:28: warning: variable hw_cfg set but not used [-Wunused-but-set-variable] It is not used since commit 14be3200cd5f ("drm/msm: rename mdp->disp") Reported-by: Hulk Robot Signed-off-by: zhengbin --- drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c index eb0b4b7..05cc04f 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c @@ -214,7 +214,6 @@ static void blend_setup(struct drm_crtc *crtc) struct mdp5_pipeline *pipeline = _cstate->pipeline; struct mdp5_kms *mdp5_kms = get_kms(crtc); struct drm_plane *plane; - const struct mdp5_cfg_hw *hw_cfg; struct mdp5_plane_state *pstate, *pstates[STAGE_MAX + 1] = {NULL}; const struct mdp_format *format; struct mdp5_hw_mixer *mixer = pipeline->mixer; @@ -232,8 +231,6 @@ static void blend_setup(struct drm_crtc *crtc) u32 val; #define blender(stage) ((stage) - STAGE0) - hw_cfg = mdp5_cfg_get_hw_config(mdp5_kms->cfg); - spin_lock_irqsave(_crtc->lm_lock, flags); /* ctl could be released already when we are shutting down: */ -- 2.7.4 ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno
[Freedreno] [PATCH 1/4] drm/msm/mdp5: Remove set but not used variable 'fmt'
Fixes gcc '-Wunused-but-set-variable' warning: drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c: In function mdp5_smp_calculate: drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:134:6: warning: variable fmt set but not used [-Wunused-but-set-variable] It is not used since commit 24c478ead0bf ("drm/fourcc: Pass the format_info pointer to drm_format_plane_cpp") Reported-by: Hulk Robot Signed-off-by: zhengbin --- drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c index b31cfb5..d7fa2c4 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c @@ -121,7 +121,6 @@ uint32_t mdp5_smp_calculate(struct mdp5_smp *smp, struct mdp5_kms *mdp5_kms = get_kms(smp); int rev = mdp5_cfg_get_hw_rev(mdp5_kms->cfg); int i, hsub, nplanes, nlines; - u32 fmt = format->base.pixel_format; uint32_t blkcfg = 0; nplanes = info->num_planes; @@ -135,7 +134,6 @@ uint32_t mdp5_smp_calculate(struct mdp5_smp *smp, * them together, writes to SMP using a single client. */ if ((rev > 0) && (format->chroma_sample > CHROMA_FULL)) { - fmt = DRM_FORMAT_NV24; nplanes = 2; /* if decimation is enabled, HW decimates less on the -- 2.7.4 ___ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno