summaryrefslogtreecommitdiff
path: root/include/linux/processor.h
diff options
context:
space:
mode:
authorAkshay Adiga <akshay.adiga@linux.vnet.ibm.com>2017-06-28 06:46:49 +0530
committerMichael Ellerman <mpe@ellerman.id.au>2017-06-28 22:46:06 +1000
commit4d0d7c02df680740da41f5f92a238c35796ca5be (patch)
tree7d364419a6b427cd485e66e5211cabc63dfeafba /include/linux/processor.h
parent39e46751839dfe4c34eb354eee1e278082fc9d07 (diff)
downloadlinux-4d0d7c02df680740da41f5f92a238c35796ca5be.tar.gz
linux-4d0d7c02df680740da41f5f92a238c35796ca5be.tar.xz
powerpc/powernv/idle: Clear r12 on wakeup from stop lite
pnv_wakeup_noloss() expects r12 to contain SRR1 value to determine if the wakeup reason is an HMI in CHECK_HMI_INTERRUPT. When we wakeup with ESL=0, SRR1 will not contain the wakeup reason, so there is no point setting r12 to SRR1. However, we don't set r12 at all so r12 contains garbage (likely a kernel pointer), and is still used to check HMI assuming that it contained SRR1. This causes the OPAL msglog to be filled with the following print: HMI: Received HMI interrupt: HMER = 0x0040000000000000 This patch clears r12 after waking up from stop with ESL=EC=0, so that we don't accidentally enter the HMI handler in pnv_wakeup_noloss() if the value of r12[42:45] corresponds to HMI as wakeup reason. Prior to commit 9d29250136f6 ("powerpc/64s/idle: Avoid SRR usage in idle sleep/wake paths") this bug existed, in that we would incorrectly look at SRR1 to check for a HMI when SRR1 didn't contain a wakeup reason. However the SRR1 value would just happen to never have bits 42:45 set. Fixes: 9d29250136f6 ("powerpc/64s/idle: Avoid SRR usage in idle sleep/wake paths") Signed-off-by: Akshay Adiga <akshay.adiga@linux.vnet.ibm.com> Reviewed-by: Nicholas Piggin <npiggin@gmail.com> [mpe: Change log and comment massaging] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'include/linux/processor.h')
0 files changed, 0 insertions, 0 deletions