aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorVasant Hegde <hegdevasant@linux.vnet.ibm.com>2021-08-04 12:50:56 +0530
committerVasant Hegde <hegdevasant@linux.vnet.ibm.com>2021-08-06 12:21:54 +0530
commite813a0c09dc08aea7144425e1d4ee6c9134e9f47 (patch)
treeade061281b32f874a42e5ad4c8ea502a14800764 /include
parenta2d4d7f9e14a387371815828e4d46a9943453969 (diff)
downloadskiboot-e813a0c09dc08aea7144425e1d4ee6c9134e9f47.zip
skiboot-e813a0c09dc08aea7144425e1d4ee6c9134e9f47.tar.gz
skiboot-e813a0c09dc08aea7144425e1d4ee6c9134e9f47.tar.bz2
phys/P10: Use topology index to get phys mapping
This fixes multipchip rainier boot issue. for Rainer: chip0: ibm,primary-topology-index = < 0x0>; chip1: ibm,primary-topology-index = < 0x4>; chip2: ibm,primary-topology-index = < 0x8>; chip3: ibm,primary-topology-index = < 0xc>; for Denali: node0: chip0: ibm,primary-topology-index = < 0x0>; chip1: ibm,primary-topology-index = < 0x1>; chip2: ibm,primary-topology-index = < 0x2>; chip3: ibm,primary-topology-index = < 0x3>; node1: chip0: ibm,primary-topology-index = < 0x4>; chip1: ibm,primary-topology-index = < 0x5>; chip2: ibm,primary-topology-index = < 0x6>; chip3: ibm,primary-topology-index = < 0x7>; Note that bmc_create_node() gets called very early in the boot process. Hence we have to traverse through HDAT ntuple to get right topology index. May be we can optimize pcid_to_topology_idx() function as its pretty much duplicate of pcid_to_chip_id(). But for now lets keep it as separate function. Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Ryan Grimm <grimm@linux.ibm.com> Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Diffstat (limited to 'include')
-rw-r--r--include/phys-map.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/phys-map.h b/include/phys-map.h
index ae7a4aa..97351a7 100644
--- a/include/phys-map.h
+++ b/include/phys-map.h
@@ -48,6 +48,9 @@ enum phys_map_type {
extern void phys_map_get(uint64_t gcid, enum phys_map_type type,
int index, uint64_t *addr, uint64_t *size);
+extern void __phys_map_get(uint64_t topology_idx, uint64_t gcid,
+ enum phys_map_type type, int index, uint64_t *addr, uint64_t *size);
+
extern void phys_map_init(unsigned long pvr);
#endif /* __PHYS_MAP_H */