summaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/powerpc
diff options
context:
space:
mode:
authorGautham R. Shenoy <ego@linux.vnet.ibm.com>2017-02-27 11:10:07 +0530
committerMichael Ellerman <mpe@ellerman.id.au>2017-03-03 11:24:50 +1100
commit424f8acd328a111319ae30bf384e5dfb9bc8f8cb (patch)
tree348d5c63218de5501791d521fd5df93ce7a7cf59 /tools/testing/selftests/powerpc
parent7a70d7288c926ae88e0c773fbb506aa374e99c2d (diff)
downloadblackbird-obmc-linux-424f8acd328a111319ae30bf384e5dfb9bc8f8cb.tar.gz
blackbird-obmc-linux-424f8acd328a111319ae30bf384e5dfb9bc8f8cb.zip
powerpc/powernv: Fix bug due to labeling ambiguity in power_enter_stop
Commit 09206b600c76 ("powernv: Pass PSSCR value and mask to power9_idle_stop") added additional code in power_enter_stop() to distinguish between stop requests whose PSSCR had ESL=EC=1 from those which did not. When ESL=EC=1, we do a forward-jump to a location labelled by "1", which had the code to handle the ESL=EC=1 case. Unfortunately just a couple of instructions before this label, is the macro IDLE_STATE_ENTER_SEQ() which also has a label "1" in its expansion. As a result, the current code can result in directly executing stop instruction for deep stop requests with PSSCR ESL=EC=1, without saving the hypervisor state. Fix this BUG by labeling the location that handles ESL=EC=1 case with a more descriptive label ".Lhandle_esl_ec_set" (local label suggestion a la .Lxx from Anton Blanchard). While at it, rename the label "2" labelling the location of the code handling entry into deep stop states with ".Lhandle_deep_stop". For a good measure, change the label in IDLE_STATE_ENTER_SEQ() macro to an not-so commonly used value in order to avoid similar mishaps in the future. Fixes: 09206b600c76 ("powernv: Pass PSSCR value and mask to power9_idle_stop") Signed-off-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'tools/testing/selftests/powerpc')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud