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: <f07bbbb6-3343-19c7-bd94-c8c239f1cbc8@linaro.org>
Date:   Wed, 18 Jan 2023 20:54:51 +0100
From:   Konrad Dybcio <konrad.dybcio@...aro.org>
To:     linux-arm-msm@...r.kernel.org, andersson@...nel.org,
        agross@...nel.org, krzysztof.kozlowski@...aro.org
Cc:     marijn.suijten@...ainline.org, bryan.odonoghue@...aro.org,
        Georgi Djakov <djakov@...nel.org>, linux-pm@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 8/9] interconnect: qcom: rpm: Add a way to always set
 QoS registers



On 16.01.2023 14:21, Konrad Dybcio wrote:
> On newer SoCs (there's no clear boundary, but probably "new enough"
> means every interconnect provider is either BIMC or QNoC and there
> are no old-style NoC hosts) we're expected to set QoS registers
> regardless of the ap_owned param. Add a bool in the qcom_icc_provider
> and make the logic assume it's okay to set the registers when it's
> set.
> 
> Signed-off-by: Konrad Dybcio <konrad.dybcio@...aro.org>
> ---
Argh, I only noticed now that this patch is incomplete,
missing setting the value in qnoc_probe() and adding a
similar struct member to qcom_icc_desc..

Konrad
>  drivers/interconnect/qcom/icc-rpm.c | 2 +-
>  drivers/interconnect/qcom/icc-rpm.h | 2 ++
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c
> index 509cadf398e9..343e6021a93a 100644
> --- a/drivers/interconnect/qcom/icc-rpm.c
> +++ b/drivers/interconnect/qcom/icc-rpm.c
> @@ -243,7 +243,7 @@ static int __qcom_icc_set(struct icc_node *n, struct qcom_icc_node *qn,
>  	bool vote_ap, vote_rpm;
>  	int ret;
>  
> -	if (qp->type == QCOM_ICC_QNOC) {
> +	if (qp->type == QCOM_ICC_QNOC || qp->always_set_qos) {
>  		vote_ap = true;
>  		vote_rpm = true;
>  	} else {
> diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qcom/icc-rpm.h
> index 729573f0d9fe..3c8888482a39 100644
> --- a/drivers/interconnect/qcom/icc-rpm.h
> +++ b/drivers/interconnect/qcom/icc-rpm.h
> @@ -28,6 +28,7 @@ enum qcom_icc_type {
>   * @type: the ICC provider type
>   * @regmap: regmap for QoS registers read/write access
>   * @qos_offset: offset to QoS registers
> + * @always_set_qos: whether to always set QoS registers regardless of bus type
>   * @bus_clk_rate: bus clock rate in Hz
>   * @bus_clks: the clk_bulk_data table of bus clocks
>   * @intf_clks: the clk_bulk_data table of interface clocks
> @@ -39,6 +40,7 @@ struct qcom_icc_provider {
>  	enum qcom_icc_type type;
>  	struct regmap *regmap;
>  	unsigned int qos_offset;
> +	bool always_set_qos;
>  	u64 bus_clk_rate[2];
>  	struct clk_bulk_data bus_clks[2];
>  	struct clk_bulk_data intf_clks[];

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ