aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorRyan Grimm <grimm@linux.ibm.com>2021-08-04 12:51:03 +0530
committerVasant Hegde <hegdevasant@linux.vnet.ibm.com>2021-08-06 12:23:49 +0530
commit8e5d736cb87ff7577df8b8008bf364693f48b614 (patch)
treebd260ebdba9e6fd6746de99cc0dd86f2f13e805b /hw
parent1cf5e13ae554cadeb1abedd9c5cafc0d7bd56a16 (diff)
downloadskiboot-8e5d736cb87ff7577df8b8008bf364693f48b614.zip
skiboot-8e5d736cb87ff7577df8b8008bf364693f48b614.tar.gz
skiboot-8e5d736cb87ff7577df8b8008bf364693f48b614.tar.bz2
hw/nx: Enable p10 DARN
Init and enable NCU DARN BAR on sibling cores as well for fused core mode. Signed-off-by: Ryan Grimm <grimm@linux.ibm.com> Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.ibm.com> [Folded Vaidy's fused core support fix - Vasant] Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Diffstat (limited to 'hw')
-rw-r--r--hw/nx.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/hw/nx.c b/hw/nx.c
index 1220480..fdadf53 100644
--- a/hw/nx.c
+++ b/hw/nx.c
@@ -12,11 +12,12 @@
#include <nx.h>
#include <chip.h>
#include <xscom-p9-regs.h>
+#include <xscom-p10-regs.h>
#include <phys-map.h>
#include <vas.h>
#include <p9_stop_api.H>
-static void p9_darn_init(void)
+static void darn_init(void)
{
struct dt_node *nx;
struct proc_chip *chip;
@@ -45,11 +46,25 @@ static void p9_darn_init(void)
for_each_available_core_in_chip(c, chip->id) {
uint64_t addr;
- addr = XSCOM_ADDR_P9_EX(pir_to_core_id(c->pir),
+
+ if (proc_gen == proc_gen_p9) {
+ addr = XSCOM_ADDR_P9_EX(pir_to_core_id(c->pir),
P9X_EX_NCU_DARN_BAR);
- xscom_write(chip->id, addr,
+ xscom_write(chip->id, addr,
bar | P9X_EX_NCU_DARN_BAR_EN);
-
+ } else if (proc_gen >= proc_gen_p10) {
+ addr = XSCOM_ADDR_P10_NCU(pir_to_core_id(c->pir),
+ P10_NCU_DARN_BAR);
+ xscom_write(chip->id, addr,
+ bar | P10_NCU_DARN_BAR_EN);
+ /* Init for sibling core also */
+ if (c->is_fused_core) {
+ addr = XSCOM_ADDR_P10_NCU(pir_to_core_id(c->pir + 1),
+ P10_NCU_DARN_BAR);
+ xscom_write(chip->id, addr,
+ bar | P10_NCU_DARN_BAR_EN);
+ }
+ }
}
}
}
@@ -59,7 +74,7 @@ void nx_p9_rng_late_init(void)
struct cpu_thread *c;
uint64_t rc;
- if (proc_gen != proc_gen_p9)
+ if (proc_gen < proc_gen_p9)
return;
if (chip_quirk(QUIRK_NO_RNG))
return;
@@ -118,6 +133,6 @@ void nx_init(void)
nx_init_one(node);
}
- if (proc_gen == proc_gen_p9)
- p9_darn_init();
+ if (proc_gen >= proc_gen_p9)
+ darn_init();
}