|
@@ -289,6 +289,10 @@ static int gsmi_exec(u8 func, u8 sub)
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_EFI_VARS
|
|
|
+
|
|
|
+static struct efivars efivars;
|
|
|
+
|
|
|
static efi_status_t gsmi_get_variable(efi_char16_t *name,
|
|
|
efi_guid_t *vendor, u32 *attr,
|
|
|
unsigned long *data_size,
|
|
@@ -466,6 +470,8 @@ static const struct efivar_operations efivar_ops = {
|
|
|
.get_next_variable = gsmi_get_next_variable,
|
|
|
};
|
|
|
|
|
|
+#endif /* CONFIG_EFI_VARS */
|
|
|
+
|
|
|
static ssize_t eventlog_write(struct file *filp, struct kobject *kobj,
|
|
|
struct bin_attribute *bin_attr,
|
|
|
char *buf, loff_t pos, size_t count)
|
|
@@ -767,7 +773,6 @@ static __init int gsmi_system_valid(void)
|
|
|
}
|
|
|
|
|
|
static struct kobject *gsmi_kobj;
|
|
|
-static struct efivars efivars;
|
|
|
|
|
|
static const struct platform_device_info gsmi_dev_info = {
|
|
|
.name = "gsmi",
|
|
@@ -891,11 +896,14 @@ static __init int gsmi_init(void)
|
|
|
goto out_remove_bin_file;
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_EFI_VARS
|
|
|
ret = efivars_register(&efivars, &efivar_ops, gsmi_kobj);
|
|
|
if (ret) {
|
|
|
printk(KERN_INFO "gsmi: Failed to register efivars\n");
|
|
|
- goto out_remove_sysfs_files;
|
|
|
+ sysfs_remove_files(gsmi_kobj, gsmi_attrs);
|
|
|
+ goto out_remove_bin_file;
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
register_reboot_notifier(&gsmi_reboot_notifier);
|
|
|
register_die_notifier(&gsmi_die_notifier);
|
|
@@ -906,8 +914,6 @@ static __init int gsmi_init(void)
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
-out_remove_sysfs_files:
|
|
|
- sysfs_remove_files(gsmi_kobj, gsmi_attrs);
|
|
|
out_remove_bin_file:
|
|
|
sysfs_remove_bin_file(gsmi_kobj, &eventlog_bin_attr);
|
|
|
out_err:
|
|
@@ -927,7 +933,9 @@ static void __exit gsmi_exit(void)
|
|
|
unregister_die_notifier(&gsmi_die_notifier);
|
|
|
atomic_notifier_chain_unregister(&panic_notifier_list,
|
|
|
&gsmi_panic_notifier);
|
|
|
+#ifdef CONFIG_EFI_VARS
|
|
|
efivars_unregister(&efivars);
|
|
|
+#endif
|
|
|
|
|
|
sysfs_remove_files(gsmi_kobj, gsmi_attrs);
|
|
|
sysfs_remove_bin_file(gsmi_kobj, &eventlog_bin_attr);
|