diff options
author | Gautham R. Shenoy <ego@linux.vnet.ibm.com> | 2020-05-26 12:51:50 +0530 |
---|---|---|
committer | Oliver O'Halloran <oohall@gmail.com> | 2020-06-03 17:15:50 +1000 |
commit | ec3c45f3889cd5f7615db5615dd6824abe32f759 (patch) | |
tree | 64b79e42f0f213a75bc93784fd769e98cf784aeb /include/chip.h | |
parent | cecc251c45b4d348e8110b2d2367b5ea4a404d51 (diff) | |
download | skiboot-ec3c45f3889cd5f7615db5615dd6824abe32f759.zip skiboot-ec3c45f3889cd5f7615db5615dd6824abe32f759.tar.gz skiboot-ec3c45f3889cd5f7615db5615dd6824abe32f759.tar.bz2 |
occ: Fix false negatives in wait_for_all_occ_init()
Currently the wait_for_all_occ_init() function determines that the
OCCs associated with every Chip has been initialized by verifying if
the "Valid" bit in pstate table of that OCC is set.
However, on chips where all the EX units are guarded, the OCC, even
though it is active, does not update the pstate_table. Currently as a
result of this, OPAL concludes that the OCC is not functional and not
only disable Pstate initialization, but incorrectly report that that
OCCs were not initialized, thereby cutting other features such as
sensors.
Fix this by ensuring that
* We check if there is atleast one active EX unit in the chip
before checking if the OCC is active.
* On platforms with OCC-OPAL communication interface version 0x90
* wait_for_all_occ_init() only checks if the occ_state in the
OCC dynamic area is set to "Active State".
* move the "Valid" bit check to add_cpu_pstate_properties(),
which is where we create the device-tree entries for
frequency scaling.
Cc: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Tested-by: Pavaman Subramaniyam <pavsubra@in.ibm.com>
Signed-off-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
Diffstat (limited to 'include/chip.h')
-rw-r--r-- | include/chip.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/chip.h b/include/chip.h index f76c837..b79b63e 100644 --- a/include/chip.h +++ b/include/chip.h @@ -192,6 +192,9 @@ struct proc_chip { /* Used by hw/dio-p9.c */ struct p9_dio *dio; + + /* Used during OCC init */ + bool ex_present; }; extern uint32_t pir_to_chip_id(uint32_t pir); |