Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1570370 > unrolled thread
| Started by | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| First post | 2017-01-31 06:50 +0100 |
| Last post | 2017-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.
[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
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-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]
| From | Ben Hutchings <ben@decadent.org.uk> |
|---|---|
| Date | 2017-02-10 14:00 +0100 |
| Subject | Re: [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]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-02-10 14:30 +0100 |
| Subject | Re: [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]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-02-10 14:40 +0100 |
| Subject | Re: [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