Message ID | 20210430120917.217951-2-danielhb413@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Unisolate LMBs DRC on removal error + cleanups | expand |
Related | show |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | Successfully applied on branch powerpc/merge (e3a9b9d6a03f5fbf99b540e863b001d46ba1735c) |
snowpatch_ozlabs/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 13 lines checked |
snowpatch_ozlabs/needsstable | success | Patch has no Fixes tags |
On Fri, Apr 30, 2021 at 09:09:15AM -0300, Daniel Henrique Barboza wrote: > As previously done in dlpar_cpu_remove() for CPUs, this patch changes > dlpar_memory_remove_by_ic() to unisolate the LMB DRC when the LMB is > failed to be removed. The hypervisor, seeing a LMB DRC that was supposed > to be removed being unisolated instead, can do error recovery on its > side. > > This change is done in dlpar_memory_remove_by_ic() only because, as of > today, only QEMU is using this code path for error recovery (via the > PSERIES_HP_ELOG_ID_DRC_IC event). phyp treats it as a no-op. > > Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> > --- > arch/powerpc/platforms/pseries/hotplug-memory.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c > index 8377f1f7c78e..bb98574a84a2 100644 > --- a/arch/powerpc/platforms/pseries/hotplug-memory.c > +++ b/arch/powerpc/platforms/pseries/hotplug-memory.c > @@ -551,6 +551,13 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index) > if (!drmem_lmb_reserved(lmb)) > continue; > > + /* > + * Setting the isolation state of an UNISOLATED/CONFIGURED > + * device to UNISOLATE is a no-op, but the hypervisor can > + * use it as a hint that the LMB removal failed. > + */ > + dlpar_unisolate_drc(lmb->drc_index); > + > rc = dlpar_add_lmb(lmb); > if (rc) > pr_err("Failed to add LMB, drc index %x\n",
diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c index 8377f1f7c78e..bb98574a84a2 100644 --- a/arch/powerpc/platforms/pseries/hotplug-memory.c +++ b/arch/powerpc/platforms/pseries/hotplug-memory.c @@ -551,6 +551,13 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index) if (!drmem_lmb_reserved(lmb)) continue; + /* + * Setting the isolation state of an UNISOLATED/CONFIGURED + * device to UNISOLATE is a no-op, but the hypervisor can + * use it as a hint that the LMB removal failed. + */ + dlpar_unisolate_drc(lmb->drc_index); + rc = dlpar_add_lmb(lmb); if (rc) pr_err("Failed to add LMB, drc index %x\n",
As previously done in dlpar_cpu_remove() for CPUs, this patch changes dlpar_memory_remove_by_ic() to unisolate the LMB DRC when the LMB is failed to be removed. The hypervisor, seeing a LMB DRC that was supposed to be removed being unisolated instead, can do error recovery on its side. This change is done in dlpar_memory_remove_by_ic() only because, as of today, only QEMU is using this code path for error recovery (via the PSERIES_HP_ELOG_ID_DRC_IC event). phyp treats it as a no-op. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- arch/powerpc/platforms/pseries/hotplug-memory.c | 7 +++++++ 1 file changed, 7 insertions(+)