Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1570370 > unrolled thread

[PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access delay slot corner case

Started byGreg Kroah-Hartman <gregkh@linuxfoundation.org>
First post2017-01-31 06:50 +0100
Last post2017-02-10 14:40 +0100
Articles 4 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access delay slot corner case Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-31 06:50 +0100
    Re: [PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access  delay slot corner case Ben Hutchings <ben@decadent.org.uk> - 2017-02-10 14:00 +0100
      Re: [PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access delay  slot corner case Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-10 14:30 +0100
        Re: [PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access delay  slot corner case Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-10 14:40 +0100

#1570370 — [PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access delay slot corner case

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-01-31 06:50 +0100
Subject[PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access delay slot corner case
Message-ID<t5zuj-5gO-63@gated-at.bofh.it>
4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Vineet Gupta <vgupta@synopsys.com>

commit 9aed02feae57bf7a40cb04ea0e3017cb7a998db4 upstream.

After emulating an unaligned access in delay slot of a branch, we
pretend as the delay slot never happened - so return back to actual
branch target (or next PC if branch was not taken).

Curently we did this by handling STATUS32.DE, we also need to clear the
BTA.T bit, which is disregarded when returning from original misaligned
exception, but could cause weirdness if it took the interrupt return
path (in case interrupt was acive too)

One ARC700 customer ran into this when enabling unaligned access fixup
for kernel mode accesses as well

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arc/kernel/unaligned.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/arch/arc/kernel/unaligned.c
+++ b/arch/arc/kernel/unaligned.c
@@ -241,8 +241,9 @@ int misaligned_fixup(unsigned long addre
 	if (state.fault)
 		goto fault;
 
+	/* clear any remanants of delay slot */
 	if (delay_mode(regs)) {
-		regs->ret = regs->bta;
+		regs->ret = regs->bta ~1U;
 		regs->status32 &= ~STATUS_DE_MASK;
 	} else {
 		regs->ret += state.instr_len;

[toc] | [next] | [standalone]


#1578435 — Re: [PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access delay slot corner case

FromBen Hutchings <ben@decadent.org.uk>
Date2017-02-10 14:00 +0100
SubjectRe: [PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access delay slot corner case
Message-ID<t9iXT-3uC-9@gated-at.bofh.it>
In reply to#1570370

[Multipart message — attachments visible in raw view] — view raw

On Tue, 2017-01-31 at 06:37 +0100, Greg Kroah-Hartman wrote:
> 4.4-stable review patch.  If anyone has any objections, please let me know.
> 
> ------------------
> 
> From: Vineet Gupta <vgupta@synopsys.com>
> 
> commit 9aed02feae57bf7a40cb04ea0e3017cb7a998db4 upstream.
> 
> After emulating an unaligned access in delay slot of a branch, we
> pretend as the delay slot never happened - so return back to actual
> branch target (or next PC if branch was not taken).
> 
> Curently we did this by handling STATUS32.DE, we also need to clear the
> BTA.T bit, which is disregarded when returning from original misaligned
> exception, but could cause weirdness if it took the interrupt return
> path (in case interrupt was acive too)
> 
> One ARC700 customer ran into this when enabling unaligned access fixup
> for kernel mode accesses as well
> 
> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> 
> ---
>  arch/arc/kernel/unaligned.c |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> --- a/arch/arc/kernel/unaligned.c
> +++ b/arch/arc/kernel/unaligned.c
> @@ -241,8 +241,9 @@ int misaligned_fixup(unsigned long addre
>  	if (state.fault)
>  		goto fault;
>  
> +	/* clear any remanants of delay slot */
>  	if (delay_mode(regs)) {
> -		regs->ret = regs->bta;
> +		regs->ret = regs->bta ~1U;

Unless you're doing something terrible with macros, this is missing an
& operator.  I doubt this even compiled (looks like it's only used in
some ARC configurations).

Ben.

>  		regs->status32 &= ~STATUS_DE_MASK;
>  	} else {
>  		regs->ret += state.instr_len;



-- 
Ben Hutchings
It's easier to fight for one's principles than to live up to them.

[toc] | [prev] | [next] | [standalone]


#1578444 — Re: [PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access delay slot corner case

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-02-10 14:30 +0100
SubjectRe: [PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access delay slot corner case
Message-ID<t9jqV-3TZ-7@gated-at.bofh.it>
In reply to#1578435
On Fri, Feb 10, 2017 at 12:51:48PM +0000, Ben Hutchings wrote:
> On Tue, 2017-01-31 at 06:37 +0100, Greg Kroah-Hartman wrote:
> > 4.4-stable review patch.  If anyone has any objections, please let me know.
> > 
> > ------------------
> > 
> > From: Vineet Gupta <vgupta@synopsys.com>
> > 
> > commit 9aed02feae57bf7a40cb04ea0e3017cb7a998db4 upstream.
> > 
> > After emulating an unaligned access in delay slot of a branch, we
> > pretend as the delay slot never happened - so return back to actual
> > branch target (or next PC if branch was not taken).
> > 
> > Curently we did this by handling STATUS32.DE, we also need to clear the
> > BTA.T bit, which is disregarded when returning from original misaligned
> > exception, but could cause weirdness if it took the interrupt return
> > path (in case interrupt was acive too)
> > 
> > One ARC700 customer ran into this when enabling unaligned access fixup
> > for kernel mode accesses as well
> > 
> > Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > 
> > ---
> >  arch/arc/kernel/unaligned.c |    3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > --- a/arch/arc/kernel/unaligned.c
> > +++ b/arch/arc/kernel/unaligned.c
> > @@ -241,8 +241,9 @@ int misaligned_fixup(unsigned long addre
> >  	if (state.fault)
> >  		goto fault;
> >  
> > +	/* clear any remanants of delay slot */
> >  	if (delay_mode(regs)) {
> > -		regs->ret = regs->bta;
> > +		regs->ret = regs->bta ~1U;
> 
> Unless you're doing something terrible with macros, this is missing an
> & operator.  I doubt this even compiled (looks like it's only used in
> some ARC configurations).

Hah, that's funny, it's obvious it isn't part of anyone's build tests,
so I guess it must be just fine :)

thanks,

greg k-h

[toc] | [prev] | [next] | [standalone]


#1578455 — Re: [PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access delay slot corner case

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-02-10 14:40 +0100
SubjectRe: [PATCH 4.4 12/23] ARC: [arcompact] handle unaligned access delay slot corner case
Message-ID<t9jAC-3XQ-15@gated-at.bofh.it>
In reply to#1578444
On Fri, Feb 10, 2017 at 02:19:25PM +0100, Greg Kroah-Hartman wrote:
> On Fri, Feb 10, 2017 at 12:51:48PM +0000, Ben Hutchings wrote:
> > On Tue, 2017-01-31 at 06:37 +0100, Greg Kroah-Hartman wrote:
> > > 4.4-stable review patch.  If anyone has any objections, please let me know.
> > > 
> > > ------------------
> > > 
> > > From: Vineet Gupta <vgupta@synopsys.com>
> > > 
> > > commit 9aed02feae57bf7a40cb04ea0e3017cb7a998db4 upstream.
> > > 
> > > After emulating an unaligned access in delay slot of a branch, we
> > > pretend as the delay slot never happened - so return back to actual
> > > branch target (or next PC if branch was not taken).
> > > 
> > > Curently we did this by handling STATUS32.DE, we also need to clear the
> > > BTA.T bit, which is disregarded when returning from original misaligned
> > > exception, but could cause weirdness if it took the interrupt return
> > > path (in case interrupt was acive too)
> > > 
> > > One ARC700 customer ran into this when enabling unaligned access fixup
> > > for kernel mode accesses as well
> > > 
> > > Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
> > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > 
> > > ---
> > >  arch/arc/kernel/unaligned.c |    3 ++-
> > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > > 
> > > --- a/arch/arc/kernel/unaligned.c
> > > +++ b/arch/arc/kernel/unaligned.c
> > > @@ -241,8 +241,9 @@ int misaligned_fixup(unsigned long addre
> > >  	if (state.fault)
> > >  		goto fault;
> > >  
> > > +	/* clear any remanants of delay slot */
> > >  	if (delay_mode(regs)) {
> > > -		regs->ret = regs->bta;
> > > +		regs->ret = regs->bta ~1U;
> > 
> > Unless you're doing something terrible with macros, this is missing an
> > & operator.  I doubt this even compiled (looks like it's only used in
> > some ARC configurations).
> 
> Hah, that's funny, it's obvious it isn't part of anyone's build tests,
> so I guess it must be just fine :)

Ah, nevermind, commit a524c218bc94c705886a0e0fedeee45d1931da32 that just
went into Linus's tree this week fixes this...

greg k-h

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web