diff options
author | Frederic Barrat <fbarrat@linux.ibm.com> | 2019-10-09 21:38:10 +0200 |
---|---|---|
committer | Oliver O'Halloran <oohall@gmail.com> | 2019-10-22 17:31:50 +1100 |
commit | 9d5faafc56f5cac7ba848bc684835353e039f048 (patch) | |
tree | cbbf1b2f4d3f5ac85e38f6a94dc38df9ffa0f14b | |
parent | 6299d3e51b16b47a00685da70688df634dedc7df (diff) | |
download | skiboot-9d5faafc56f5cac7ba848bc684835353e039f048.zip skiboot-9d5faafc56f5cac7ba848bc684835353e039f048.tar.gz skiboot-9d5faafc56f5cac7ba848bc684835353e039f048.tar.bz2 |
npu2-opencapi: Handle OPAL_UNMAP_PE operation on set_pe() callback
In a hot-unplug scenario, the OS will try to unmap the PE. Skiboot
doesn't do anything with the linux PE for opencapi other than being a
mailbox, but at least let's be consistent.
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Reviewed-by: Christophe Lombard <clombard@linux.vnet.ibm.com>
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
-rw-r--r-- | hw/npu2-opencapi.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/hw/npu2-opencapi.c b/hw/npu2-opencapi.c index f5c821d..5658ec6 100644 --- a/hw/npu2-opencapi.c +++ b/hw/npu2-opencapi.c @@ -1489,7 +1489,7 @@ static int64_t npu2_opencapi_set_pe(struct phb *phb, uint8_t __unused bcompare, uint8_t __unused dcompare, uint8_t __unused fcompare, - uint8_t __unused action) + uint8_t action) { struct npu2_dev *dev = phb_to_npu2_dev_ocapi(phb); /* @@ -1501,6 +1501,11 @@ static int64_t npu2_opencapi_set_pe(struct phb *phb, * functions on the device, the OS can define many PEs, we * only keep one, the OS will handle it. */ + if (action != OPAL_MAP_PE && action != OPAL_UNMAP_PE) + return OPAL_PARAMETER; + + if (action == OPAL_UNMAP_PE) + pe_num = -1; dev->linux_pe = pe_num; return OPAL_SUCCESS; } |