All of lore.kernel.org
 help / color / mirror / Atom feed
From: Deepak Gupta <debug@rivosinc.com>
To: Andy Chiu <andybnac@gmail.com>
Cc: Alexandre Ghiti <alex@ghiti.fr>,
	Cyril Bur <cyrilbur@tenstorrent.com>,
	samuel.holland@sifive.com, ben.dooks@codethink.co.uk,
	palmer@dabbelt.com, linux-kernel@vger.kernel.org,
	jszhang@kernel.org, paul.walmsley@sifive.com,
	charlie@rivosinc.com, jrtc27@jrtc27.com, aou@eecs.berkeley.edu,
	linux-riscv@lists.infradead.org
Subject: Re: [PATCH] riscv: uaccess: Only restore the CSR_STATUS SUM bit
Date: Thu, 29 May 2025 10:55:20 -0700	[thread overview]
Message-ID: <aDifiKsdE-29w7-N@debug.ba.rivosinc.com> (raw)
In-Reply-To: <CAFTtA3PATS2CT-jax7eTNS=ZqU55CwGr=TeGiNX16ztfp5v9_w@mail.gmail.com>

On Thu, May 29, 2025 at 12:17:24AM +0800, Andy Chiu wrote:
>On Tue, May 27, 2025 at 4:39 AM Alexandre Ghiti <alex@ghiti.fr> wrote:
>>
>> +cc linux-riscv, Andy, Deepak
>>
>> On 5/22/25 18:09, Cyril Bur wrote:
>> > During switch to csrs will OR the value of the register into the
>> > corresponding csr. In this case we're only interested in restoring the
>> > SUM bit not the entire register.
>> >
>> > Fixes: 788aa64c0 ("riscv: save the SR_SUM status over switches")
>> > Signed-off-by: Cyril Bur <cyrilbur@tenstorrent.com>
>> > ---
>> > I've put the Fixes tag in but I assume this will get squashed into the
>> > patch. Either way I hope this works to fix the immediate issue.
>> >
>> >   arch/riscv/kernel/entry.S | 12 ++++++++----
>> >   1 file changed, 8 insertions(+), 4 deletions(-)
>> >
>> > diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S
>> > index 00bd0de9faa2..6ed3bd80903d 100644
>> > --- a/arch/riscv/kernel/entry.S
>> > +++ b/arch/riscv/kernel/entry.S
>> > @@ -399,14 +399,18 @@ SYM_FUNC_START(__switch_to)
>> >       REG_S s11, TASK_THREAD_S11_RA(a3)
>> >
>> >       /* save the user space access flag */
>> > -     li    s0, SR_SUM
>> > -     csrr  s1, CSR_STATUS
>> > -     REG_S s1, TASK_THREAD_STATUS_RA(a3)
>> > +     csrr  s0, CSR_STATUS
>> > +     REG_S s0, TASK_THREAD_STATUS_RA(a3)
>> >
>> >       /* Save the kernel shadow call stack pointer */
>> >       scs_save_current
>> > -     /* Restore context from next->thread */
>> > +     /*
>> > +      * Restore context from next->thread. csrs will OR the bits from s0 and
>> > +      * only want to restore the SR_SUM bit
>> > +      */
>> >       REG_L s0,  TASK_THREAD_STATUS_RA(a4)
>> > +     li    s1,  SR_SUM
>> > +     and   s0,  s0, s1
>> >       csrs  CSR_STATUS, s0
>> >       REG_L ra,  TASK_THREAD_RA_RA(a4)
>> >       REG_L sp,  TASK_THREAD_SP_RA(a4)
>>
>> To conclude the discussion we had here
>> https://lore.kernel.org/linux-riscv/aDCtATl2N21fBsyT@debug.ba.rivosinc.com/#t,
>> in addition to Cyril's patch above, to me we only have to rename the
>> status field into sum and we're good to go. @Andy, @Deepak @Samuel Do
>> you agree?
>
>LGTM, thanks!
>
>Andy

Sounds good to me.

>
>>
>> As this is an important fix (along with 2 other fixes, one for thead
>> vector and vdso static values), I'd like to send another PR soon for
>> inclusion in 6.16-rc1, I did not want to delay the second PR any longer.
>>
>> Thanks for your feedbacks,
>>
>> Alex
>>
>>

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: Deepak Gupta <debug@rivosinc.com>
To: Andy Chiu <andybnac@gmail.com>
Cc: Alexandre Ghiti <alex@ghiti.fr>,
	Cyril Bur <cyrilbur@tenstorrent.com>,
	samuel.holland@sifive.com, ben.dooks@codethink.co.uk,
	palmer@dabbelt.com, linux-kernel@vger.kernel.org,
	jszhang@kernel.org, paul.walmsley@sifive.com,
	charlie@rivosinc.com, jrtc27@jrtc27.com, aou@eecs.berkeley.edu,
	linux-riscv@lists.infradead.org
Subject: Re: [PATCH] riscv: uaccess: Only restore the CSR_STATUS SUM bit
Date: Thu, 29 May 2025 10:55:20 -0700	[thread overview]
Message-ID: <aDifiKsdE-29w7-N@debug.ba.rivosinc.com> (raw)
In-Reply-To: <CAFTtA3PATS2CT-jax7eTNS=ZqU55CwGr=TeGiNX16ztfp5v9_w@mail.gmail.com>

On Thu, May 29, 2025 at 12:17:24AM +0800, Andy Chiu wrote:
>On Tue, May 27, 2025 at 4:39 AM Alexandre Ghiti <alex@ghiti.fr> wrote:
>>
>> +cc linux-riscv, Andy, Deepak
>>
>> On 5/22/25 18:09, Cyril Bur wrote:
>> > During switch to csrs will OR the value of the register into the
>> > corresponding csr. In this case we're only interested in restoring the
>> > SUM bit not the entire register.
>> >
>> > Fixes: 788aa64c0 ("riscv: save the SR_SUM status over switches")
>> > Signed-off-by: Cyril Bur <cyrilbur@tenstorrent.com>
>> > ---
>> > I've put the Fixes tag in but I assume this will get squashed into the
>> > patch. Either way I hope this works to fix the immediate issue.
>> >
>> >   arch/riscv/kernel/entry.S | 12 ++++++++----
>> >   1 file changed, 8 insertions(+), 4 deletions(-)
>> >
>> > diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S
>> > index 00bd0de9faa2..6ed3bd80903d 100644
>> > --- a/arch/riscv/kernel/entry.S
>> > +++ b/arch/riscv/kernel/entry.S
>> > @@ -399,14 +399,18 @@ SYM_FUNC_START(__switch_to)
>> >       REG_S s11, TASK_THREAD_S11_RA(a3)
>> >
>> >       /* save the user space access flag */
>> > -     li    s0, SR_SUM
>> > -     csrr  s1, CSR_STATUS
>> > -     REG_S s1, TASK_THREAD_STATUS_RA(a3)
>> > +     csrr  s0, CSR_STATUS
>> > +     REG_S s0, TASK_THREAD_STATUS_RA(a3)
>> >
>> >       /* Save the kernel shadow call stack pointer */
>> >       scs_save_current
>> > -     /* Restore context from next->thread */
>> > +     /*
>> > +      * Restore context from next->thread. csrs will OR the bits from s0 and
>> > +      * only want to restore the SR_SUM bit
>> > +      */
>> >       REG_L s0,  TASK_THREAD_STATUS_RA(a4)
>> > +     li    s1,  SR_SUM
>> > +     and   s0,  s0, s1
>> >       csrs  CSR_STATUS, s0
>> >       REG_L ra,  TASK_THREAD_RA_RA(a4)
>> >       REG_L sp,  TASK_THREAD_SP_RA(a4)
>>
>> To conclude the discussion we had here
>> https://lore.kernel.org/linux-riscv/aDCtATl2N21fBsyT@debug.ba.rivosinc.com/#t,
>> in addition to Cyril's patch above, to me we only have to rename the
>> status field into sum and we're good to go. @Andy, @Deepak @Samuel Do
>> you agree?
>
>LGTM, thanks!
>
>Andy

Sounds good to me.

>
>>
>> As this is an important fix (along with 2 other fixes, one for thead
>> vector and vdso static values), I'd like to send another PR soon for
>> inclusion in 6.16-rc1, I did not want to delay the second PR any longer.
>>
>> Thanks for your feedbacks,
>>
>> Alex
>>
>>

  reply	other threads:[~2025-05-29 17:55 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-22 16:09 [PATCH] riscv: uaccess: Only restore the CSR_STATUS SUM bit Cyril Bur
2025-05-26 20:39 ` Alexandre Ghiti
2025-05-26 20:39   ` Alexandre Ghiti
2025-05-28 16:17   ` Andy Chiu
2025-05-28 16:17     ` Andy Chiu
2025-05-29 17:55     ` Deepak Gupta [this message]
2025-05-29 17:55       ` Deepak Gupta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aDifiKsdE-29w7-N@debug.ba.rivosinc.com \
    --to=debug@rivosinc.com \
    --cc=alex@ghiti.fr \
    --cc=andybnac@gmail.com \
    --cc=aou@eecs.berkeley.edu \
    --cc=ben.dooks@codethink.co.uk \
    --cc=charlie@rivosinc.com \
    --cc=cyrilbur@tenstorrent.com \
    --cc=jrtc27@jrtc27.com \
    --cc=jszhang@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=samuel.holland@sifive.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.