[PATCH] powerpc/pseries: Introduce api_version to migration sysfs interface
Tyrel Datwyler
tyreld at linux.vnet.ibm.com
Tue Mar 24 07:21:48 AEDT 2015
On 03/04/2015 06:25 PM, Tyrel Datwyler wrote:
> The /sys/kernel/mobility/migration interface was added all the way back
> in 2.6.37. However, the drmgr userspace tool was never augmented to use
> this interface to perfrom migrations. Instead it has continued using a
> faux rtas call coupled with performing the device tree update processing
> in userspace and communicating it back to the kernel via the ugly
> /proc/ppc64/ofdt interface.
>
> Up until 3.12 the device tree update code in the kernel was badly broken
> and bit rotting. This code was fixed in 3.12 and is now utilized by the
> kernel suspend code as of 3.15. The kernel is now better suited to
> handle the post-mobility fixup of the device tree and drmgr should be
> transitioned to using the sysfs migration interface.
>
> This patch introduces the api_version sysfs file to /sys/kernel/mobility
> as a means for drmgr to query the current implementation level of the
> kernel migration code. This initial versioning indicates it is capable
> of perfroming all current PAPR requirements for migration including the
> post-mobility firmware activation and device tree update.
>
> Signed-off-by: Tyrel Datwyler <tyreld at linux.vnet.ibm.com>
> Cc: Nathan Fontenot <nfont at linux.vnet.ibm.com>
> Cc: Cyril Bur <cyrilbur at gmail.com>
> ---
Ping. Does this look acceptable for -next?
-Tyrel
> arch/powerpc/platforms/pseries/mobility.c | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/platforms/pseries/mobility.c b/arch/powerpc/platforms/pseries/mobility.c
> index bdf62c1..ceb18d3 100644
> --- a/arch/powerpc/platforms/pseries/mobility.c
> +++ b/arch/powerpc/platforms/pseries/mobility.c
> @@ -338,7 +338,16 @@ static ssize_t migrate_store(struct class *class, struct class_attribute *attr,
> return count;
> }
>
> +/*
> + * Used by drmgr to determine the kernel behavior of the migration interface.
> + *
> + * Version 1: Performs all PAPR requirements for migration including
> + * firmware activation and device tree update.
> + */
> +#define MIGRATION_API_VERSION 1
> +
> static CLASS_ATTR(migration, S_IWUSR, NULL, migrate_store);
> +static CLASS_ATTR_STRING(api_version, S_IRUGO, __stringify(MIGRATION_API_VERSION));
>
> static int __init mobility_sysfs_init(void)
> {
> @@ -349,7 +358,13 @@ static int __init mobility_sysfs_init(void)
> return -ENOMEM;
>
> rc = sysfs_create_file(mobility_kobj, &class_attr_migration.attr);
> + if (rc)
> + pr_err("mobility: unable to create migration sysfs file (%d)\n", rc);
>
> - return rc;
> + rc = sysfs_create_file(mobility_kobj, &class_attr_api_version.attr.attr);
> + if (rc)
> + pr_err("mobility: unable to create api_version sysfs file (%d)\n", rc);
> +
> + return 0;
> }
> machine_device_initcall(pseries, mobility_sysfs_init);
>
More information about the Linuxppc-dev
mailing list