Commit 465dda9d authored by Haren Myneni's avatar Haren Myneni Committed by Michael Ellerman

powerpc/pseries: Move vas_migration_handler early during migration

When the migration is initiated, the hypervisor changes VAS
mappings as part of pre-migration event. Then the OS gets the
migration event which closes all VAS windows before the migration
starts. NX generates continuous faults until windows are closed
and the user space can not differentiate these NX faults coming
from the actual migration. So to reduce this time window, close
VAS windows first in pseries_migrate_partition().
Signed-off-by: default avatarHaren Myneni <haren@linux.ibm.com>
Reviewed-by: default avatarNathan Lynch <nathanl@linux.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/d8efade91dda831c9ed4abb226dab627da594c5f.camel@linux.ibm.com
parent 1da5351f
...@@ -740,11 +740,19 @@ static int pseries_migrate_partition(u64 handle) ...@@ -740,11 +740,19 @@ static int pseries_migrate_partition(u64 handle)
#ifdef CONFIG_PPC_WATCHDOG #ifdef CONFIG_PPC_WATCHDOG
factor = nmi_wd_lpm_factor; factor = nmi_wd_lpm_factor;
#endif #endif
/*
* When the migration is initiated, the hypervisor changes VAS
* mappings to prepare before OS gets the notification and
* closes all VAS windows. NX generates continuous faults during
* this time and the user space can not differentiate these
* faults from the migration event. So reduce this time window
* by closing VAS windows at the beginning of this function.
*/
vas_migration_handler(VAS_SUSPEND);
ret = wait_for_vasi_session_suspending(handle); ret = wait_for_vasi_session_suspending(handle);
if (ret) if (ret)
return ret; goto out;
vas_migration_handler(VAS_SUSPEND);
if (factor) if (factor)
watchdog_nmi_set_timeout_pct(factor); watchdog_nmi_set_timeout_pct(factor);
...@@ -765,6 +773,7 @@ static int pseries_migrate_partition(u64 handle) ...@@ -765,6 +773,7 @@ static int pseries_migrate_partition(u64 handle)
if (factor) if (factor)
watchdog_nmi_set_timeout_pct(0); watchdog_nmi_set_timeout_pct(0);
out:
vas_migration_handler(VAS_RESUME); vas_migration_handler(VAS_RESUME);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment