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 <tyr...@linux.vnet.ibm.com> > Cc: Nathan Fontenot <nf...@linux.vnet.ibm.com> > Cc: Cyril Bur <cyril...@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); > _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev