summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/pseries/vas.h
diff options
context:
space:
mode:
authorHaren Myneni <haren@linux.ibm.com>2022-03-02 00:51:58 -0800
committerMichael Ellerman <mpe@ellerman.id.au>2022-03-08 00:04:56 +1100
commit37e6764895ef7431f45ff603a548549d409993d2 (patch)
treea44d0a07f1b400a66054d3f6741ee3ca5b89e7d5 /arch/powerpc/platforms/pseries/vas.h
parent716d7a2e3764cb79061371767bff1a691adb4e7f (diff)
downloadlinux-stable-37e6764895ef7431f45ff603a548549d409993d2.tar.gz
linux-stable-37e6764895ef7431f45ff603a548549d409993d2.tar.bz2
linux-stable-37e6764895ef7431f45ff603a548549d409993d2.zip
powerpc/pseries/vas: Add VAS migration handler
Since the VAS windows belong to the VAS hardware resource, the hypervisor expects the partition to close them on source partition and reopen them after the partition migrated on the destination machine. This handler is called before pseries_suspend() to close these windows and again invoked after migration. All active windows for both default and QoS types will be closed and mark them inactive and reopened after migration with this handler. During the migration, the user space receives paste instruction failure if it issues copy/paste on these inactive windows. The current migration implementation does not freeze the user space and applications can continue to open VAS windows while migration is in progress. So when the migration_in_progress flag is set, VAS open window API returns -EBUSY. Signed-off-by: Haren Myneni <haren@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/05e45ff4f8babd2490ccb7ae923884f4aa21a7e5.camel@linux.ibm.com
Diffstat (limited to 'arch/powerpc/platforms/pseries/vas.h')
-rw-r--r--arch/powerpc/platforms/pseries/vas.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/pseries/vas.h b/arch/powerpc/platforms/pseries/vas.h
index 4ddb1001a0aa..34177881e998 100644
--- a/arch/powerpc/platforms/pseries/vas.h
+++ b/arch/powerpc/platforms/pseries/vas.h
@@ -33,6 +33,11 @@
#define VAS_GZIP_QOS_CAPABILITIES 0x56516F73477A6970
#define VAS_GZIP_DEFAULT_CAPABILITIES 0x56446566477A6970
+enum vas_migrate_action {
+ VAS_SUSPEND,
+ VAS_RESUME,
+};
+
/*
* Co-processor feature - GZIP QoS windows or GZIP default windows
*/
@@ -132,4 +137,13 @@ struct pseries_vas_window {
int sysfs_add_vas_caps(struct vas_cop_feat_caps *caps);
int vas_reconfig_capabilties(u8 type);
int __init sysfs_pseries_vas_init(struct vas_all_caps *vas_caps);
+
+#ifdef CONFIG_PPC_VAS
+int vas_migration_handler(int action);
+#else
+static inline int vas_migration_handler(int action)
+{
+ return 0;
+}
+#endif
#endif /* _VAS_H */