summaryrefslogtreecommitdiffstats
path: root/hw/npu2.c
diff options
context:
space:
mode:
authorAndrew Donnellan <andrew.donnellan@au1.ibm.com>2018-09-14 13:46:23 +1000
committerStewart Smith <stewart@linux.ibm.com>2018-09-17 21:39:01 -0500
commit7ecb29651c311e35e30fbbebc675cae3e97c8d53 (patch)
tree464ef7b3cc7225d14530f963b94fd08c6b3c19d3 /hw/npu2.c
parentecc4a562b5d17487899765609cb480629bacecde (diff)
downloadblackbird-skiboot-7ecb29651c311e35e30fbbebc675cae3e97c8d53.tar.gz
blackbird-skiboot-7ecb29651c311e35e30fbbebc675cae3e97c8d53.zip
npu2: Split device index into brick and link index
On Witherspoon, OpenCAPI devices attached to link indexes 0 and 1 are handled by bricks 2 and 3. Rename index to brick_index, and add a new field, link_index, to refer to the link index. For now, we set those values identically. Signed-off-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> Acked-by: Reza Arbab <arbab@linux.ibm.com> Reviewed-by: Alistair Popple <alistair@popple.id.au> Reviewed-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
Diffstat (limited to 'hw/npu2.c')
-rw-r--r--hw/npu2.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/hw/npu2.c b/hw/npu2.c
index 8cee628a..3672638e 100644
--- a/hw/npu2.c
+++ b/hw/npu2.c
@@ -1075,10 +1075,10 @@ static int64_t npu2_set_pe(struct phb *phb,
val = SETFIELD(NPU2_CQ_BRICK_BDF2PE_MAP_BDF, val, dev->nvlink.gpu_bdfn);
if (!NPU2DEV_BRICK(dev))
- reg = NPU2_REG_OFFSET(NPU2_STACK_STCK_0 + dev->index/2,
+ reg = NPU2_REG_OFFSET(NPU2_STACK_STCK_0 + dev->brick_index/2,
NPU2_BLOCK_CTL, NPU2_CQ_BRICK0_BDF2PE_MAP0);
else
- reg = NPU2_REG_OFFSET(NPU2_STACK_STCK_0 + dev->index/2,
+ reg = NPU2_REG_OFFSET(NPU2_STACK_STCK_0 + dev->brick_index/2,
NPU2_BLOCK_CTL, NPU2_CQ_BRICK1_BDF2PE_MAP0);
npu2_write(p, reg, val);
@@ -1086,8 +1086,8 @@ static int64_t npu2_set_pe(struct phb *phb,
val = SETFIELD(NPU2_MISC_BRICK_BDF2PE_MAP_PE, val, pe_num);
val = SETFIELD(NPU2_MISC_BRICK_BDF2PE_MAP_BDF, val, dev->nvlink.gpu_bdfn);
reg = NPU2_REG_OFFSET(NPU2_STACK_MISC, NPU2_BLOCK_MISC,
- NPU2_MISC_BRICK0_BDF2PE_MAP0 + (dev->index * 0x18));
- p->bdf2pe_cache[dev->index] = val;
+ NPU2_MISC_BRICK0_BDF2PE_MAP0 + (dev->brick_index * 0x18));
+ p->bdf2pe_cache[dev->brick_index] = val;
npu2_write(p, reg, val);
return OPAL_SUCCESS;
@@ -1601,7 +1601,7 @@ static uint32_t npu2_populate_vendor_cap(struct npu2_dev *dev,
NULL);
/* Link index */
- PCI_VIRT_CFG_INIT_RO(pvd, start + 0xc, 1, dev->index);
+ PCI_VIRT_CFG_INIT_RO(pvd, start + 0xc, 1, dev->link_index);
return start + VENDOR_CAP_LEN;
}
@@ -1725,7 +1725,8 @@ static void npu2_populate_devices(struct npu2 *p,
dev->type = NPU2_DEV_TYPE_NVLINK;
dev->npu = p;
dev->dt_node = link;
- dev->index = dt_prop_get_u32(link, "ibm,npu-link-index");
+ dev->link_index = dt_prop_get_u32(link, "ibm,npu-link-index");
+ dev->brick_index = dev->link_index;
group_id = dt_prop_get_u32(link, "ibm,npu-group-id");
dev->bdfn = npu_allocate_bdfn(p, group_id);
@@ -1742,7 +1743,7 @@ static void npu2_populate_devices(struct npu2 *p,
stack = NPU2_STACK_STCK_0 + NPU2DEV_STACK(dev);
npu2_bar = &dev->bars[0].npu2_bar;
npu2_bar->type = NPU_NTL;
- npu2_bar->index = dev->index;
+ npu2_bar->index = dev->brick_index;
npu2_bar->reg = NPU2_REG_OFFSET(stack, 0, NPU2DEV_BRICK(dev) == 0 ?
NPU2_NTL0_BAR : NPU2_NTL1_BAR);
npu2_get_bar(p->chip_id, npu2_bar);
@@ -2248,8 +2249,10 @@ static int opal_npu_map_lpar(uint64_t phb_id, uint64_t bdf, uint64_t lparid,
goto out;
}
- xts_bdf_lpar = SETFIELD(NPU2_XTS_BDF_MAP_STACK, xts_bdf_lpar, 0x4 >> (ndev->index / 2));
- xts_bdf_lpar = SETFIELD(NPU2_XTS_BDF_MAP_BRICK, xts_bdf_lpar, (ndev->index % 2));
+ xts_bdf_lpar = SETFIELD(NPU2_XTS_BDF_MAP_STACK, xts_bdf_lpar,
+ 0x4 >> (ndev->brick_index / 2));
+ xts_bdf_lpar = SETFIELD(NPU2_XTS_BDF_MAP_BRICK, xts_bdf_lpar,
+ (ndev->brick_index % 2));
NPU2DBG(p, "XTS_BDF_MAP[%03d] = 0x%08llx\n", id, xts_bdf_lpar);
npu2_write(p, NPU2_XTS_BDF_MAP + id*8, xts_bdf_lpar);
OpenPOWER on IntegriCloud