s390/ism: ignore some errors during deregistration
Prior to dma unmap/free operations the ism driver tries to ensure that the memory is no longer accessed by the HW. When errors during deregistration of memory regions from the HW occur the ism driver will not unmap/free this memory. When we receive notification from the hypervisor that a PCI function has been detached we can no longer access the device and would never unmap/free these memory regions which led to complaints by the DMA debug API. Treat this kind of errors during the deregistration of memory regions from the HW as success since it is already ensured that the memory is no longer accessed by HW. Reported-by: Karsten Graul <kgraul@linux.ibm.com> Reported-by: Hans Wippel <hwippel@linux.ibm.com> Signed-off-by: Sebastian Ott <sebott@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
86a86804e4
commit
0ff06c44ef
@ -141,10 +141,13 @@ static int register_ieq(struct ism_dev *ism)
|
||||
|
||||
static int unregister_sba(struct ism_dev *ism)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!ism->sba)
|
||||
return 0;
|
||||
|
||||
if (ism_cmd_simple(ism, ISM_UNREG_SBA))
|
||||
ret = ism_cmd_simple(ism, ISM_UNREG_SBA);
|
||||
if (ret && ret != ISM_ERROR)
|
||||
return -EIO;
|
||||
|
||||
dma_free_coherent(&ism->pdev->dev, PAGE_SIZE,
|
||||
@ -158,10 +161,13 @@ static int unregister_sba(struct ism_dev *ism)
|
||||
|
||||
static int unregister_ieq(struct ism_dev *ism)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!ism->ieq)
|
||||
return 0;
|
||||
|
||||
if (ism_cmd_simple(ism, ISM_UNREG_IEQ))
|
||||
ret = ism_cmd_simple(ism, ISM_UNREG_IEQ);
|
||||
if (ret && ret != ISM_ERROR)
|
||||
return -EIO;
|
||||
|
||||
dma_free_coherent(&ism->pdev->dev, PAGE_SIZE,
|
||||
@ -287,7 +293,7 @@ static int ism_unregister_dmb(struct smcd_dev *smcd, struct smcd_dmb *dmb)
|
||||
cmd.request.dmb_tok = dmb->dmb_tok;
|
||||
|
||||
ret = ism_cmd(ism, &cmd);
|
||||
if (ret)
|
||||
if (ret && ret != ISM_ERROR)
|
||||
goto out;
|
||||
|
||||
ism_free_dmb(ism, dmb);
|
||||
|
Loading…
Reference in New Issue
Block a user