]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drivers/xen: Export vmcoreinfo through sysfs
authorDaniel Kiper <daniel.kiper@oracle.com>
Thu, 21 Jun 2012 13:38:45 +0000 (15:38 +0200)
committerDaniel Kiper <daniel.kiper@oracle.com>
Thu, 28 Jun 2012 07:53:51 +0000 (09:53 +0200)
Export vmcoreinfo through sysfs.

Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
drivers/xen/sys-hypervisor.c

index fdb6d229c9bbf5e59198189f95e70502116a6ca2..0111ad03a35e547810497bd808ba95af403b11b6 100644 (file)
@@ -355,6 +355,41 @@ static void xen_properties_destroy(void)
        sysfs_remove_group(hypervisor_kobj, &xen_properties_group);
 }
 
+#ifdef CONFIG_KEXEC
+static ssize_t vmcoreinfo_show(struct hyp_sysfs_attr *attr, char *buffer)
+{
+       return sprintf(buffer, "%lx %lx\n", xen_vmcoreinfo_maddr,
+                                               xen_vmcoreinfo_max_size);
+}
+
+HYPERVISOR_ATTR_RO(vmcoreinfo);
+
+static int __init xen_vmcoreinfo_init(void)
+{
+       if (!xen_vmcoreinfo_max_size)
+               return 0;
+
+       return sysfs_create_file(hypervisor_kobj, &vmcoreinfo_attr.attr);
+}
+
+static void xen_vmcoreinfo_destroy(void)
+{
+       if (!xen_vmcoreinfo_max_size)
+               return;
+
+       sysfs_remove_file(hypervisor_kobj, &vmcoreinfo_attr.attr);
+}
+#else
+static int __init xen_vmcoreinfo_init(void)
+{
+       return 0;
+}
+
+static void xen_vmcoreinfo_destroy(void)
+{
+}
+#endif
+
 static int __init hyper_sysfs_init(void)
 {
        int ret;
@@ -377,9 +412,14 @@ static int __init hyper_sysfs_init(void)
        ret = xen_properties_init();
        if (ret)
                goto prop_out;
+       ret = xen_vmcoreinfo_init();
+       if (ret)
+               goto vmcoreinfo_out;
 
        goto out;
 
+vmcoreinfo_out:
+       xen_properties_destroy();
 prop_out:
        xen_sysfs_uuid_destroy();
 uuid_out:
@@ -394,12 +434,12 @@ out:
 
 static void __exit hyper_sysfs_exit(void)
 {
+       xen_vmcoreinfo_destroy();
        xen_properties_destroy();
        xen_compilation_destroy();
        xen_sysfs_uuid_destroy();
        xen_sysfs_version_destroy();
        xen_sysfs_type_destroy();
-
 }
 module_init(hyper_sysfs_init);
 module_exit(hyper_sysfs_exit);