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] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 27 Oct 2020 10:44:46 +0800
From:   Nicolas Boichat <drinkcat@...omium.org>
To:     Enric Balletbo i Serra <enric.balletbo@...labora.com>
Cc:     lkml <linux-kernel@...r.kernel.org>,
        Matthias Brugger <matthias.bgg@...il.com>,
        Hsin-Yi Wang <hsinyi@...omium.org>,
        Collabora Kernel ML <kernel@...labora.com>,
        Fabien Parent <fparent@...libre.com>,
        Weiyi Lu <weiyi.lu@...iatek.com>,
        Matthias Brugger <mbrugger@...e.com>,
        linux-arm Mailing List <linux-arm-kernel@...ts.infradead.org>,
        "moderated list:ARM/Mediatek SoC support" 
        <linux-mediatek@...ts.infradead.org>
Subject: Re: [PATCH v3 06/16] soc: mediatek: pm-domains: Add SMI block as bus
 protection block

On Tue, Oct 27, 2020 at 1:55 AM Enric Balletbo i Serra
<enric.balletbo@...labora.com> wrote:
>
> From: Matthias Brugger <mbrugger@...e.com>
>
> Apart from the infracfg block, the SMI block is used to enable the bus
> protection for some power domains. Add support for this block.
>
> Signed-off-by: Matthias Brugger <mbrugger@...e.com>
> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@...labora.com>
> ---
>
> Changes in v3:
> - Do not reuse bpd for 2 different things.
> - Disable pd->smi first and after that pd->infracfg.
> - Rename BUT_PROT_UPDATE_MT8173 to BUS_PROT_UPDATE_TOPAXI as in all the
>   other SoCs TOPAXI is mapped to the same address.
>
[snip]
>  static int scpsys_power_on(struct generic_pm_domain *genpd)
> @@ -266,6 +271,10 @@ generic_pm_domain *scpsys_add_one_domain(struct scpsys *scpsys, struct device_no
>         if (IS_ERR(pd->infracfg))
>                 pd->infracfg = NULL;
>
> +       pd->smi = syscon_regmap_lookup_by_phandle(node, "mediatek,smi");
> +       if (IS_ERR(pd->smi))
> +               pd->smi = NULL;

This is the second time I see this pattern, I think.

Do we want to create a new syscon_regmap_lookup_by_phandle_optional wrapper?

Also, are we ok with ignoring all errors? I agree we can ignore
-ENODEV if optional, but I'm not sure about the others.

> +
>         pd->num_clks = of_clk_get_parent_count(node);
>         if (pd->num_clks > 0) {
>                 pd->clks = devm_kcalloc(scpsys->dev, pd->num_clks, sizeof(*pd->clks), GFP_KERNEL);
> diff --git a/drivers/soc/mediatek/mtk-pm-domains.h b/drivers/soc/mediatek/mtk-pm-domains.h
> index e428fe23a7e3..7b1abcfc4ba3 100644
> --- a/drivers/soc/mediatek/mtk-pm-domains.h
> +++ b/drivers/soc/mediatek/mtk-pm-domains.h
> @@ -34,8 +34,31 @@
>
>  #define SPM_MAX_BUS_PROT_DATA          3
>
> +#define _BUS_PROT(_mask, _set, _clr, _sta, _update) {  \
> +               .bus_prot_mask = (_mask),               \
> +               .bus_prot_set = _set,                   \
> +               .bus_prot_clr = _clr,                   \
> +               .bus_prot_sta = _sta,                   \
> +               .bus_prot_reg_update = _update,         \
> +       }
> +
> +#define BUS_PROT_WR(_mask, _set, _clr, _sta)           \
> +               _BUS_PROT(_mask, _set, _clr, _sta, false)
> +
> +#define BUS_PROT_UPDATE(_mask, _set, _clr, _sta)               \
> +               _BUS_PROT(_mask, _set, _clr, _sta, true)
> +
> +#define BUS_PROT_UPDATE_TOPAXI(_mask)                          \
> +               BUS_PROT_UPDATE(_mask,                          \
> +                               INFRA_TOPAXI_PROTECTEN,         \
> +                               INFRA_TOPAXI_PROTECTEN_CLR,     \
> +                               INFRA_TOPAXI_PROTECTSTA1)
> +
>  struct scpsys_bus_prot_data {
>         u32 bus_prot_mask;
> +       u32 bus_prot_set;
> +       u32 bus_prot_clr;
> +       u32 bus_prot_sta;
>         bool bus_prot_reg_update;
>  };
>
> @@ -47,6 +70,7 @@ struct scpsys_bus_prot_data {
>   * @sram_pdn_ack_bits: The mask for sram power control acked bits.
>   * @caps: The flag for active wake-up action.
>   * @bp_infracfg: bus protection for infracfg subsystem
> + * @bp_smi: bus protection for smi subsystem
>   */
>  struct scpsys_domain_data {
>         u32 sta_mask;
> @@ -55,6 +79,7 @@ struct scpsys_domain_data {
>         u32 sram_pdn_ack_bits;
>         u8 caps;
>         const struct scpsys_bus_prot_data bp_infracfg[SPM_MAX_BUS_PROT_DATA];
> +       const struct scpsys_bus_prot_data bp_smi[SPM_MAX_BUS_PROT_DATA];
>  };
>
>  struct scpsys_soc_data {
> --
> 2.28.0
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ