Message ID | 20190723161357.26718-1-vaibhav@linux.ibm.com (mailing list archive) |
---|---|
Headers | show |
Series | powerpc/papr_scm: Workaround for failure of drc bind after kexec | expand |
Vaibhav Jain <vaibhav@linux.ibm.com> writes: > Presently an error is returned in response to hcall H_SCM_BIND_MEM when a > new kernel boots on lpar via kexec. This prevents papr_scm from registering > drc memory regions with nvdimm. The error reported is of the form below: > > "papr_scm ibm,persistent-memory:ibm,pmemory@44100002: bind err: -68" > > On investigation it was revealed that phyp returns this error as previous > kernel did not completely release bindings for drc scm-memory blocks and > hence phyp rejected request for re-binding these block to lpar with error > H_OVERLAP. Also support for a new H_SCM_UNBIND_ALL is recently added which > is better suited for releasing all the bound scm-memory block from an lpar. > > So leveraging new hcall H_SCM_UNBIND_ALL, we can workaround H_OVERLAP issue > during kexec by forcing an unbind of all drm scm-memory blocks and issuing > H_SCM_BIND_MEM to re-bind the drc scm-memory blocks to lpar. This sequence > will also be needed when a new kernel boot on lpar after previous kernel > panicked and it never got an opportunity to call H_SCM_UNBIND_MEM/ALL. > > Hence this patch-set implements following changes to papr_scm module: > > * Update hvcall.h to include opcodes for new hcall H_SCM_UNBIND_ALL. > > * Update it to use H_SCM_UNBIND_ALL instead of H_SCM_UNBIND_MEM > > * In case hcall H_SCM_BIND_MEM fails with error H_OVERLAP, force > H_SCM_UNBIND_ALL and retry the bind operation again. > You can add for the series. Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>