lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <f726657c3d2b16ed18e9d24a69b736970c0cf316.camel@mediatek.com>
Date:   Thu, 24 Nov 2022 09:38:02 +0000
From:   Nancy Lin (林欣螢) <Nancy.Lin@...iatek.com>
To:     "matthias.bgg@...il.com" <matthias.bgg@...il.com>,
        "nfraprado@...labora.com" <nfraprado@...labora.com>
CC:     "llvm@...ts.linux.dev" <llvm@...ts.linux.dev>,
        Yongqiang Niu (牛永强) 
        <yongqiang.niu@...iatek.com>,
        "robh+dt@...nel.org" <robh+dt@...nel.org>,
        Singo Chang (張興國) 
        <Singo.Chang@...iatek.com>,
        "nathan@...nel.org" <nathan@...nel.org>,
        "linux-mediatek@...ts.infradead.org" 
        <linux-mediatek@...ts.infradead.org>,
        "chunkuang.hu@...nel.org" <chunkuang.hu@...nel.org>,
        Jason-JH Lin (林睿祥) 
        <Jason-JH.Lin@...iatek.com>,
        "linux@...ck-us.net" <linux@...ck-us.net>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        "devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
        "daniel@...ll.ch" <daniel@...ll.ch>,
        "p.zabel@...gutronix.de" <p.zabel@...gutronix.de>,
        "dri-devel@...ts.freedesktop.org" <dri-devel@...ts.freedesktop.org>,
        Project_Global_Chrome_Upstream_Group 
        <Project_Global_Chrome_Upstream_Group@...iatek.com>,
        "linux-arm-kernel@...ts.infradead.org" 
        <linux-arm-kernel@...ts.infradead.org>,
        "wim@...ux-watchdog.org" <wim@...ux-watchdog.org>,
        "airlied@...ux.ie" <airlied@...ux.ie>,
        "angelogioacchino.delregno@...labora.com" 
        <angelogioacchino.delregno@...labora.com>,
        "ndesaulniers@...gle.com" <ndesaulniers@...gle.com>
Subject: Re: [PATCH v28 05/11] soc: mediatek: refine code to use
 mtk_mmsys_update_bits API

Dear Matthias,

Thanks for the review.

On Thu, 2022-11-10 at 14:12 +0100, Matthias Brugger wrote:
> 
> On 08/11/2022 20:43, Nícolas F. R. A. Prado wrote:
> > On Tue, Nov 08, 2022 at 06:37:19PM +0100, Matthias Brugger wrote:
> > > 
> > > 
> > > On 07/11/2022 08:22, Nancy.Lin wrote:
> > > > Simplify code for update  mmsys reg.
> > > > 
> > > > Signed-off-by: Nancy.Lin <nancy.lin@...iatek.com>
> > > > Reviewed-by: AngeloGioacchino Del Regno <
> > > > angelogioacchino.delregno@...labora.com>
> > > > Reviewed-by: CK Hu <ck.hu@...iatek.com>
> > > > Tested-by: AngeloGioacchino Del Regno <
> > > > angelogioacchino.delregno@...labora.com>
> > > > Tested-by: Bo-Chen Chen <rex-bc.chen@...iatek.com>
> > > > Reviewed-by: Nícolas F. R. A. Prado <nfraprado@...labora.com>
> > > > ---
> > > >    drivers/soc/mediatek/mtk-mmsys.c | 45 ++++++++++++--------
> > > > ------------
> > > >    1 file changed, 16 insertions(+), 29 deletions(-)
> > > > 
> > > > diff --git a/drivers/soc/mediatek/mtk-mmsys.c
> > > > b/drivers/soc/mediatek/mtk-mmsys.c
> > > > index 9a327eb5d9d7..73c8bd27e6ae 100644
> > > > --- a/drivers/soc/mediatek/mtk-mmsys.c
> > > > +++ b/drivers/soc/mediatek/mtk-mmsys.c
> > > > @@ -99,22 +99,27 @@ struct mtk_mmsys {
> > > >    	struct reset_controller_dev rcdev;
> > > >    };
> > > > +static void mtk_mmsys_update_bits(struct mtk_mmsys *mmsys, u32
> > > > offset, u32 mask, u32 val)
> > > > +{
> > > > +	u32 tmp;
> > > > +
> > > > +	tmp = readl_relaxed(mmsys->regs + offset);
> > > > +	tmp = (tmp & ~mask) | (val & mask);
> > > 
> > > I'm not sure about the change in the implementation of
> > > mtk_mmsys_update_bits(). Nicolas tried to explain it to me on IRC
> > > but I
> > > wasn't totally convincing. As we have to go for at least another
> > > round of
> > > this patches, I'd like to get a clear understanding while it is
> > > needed that
> > > val bits are set to 1 in the mask.
> > 
> > The point here was to make sure that mtk_mmsys_update_bits() didn't
> > allow
> > setting bits outside of the mask, since that's never what you want:
> > the entire
> > point of having a mask is to specify the bits that should be
> > updated (and the
> > ones that should be kept unchanged). So for example if you had
> > 
> > mask = 0x0ff0
> > val  = 0x00ff
> > 
> > the previous implementation would happily overwrite the 4 least
> > significant bits
> > on the destination register, despite them not being present in the
> > mask, which
> > is wrong.
> > 
> > This wrong behavior could easily lead to hard to trace bugs as soon
> > as a badly
> > formatted/wrong val is passed and an unrelated bit updated due to
> > the mask being
> > ignored.
> > 
> > For reference, _regmap_update_bits() does the same masking of the
> > value [1].
> > 
> > That said, given that this function already existed and was just
> > being moved,
> > it would've been cleaner to make this change in a separate commit.
> > 
> 
> Would have been better, but we can leave it as it.
> 
> Regards,
> Matthias
> 

Do you mean to keep original one (1), or keep this (2) ?

  1. tmp = (tmp & ~mask) | val; 
  2. tmp = (tmp & ~mask) | (val & mask);


Regards,
Nancy

> > [1] 
> > https://urldefense.com/v3/__https://elixir.bootlin.com/linux/latest/source/drivers/base/regmap/regmap.c*L3122__;Iw!!CTRNKA9wMg0ARbw!xSv5xbY6cv-Mg-1xDGOf3oVZ93uyrcv4tt87DKlx5emjmwufjf2DjION7GiNAaJB$
> >  
> > 
> > Thanks,
> > Nícolas
> > 
> > > 
> > > Regards,
> > > Matthias
> > > 
> > > > +	writel_relaxed(tmp, mmsys->regs + offset);
> > > > +}
> > 
> > [..]
> > > > -static void mtk_mmsys_update_bits(struct mtk_mmsys *mmsys, u32
> > > > offset, u32 mask, u32 val)
> > > > -{
> > > > -	u32 tmp;
> > > > -
> > > > -	tmp = readl_relaxed(mmsys->regs + offset);
> > > > -	tmp = (tmp & ~mask) | val;
> > > > -	writel_relaxed(tmp, mmsys->regs + offset);
> > > > -}
> > > > -
> > 
> > [..]
> 
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ