diff options
author | Andrew Donnellan <andrew.donnellan@au1.ibm.com> | 2018-03-01 18:57:11 +1100 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2018-03-01 20:17:54 -0600 |
commit | 11b46291111a6e77ecb8e0372ab308c4d5bee4bf (patch) | |
tree | c5bf29d8d10bc089d2a10463c1d937dbf14889cd /hw/npu2-hw-procedures.c | |
parent | 399151e1425e496dad5fb47940dafdd562f255aa (diff) | |
download | skiboot-11b46291111a6e77ecb8e0372ab308c4d5bee4bf.zip skiboot-11b46291111a6e77ecb8e0372ab308c4d5bee4bf.tar.gz skiboot-11b46291111a6e77ecb8e0372ab308c4d5bee4bf.tar.bz2 |
npu2: Rework NPU data structures for OpenCAPI
Unlike NVLink, OpenCAPI registers a separate PHB for each device, in order
to allow us to force Linux to use the correct MMIO windows for each NPU
link. This requires some reworking of NPU data structures to account for
the fact that a PHB could correspond to either an NPU (NVLink) or a single
link (OpenCAPI).
At some later point, we may want to rework the NVLink code to present a
separate PHB per device in order to simplify this. For now, we split
NVLink-specific device data into a separate struct in order to make it
clear which fields are NVLink-only.
Additionally, add helper functions to correctly translate between
OpenCAPI/NVLink PHBs and the underlying structures, and various fields
for OpenCAPI data that we're going to need later on.
Signed-off-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Acked-by: Reza Arbab <arbab@linux.vnet.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw/npu2-hw-procedures.c')
-rw-r--r-- | hw/npu2-hw-procedures.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/hw/npu2-hw-procedures.c b/hw/npu2-hw-procedures.c index 9e4a431..eb087bc 100644 --- a/hw/npu2-hw-procedures.c +++ b/hw/npu2-hw-procedures.c @@ -790,7 +790,7 @@ static int64_t npu_dev_procedure_read(struct npu2_dev *dev, uint32_t offset, if (size != 4) { /* Short config reads are not supported */ - prlog(PR_ERR, "NPU%d: Short read of procedure register\n", dev->npu->phb.opal_id); + prlog(PR_ERR, "NPU%d: Short read of procedure register\n", npu2_dev_to_phb(dev)->opal_id); return OPAL_PARAMETER; } @@ -812,7 +812,7 @@ static int64_t npu_dev_procedure_read(struct npu2_dev *dev, uint32_t offset, default: prlog(PR_ERR, "NPU%d: Invalid vendor specific offset 0x%08x\n", - dev->npu->phb.opal_id, offset); + npu2_dev_to_phb(dev)->opal_id, offset); rc = OPAL_PARAMETER; } @@ -828,7 +828,7 @@ static int64_t npu_dev_procedure_write(struct npu2_dev *dev, uint32_t offset, if (size != 4) { /* Short config writes are not supported */ prlog(PR_ERR, "NPU%d: Short read of procedure register\n", - dev->npu->phb.opal_id); + npu2_dev_to_phb(dev)->opal_id); return OPAL_PARAMETER; } |