diff options
author | Ryan Grimm <grimm@linux.ibm.com> | 2023-08-14 15:02:50 -0400 |
---|---|---|
committer | Ryan Grimm <grimm@linux.ibm.com> | 2023-11-27 11:41:13 -0500 |
commit | 48265d110bba2493c503f1090e969dbd53c4e264 (patch) | |
tree | 4e7386719e5a7d089fa581800e0ed61e5a7ee578 /include | |
parent | 5c1dc620a01d1d488f1cc77c0431d54c8461818e (diff) | |
download | skiboot-48265d110bba2493c503f1090e969dbd53c4e264.zip skiboot-48265d110bba2493c503f1090e969dbd53c4e264.tar.gz skiboot-48265d110bba2493c503f1090e969dbd53c4e264.tar.bz2 |
hw/imc: Detect BML and fix core counters
On systems running BML we started noticing this in the skiboot log:
[ 409.088819302,3] XSCOM: write error gcid=0x0 pcb_addr=0x20000060 stat=0x4
[ 409.088823446,3] ELOG: Error getting buffer to log error
[ 409.088824806,3] XSCOM: Write failed, ret = -26
[ 409.088825797,3] IMC: error in xscom_write for pdbar
[ 0.468976][ T19] core_imc memory allocation for cpu 0 failed
[ 0.468993][ T1] IMC PMU core_imc Register failed
I tracked down that bad pcb_addr to this line in the code:
pdbar_addr = get_imc_scom_addr_for_quad(phys_core_id,
pdbar_scom_index[port_id]);
I found that pdbar_scom_index was not initialized because, like mambo, we don't
have the IMC catalog in memory. So, in imc_init we error out and never
initialize it in setup_imc_scoms.
This patch adds a chip quirk QUIRK_BML because it seems like a reasonable thing
to do and it's easy to put a BML {}; in the device tree like Mambo, Awan, etc.
It is tested on a Rainier and errors are gone and /sys/devices/core_imc shows
up as expected.
Signed-off-by: Ryan Grimm <grimm@linux.ibm.com>
Reviewed-By: Madhavan Srinivasan <maddy@linux.ibm.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/chip.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/chip.h b/include/chip.h index cfa5ce3..c90b8a7 100644 --- a/include/chip.h +++ b/include/chip.h @@ -187,6 +187,7 @@ enum proc_chip_quirks { QUIRK_NO_RNG = 0x00000100, QUIRK_QEMU = 0x00000200, QUIRK_AWAN = 0x00000400, + QUIRK_BML = 0x00000800, }; extern enum proc_chip_quirks proc_chip_quirks; |