aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/chip.c4
-rw-r--r--hw/imc.c10
-rw-r--r--include/chip.h1
3 files changed, 10 insertions, 5 deletions
diff --git a/core/chip.c b/core/chip.c
index cee6582..0e96e62 100644
--- a/core/chip.c
+++ b/core/chip.c
@@ -190,6 +190,10 @@ void init_chips(void)
proc_chip_quirks |= QUIRK_QEMU | QUIRK_NO_DIRECT_CTL | QUIRK_NO_RNG;
prlog(PR_NOTICE, "CHIP: Detected QEMU simulator\n");
}
+ if (dt_find_by_path(dt_root, "/bml")) {
+ proc_chip_quirks |= QUIRK_BML;
+ prlog(PR_NOTICE, "CHIP: Detected BML\n");
+ }
/* We walk the chips based on xscom nodes in the tree */
dt_for_each_compatible(dt_root, xn, "ibm,xscom") {
diff --git a/hw/imc.c b/hw/imc.c
index 9f59348..a794cc2 100644
--- a/hw/imc.c
+++ b/hw/imc.c
@@ -651,7 +651,7 @@ void imc_catalog_preload(void)
int ret = OPAL_SUCCESS;
compress_buf_size = MAX_COMPRESSED_IMC_DTB_SIZE;
- if (proc_chip_quirks & QUIRK_MAMBO_CALLOUTS)
+ if (proc_chip_quirks & (QUIRK_MAMBO_CALLOUTS | QUIRK_BML))
return;
/* Enable only for power 9/10 */
@@ -789,13 +789,13 @@ void imc_init(void)
struct dt_node *dev;
int err_flag = -1;
- if (proc_chip_quirks & QUIRK_MAMBO_CALLOUTS) {
+ if (proc_chip_quirks & (QUIRK_MAMBO_CALLOUTS | QUIRK_BML)) {
dev = dt_find_compatible_node(dt_root, NULL,
"ibm,opal-in-memory-counters");
if (!dev)
return;
- goto imc_mambo;
+ goto imc_mambo_bml;
}
/* Enable only for power 9/10 */
@@ -838,7 +838,7 @@ void imc_init(void)
goto err;
}
-imc_mambo:
+imc_mambo_bml:
if (setup_imc_scoms()) {
prerror("IMC: Failed to setup the scoms\n");
goto err;
@@ -859,7 +859,7 @@ imc_mambo:
/* Update the base_addr and chip-id for nest nodes */
imc_dt_update_nest_node(dev);
- if (proc_chip_quirks & QUIRK_MAMBO_CALLOUTS)
+ if (proc_chip_quirks & (QUIRK_MAMBO_CALLOUTS | QUIRK_BML))
return;
/*
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;