From fd642c6bf549be5dc8c8e4877ab64a920ba54be9 Mon Sep 17 00:00:00 2001 From: Nick Bofferding Date: Tue, 26 Jun 2018 01:49:20 -0500 Subject: Invoke P9 TIs correctly Prior to this change, the assembly code to invoke p9 attentions did not flush the instruction cache, which led to the alternative behavior of the attn instruction, namely invoking the hypervisor emulation assistance interrupt / illegal instruction handler. This caused chaos in the shutdown path, especially after the CPUs come online in istep 16. Change-Id: I7c5bf4342a41136e82326da285eed059d4fb17a3 CQ: SW419736 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/61351 Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell --- src/kernel/forceattn_p8.S | 44 ------------------------------------------- src/kernel/forceattn_p9.S | 48 +++++++++++++++++++++++++++++++++++++++++++++++ src/kernel/makefile | 4 ++-- src/kernel/terminate.C | 4 ++-- 4 files changed, 52 insertions(+), 48 deletions(-) delete mode 100644 src/kernel/forceattn_p8.S create mode 100644 src/kernel/forceattn_p9.S (limited to 'src/kernel') diff --git a/src/kernel/forceattn_p8.S b/src/kernel/forceattn_p8.S deleted file mode 100644 index c1a31e045..000000000 --- a/src/kernel/forceattn_p8.S +++ /dev/null @@ -1,44 +0,0 @@ -# IBM_PROLOG_BEGIN_TAG -# This is an automatically generated prolog. -# -# $Source: src/kernel/forceattn_p8.S $ -# -# OpenPOWER HostBoot Project -# -# Contributors Listed Below - COPYRIGHT 2012,2018 -# [+] International Business Machines Corp. -# -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. See the License for the specific language governing -# permissions and limitations under the License. -# -# IBM_PROLOG_END_TAG -.include "kernel/ppcconsts.S" - - -.global p8_force_attn -p8_force_attn: - li r0, 1 - mfspr r9, HID0 - insrdi r9,r0,1,3 /* Turn on bit 3 */ - sync - mtspr HID0,r9 /* Enable attentions */ - mfspr r9, HID0 - mfspr r9, HID0 - mfspr r9, HID0 - mfspr r9, HID0 - mfspr r9, HID0 - mfspr r9, HID0 - isync - rlwimi 31,31,0,4,22 /* MAGIC_SIMICS_SHUTDOWN */ - attn - b 0 diff --git a/src/kernel/forceattn_p9.S b/src/kernel/forceattn_p9.S new file mode 100644 index 000000000..093908ed8 --- /dev/null +++ b/src/kernel/forceattn_p9.S @@ -0,0 +1,48 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/kernel/forceattn_p9.S $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2012,2018 +# [+] International Business Machines Corp. +# +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. +# +# IBM_PROLOG_END_TAG +.include "kernel/ppcconsts.S" + + +.global p9_force_attn +p9_force_attn: +# Update HID0 to enable attentions + li r0, 3 + mfspr r9, HID0 + rldimi r9,r0,60,2 /* Turn on bits 2 (flush icache) + 3 (enable attn) */ + sync + mtspr HID0,r9 /* Enable attentions */ + mfspr r9, HID0 + mfspr r9, HID0 + mfspr r9, HID0 + mfspr r9, HID0 + mfspr r9, HID0 + mfspr r9, HID0 + isync +# Invoke attention instruction + sync + isync + rlwimi 31,31,0,4,22 /* MAGIC_SIMICS_SHUTDOWN */ + attn + b 0 diff --git a/src/kernel/makefile b/src/kernel/makefile index ddf3909ab..004dfbe74 100644 --- a/src/kernel/makefile +++ b/src/kernel/makefile @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2010,2017 +# Contributors Listed Below - COPYRIGHT 2010,2018 # [+] International Business Machines Corp. # # @@ -59,7 +59,7 @@ OBJS += intmsghandler.o OBJS += deferred.o OBJS += shutdown.o -OBJS += forceattn_p8.o +OBJS += forceattn_p9.o OBJS += terminate.o OBJS += ipc.o OBJS += machchk.o diff --git a/src/kernel/terminate.C b/src/kernel/terminate.C index 499fd96b9..6158b3c49 100644 --- a/src/kernel/terminate.C +++ b/src/kernel/terminate.C @@ -35,7 +35,7 @@ #include #endif // BOOTLOADER -extern "C" void p8_force_attn() NO_RETURN; +extern "C" void p9_force_attn() NO_RETURN; #ifndef BOOTLOADER @@ -55,7 +55,7 @@ HB_Descriptor kernel_hbDescriptor = void terminateExecuteTI() { // Call the function that actually executes the TI code. - p8_force_attn(); + p9_force_attn(); } #ifndef BOOTLOADER -- cgit v1.2.3