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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Wed, 13 Dec 2023 10:52:59 +0530
From:   Viresh Kumar <viresh.kumar@...aro.org>
To:     "xiaowu.ding" <xiaowu.ding@...uarmicro.com>
Cc:     Tushar.Khandelwal@....com, jassisinghbrar@...il.com,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] mailbox: arm_mhuv2: Fix a bug for
 mhuv2_sender_interrupt

On 12-12-23, 19:37, xiaowu.ding wrote:
> From: "Xiaowu.ding" <xiaowu.ding@...uarmicro.com>
> 
> Message Handling Unit version is v2.1.
> 
> When arm_mhuv2 working with the data protocol transfer mode.
> We have split one mhu into two channels, and every channel
> include four channel windows, the two channels share
> one gic spi interrupt.
> 
> There is a problem with the sending scenario.
> 
> The first channel will take up 0-3 channel windows, and the second
> channel take up 4-7 channel windows. When the first channel send the
> data, and the receiver will clear all the four channels status.
> Although we only enabled the interrupt on the last channel window with
> register CH_INT_EN,the register CHCOMB_INT_ST0 will be 0xf, not be 0x8.
> Currently we just clear the last channel windows int status with the
> data proctol mode.So after that,the CHCOMB_INT_ST0 status will be 0x7,
> not be the 0x0.
> 
> Then the second channel send the data, the receiver read the
> data, clear all the four channel windows status, trigger the sender
> interrupt. But currently the CHCOMB_INT_ST0 register will be 0xf7,
> get_irq_chan_comb function will always return the first channel.
> 
> So this patch clear all channel windows int status to avoid this interrupt
> confusion.
> 
> Signed-off-by: Xiaowu.ding <xiaowu.ding@...uarmicro.com>
> ---
>  drivers/mailbox/arm_mhuv2.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/mailbox/arm_mhuv2.c b/drivers/mailbox/arm_mhuv2.c
> index c1ef5016f..15021c90c 100644
> --- a/drivers/mailbox/arm_mhuv2.c
> +++ b/drivers/mailbox/arm_mhuv2.c
> @@ -553,7 +553,8 @@ static irqreturn_t mhuv2_sender_interrupt(int irq, void *data)
>  	priv = chan->con_priv;
>  
>  	if (!IS_PROTOCOL_DOORBELL(priv)) {
> -		writel_relaxed(1, &mhu->send->ch_wn[priv->ch_wn_idx + priv->windows - 1].int_clr);
> +		for (i = 0; i < priv->windows; i++)
> +			writel_relaxed(1, &mhu->send->ch_wn[priv->ch_wn_idx + i].int_clr);
>  
>  		if (chan->cl) {
>  			mbox_chan_txdone(chan, 0);

Acked-by: Viresh Kumar <viresh.kumar@...aro.org>

-- 
viresh

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ