On Wed, Jul 24, 2019 at 7:27 PM Laurent Dufour <lduf...@linux.vnet.ibm.com> wrote: > > Le 24/07/2019 à 11:24, Oliver O'Halloran a écrit : > > On Wed, Jul 24, 2019 at 7:17 PM Laurent Dufour > > <lduf...@linux.vnet.ibm.com> wrote: > >> > >> Le 23/07/2019 à 18:13, Vaibhav Jain a écrit : > >>> *snip* > >>> @@ -404,6 +409,14 @@ static int papr_scm_probe(struct platform_device > >>> *pdev) > >>> > >>> /* request the hypervisor to bind this region to somewhere in > >>> memory */ > >>> rc = drc_pmem_bind(p); > >>> + > >>> + /* If phyp says drc memory still bound then force unbound and retry > >>> */ > >>> + if (rc == -EBUSY) { > >>> + dev_warn(&pdev->dev, "Retrying bind after unbinding\n"); > >>> + drc_pmem_unbind(p); > >>> + rc = drc_pmem_bind(p); > >> > >> In the unlikely case where H_SCM_BIND_MEM is returning H_OVERLAP once the > >> unbinding has been done, the error would be silently processed. That sounds > >> really unlikely, but should an error message be displayed in this > >> particular case ? > > > > drc_pmem_bind() prints the h-call error code if we get one, so it's not > > silent > > That's no more the case whith this patch, H_OVERLAP is handled before > writing the error message, which would make sense for the first try. > > For the record, the patch introduces: > > @@ -65,6 +66,10 @@ static int drc_pmem_bind(struct papr_scm_priv *p) > } while (rc == H_BUSY); > > if (rc) { > + /* H_OVERLAP needs a separate error path */ > + if (rc == H_OVERLAP) > + return -EBUSY; > + > dev_err(&p->pdev->dev, "bind err: %lld\n", rc); > return -ENXIO; > }
Ah, good point. Getting H_OVERLAP is still an error case so I think it's reasonable to still print the message in that case.