From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [RESEND PATCH 0/1] Fix the "hard LOCKUP" when running a heavy loading
Date: Tue, 3 Nov 2015 11:30:30 +0000 [thread overview]
Message-ID: <20151103113030.GB14159@arm.com> (raw)
In-Reply-To: <1446538209-13490-1-git-send-email-wxt@rock-chips.com>
On Tue, Nov 03, 2015 at 04:10:08PM +0800, Caesar Wang wrote:
> As the following log:
> where we experience a CPU hard lockup. The assembly code (disassembled by gdb)
>
> 0xc06c6e90 <__tcp_select_window+148>: beq 0xc06c6eb0<__tcp_select_window+180>
> 0xc06c6e94 <__tcp_select_window+152>: mov r2, #1008; 0x3f0
> 0xc06c6e98 <__tcp_select_window+156>: ldr r5, [r0,#1004] ; 0x3ec
> 0xc06c6e9c <__tcp_select_window+160>: ldrh r2, [r0,r2]
> ....
>
> 0xc06c6ee0 <__tcp_select_window+228>: addne r0, r0, #1
> 0xc06c6ee4 <__tcp_select_window+232>: lslne r0, r0, r2
> 0xc06c6ee8 <__tcp_select_window+236>: ldmne sp, {r4, r5,r11, sp,pc}
>
> Could either the ?strhi?/?strlo? pair, or the lslne/ldmne pair, be
> tripping over errata 818325, or a similar errata?
No. One of the conditions for #818325 is:
The second instruction is an UNPREDICTABLE STR or STM (maximum two2
registers in the list) with write-back and the write-back register is
in the list of stored registers.
I don't see either of those in your code snippet above, but then I don't
see your strhi/strlo either. What's going on?
> 0xc06c6eec <__tcp_select_window+240>: b 0xc06c6f40<__tcp_select_window+324>
>
> This is patch can fix the *hard lock* in some case.
>
> As the Russell said:
> "in other words, which can be handled by updating a control register in the firmware or
> boot loader"
Russell is completely correct: this should be worked around in firmware.
There are a number of reasons for that:
(1) You want the workaround enabled for all privilege and security
levels, which means applying it before you enter the kernel.
(2) If Linux boots in non-secure, then the workaround may silently
fail to apply.
(3) The CPU may have an ECO fix, in which case we wouldn't want to
enable the workaround.
(4) Some workarounds (albeit not this one, afaict) require changing
CPU configuration that can only be done very early on, e.g. whilst
"the memory system is idle".
Now, I appreciate that doing this in the kernel may be the easiest thing
for your particular SoC, but that doesn't necessarily mean that it's the
best thing to do in the mainline kernel. Whilst there *is* precedent for
this already, we've been trying to move away from setting these bits in
the kernel for the reasons mentioned above.
Will
next prev parent reply other threads:[~2015-11-03 11:30 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-03 8:10 [RESEND PATCH 0/1] Fix the "hard LOCKUP" when running a heavy loading Caesar Wang
2015-11-03 8:10 ` [RESEND PATCH] ARM: errata: Workaround for Cortex-A12 erratum 818325 Caesar Wang
2015-11-03 8:45 ` Arnd Bergmann
2015-11-03 9:04 ` Caesar Wang
2015-11-03 10:21 ` kbuild test robot
2015-11-03 10:41 ` [PATCH v1] " Caesar Wang
2015-11-03 11:14 ` [RESEND PATCH 0/1] Fix the "hard LOCKUP" when running a heavy loading Russell King - ARM Linux
2015-11-03 12:00 ` Huang, Tao
2015-11-03 11:30 ` Will Deacon [this message]
2015-11-03 19:00 ` Doug Anderson
2015-11-06 12:17 ` Will Deacon
2015-11-09 4:39 ` Doug Anderson
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=20151103113030.GB14159@arm.com \
--to=will.deacon@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).