All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20131031062958.274180101@linux.com>

diff --git a/a/1.txt b/N1/1.txt
index 6645b4f..9eddcfb 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,289 +1,3 @@
-From: Domenico Andreoli <domenico.andreoli@linux.com>
-
-Code is not commented but it's really simple. The bulk is in
-set_machine_reset(), the static data is hidden in get_descr(). The rest
-is just a straightforward consequence with the intent to keep it simple.
-
-Cc: Russell King <linux@arm.linux.org.uk>
-Cc: Arnd Bergmann <arnd@arndb.de>
-Cc: Olof Johansson <olof@lixom.net>
-Cc: Catalin Marinas <catalin.marinas@arm.com>
-Cc: Will Deacon <will.deacon@arm.com>
-Cc: Ralf Baechle <ralf@linux-mips.org>
-Cc: linux-arch@vger.kernel.org
-Cc: linux-arm-kernel@lists.infradead.org
-Cc: linux-mips@lvger.kernel.org
-Signed-off-by: Domenico Andreoli <domenico.andreoli@linux.com>
----
- include/linux/machine_reset.h |   79 +++++++++++++++++++++++++
- kernel/Makefile               |    1 +
- kernel/machine_reset.c        |  131 ++++++++++++++++++++++++++++++++++++++++++
- kernel/power/Kconfig          |    4 +
- kernel/reboot.c               |    3 +
- 5 files changed, 218 insertions(+)
-
-Index: b/include/linux/machine_reset.h
-===================================================================
---- /dev/null
-+++ b/include/linux/machine_reset.h
-@@ -0,0 +1,79 @@
-+/*
-+ * Machine reset hooks management
-+ *
-+ * Copyright (C) 2013 Domenico Andreoli <domenico.andreoli@linux.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ */
-+
-+#include <linux/reboot.h>
-+
-+enum reset_func {
-+	RESET_RESTART = 0,
-+	RESET_HALT,
-+	RESET_POWER_OFF_PREPARE,
-+	RESET_POWER_OFF,
-+	RESET_CRASH_POWER_OFF,
-+	RESET_NR_FUNCS,
-+};
-+
-+struct reset_hook {
-+	union {
-+		void (*restart)(void *dev, enum reboot_mode, const char *cmd);
-+		void (*halt)(void *dev);
-+		void (*power_off_prepare)(void *dev);
-+		void (*power_off)(void *dev);
-+		void (*crash_power_off)(void *dev);
-+		void (*handler)(void *dev);
-+	};
-+	void (*release)(void *dev);
-+};
-+
-+static inline
-+void reset_hook_init(struct reset_hook *hook)
-+{
-+	hook->handler = NULL;
-+	hook->release = NULL;
-+}
-+
-+#ifdef CONFIG_MACHINE_RESET
-+
-+void set_machine_reset(enum reset_func, const struct reset_hook *, void *dev);
-+void unset_machine_reset(enum reset_func, const struct reset_hook *);
-+int isset_machine_reset(enum reset_func, void *dev);
-+
-+void default_restart(enum reboot_mode, const char *cmd);
-+void default_halt(void);
-+void default_power_off_prepare(void);
-+void default_power_off(void);
-+void default_crash_power_off(void);
-+
-+#else /* CONFIG_MACHINE_RESET */
-+
-+static inline
-+void set_machine_reset(enum reset_func func,
-+                       const struct reset_hook *hook, void *dev)
-+{
-+	if (hook->release)
-+		hook->release(dev);
-+}
-+
-+static inline void unset_machine_reset(enum reset_func _f,
-+                                       const struct reset_hook *_h) {}
-+static inline int isset_machine_reset(enum reset_func _f, void *_d) { return 0; }
-+
-+static inline void default_restart(enum reboot_mode _m, const char *_c) {}
-+static inline void default_halt(void) {}
-+static inline void default_power_off_prepare(void) {}
-+static inline void default_power_off(void) {}
-+static inline void default_crash_power_off(void) {}
-+
-+#endif /* CONFIG_MACHINE_RESET */
-Index: b/kernel/Makefile
-===================================================================
---- a/kernel/Makefile
-+++ b/kernel/Makefile
-@@ -111,6 +111,7 @@ obj-$(CONFIG_PADATA) += padata.o
- obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
- obj-$(CONFIG_JUMP_LABEL) += jump_label.o
- obj-$(CONFIG_CONTEXT_TRACKING) += context_tracking.o
-+obj-$(CONFIG_MACHINE_RESET) += machine_reset.o
- 
- $(obj)/configs.o: $(obj)/config_data.h
- 
-Index: b/kernel/machine_reset.c
-===================================================================
---- /dev/null
-+++ b/kernel/machine_reset.c
-@@ -0,0 +1,131 @@
-+/*
-+ * Machine reset hooks management
-+ *
-+ * Copyright (C) 2013 Domenico Andreoli <domenico.andreoli@linux.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ */
-+
-+#include <linux/export.h>
-+#include <linux/spinlock.h>
-+#include <linux/reboot.h>
-+#include <linux/machine_reset.h>
-+
-+struct reset_descr {
-+	struct reset_hook hook;
-+	void *dev;
-+};
-+static DEFINE_SPINLOCK(descr_lock);
-+
-+static struct reset_descr *get_descr(enum reset_func func)
-+{
-+	static struct reset_descr descr[RESET_NR_FUNCS];
-+
-+	BUG_ON(func >= RESET_NR_FUNCS);
-+	spin_lock(&descr_lock);
-+	return &descr[func];
-+}
-+
-+static void put_descr(struct reset_descr *descr)
-+{
-+	spin_unlock(&descr_lock);
-+}
-+
-+#define RESET_FUNC(_func, _member, _args...)                           \
-+{                                                                      \
-+	struct reset_descr *descr = get_descr(_func);                  \
-+	typeof(descr->hook._member) member = descr->hook._member;      \
-+	if (member) {                                                  \
-+		pr_debug("machine_reset: %s (%pf)\n", #_func, member); \
-+		member(descr->dev , ##_args);                          \
-+	}                                                              \
-+	put_descr(descr);                                              \
-+	pr_emerg("machine_reset: %s: FAILED\n", #_func);               \
-+	while (1);                                                     \
-+}
-+
-+void default_restart(enum reboot_mode reboot_mode, const char *cmd)
-+{
-+	RESET_FUNC(RESET_RESTART, restart, reboot_mode, cmd);
-+}
-+
-+void default_halt(void)
-+{
-+	RESET_FUNC(RESET_HALT, halt);
-+}
-+
-+void default_power_off_prepare(void)
-+{
-+	RESET_FUNC(RESET_POWER_OFF_PREPARE, power_off_prepare);
-+}
-+
-+void default_power_off(void)
-+{
-+	RESET_FUNC(RESET_POWER_OFF, power_off);
-+}
-+
-+void default_crash_power_off(void)
-+{
-+	RESET_FUNC(RESET_CRASH_POWER_OFF, crash_power_off);
-+}
-+
-+void set_machine_reset(enum reset_func func,
-+                       const struct reset_hook *hook, void *new_dev)
-+{
-+	struct reset_descr *descr;
-+	void (*new_handler)(void *) = hook ? hook->handler : NULL;
-+	void (*new_release)(void *) = hook ? hook->release : NULL;
-+	void (*old_release)(void *) = NULL;
-+	void *old_dev;
-+
-+	descr = get_descr(func);
-+	old_release = descr->hook.release;
-+	old_dev = descr->dev;
-+	reset_hook_init(&descr->hook);
-+	descr->hook.handler = new_handler;
-+	descr->hook.release = new_release;
-+	descr->dev = new_dev;
-+	put_descr(descr);
-+
-+	if (old_release)
-+		old_release(old_dev);
-+}
-+EXPORT_SYMBOL_GPL(set_machine_reset);
-+
-+void unset_machine_reset(enum reset_func func, const struct reset_hook *hook)
-+{
-+	struct reset_descr *descr;
-+	void (*old_release)(void *) = NULL;
-+	void *old_dev;
-+
-+	BUG_ON(!hook || !hook->handler);
-+
-+	descr = get_descr(func);
-+	if (descr->hook.handler == hook->handler) {
-+		old_release = descr->hook.release;
-+		old_dev = descr->dev;
-+		reset_hook_init(&descr->hook);
-+	}
-+	put_descr(descr);
-+
-+	if (old_release)
-+		old_release(old_dev);
-+}
-+EXPORT_SYMBOL_GPL(unset_machine_reset);
-+
-+int isset_machine_reset(enum reset_func func, void *dev)
-+{
-+	struct reset_descr *descr = get_descr(func);
-+	int ret = descr->hook.handler && (!dev || descr->dev == dev);
-+	put_descr(descr);
-+	return ret;
-+}
-+EXPORT_SYMBOL_GPL(isset_machine_reset);
-Index: b/kernel/power/Kconfig
-===================================================================
---- a/kernel/power/Kconfig
-+++ b/kernel/power/Kconfig
-@@ -293,3 +293,7 @@ config PM_GENERIC_DOMAINS_RUNTIME
- config CPU_PM
- 	bool
- 	depends on SUSPEND || CPU_IDLE
-+
-+config MACHINE_RESET
-+	bool
-+	default n
-Index: b/kernel/reboot.c
-===================================================================
---- a/kernel/reboot.c
-+++ b/kernel/reboot.c
-@@ -12,6 +12,7 @@
- #include <linux/kmod.h>
- #include <linux/kmsg_dump.h>
- #include <linux/reboot.h>
-+#include <linux/machine_reset.h>
- #include <linux/suspend.h>
- #include <linux/syscalls.h>
- #include <linux/syscore_ops.h>
-@@ -178,6 +179,8 @@ void kernel_power_off(void)
- 	kernel_shutdown_prepare(SYSTEM_POWER_OFF);
- 	if (pm_power_off_prepare)
- 		pm_power_off_prepare();
-+	else
-+		default_power_off_prepare();
- 	migrate_to_reboot_cpu();
- 	syscore_shutdown();
- 	pr_emerg("Power down\n");
+An embedded and charset-unspecified text was scrubbed...
+Name: machine-reset-handling.patch
+URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20131031/2fbc9da9/attachment.ksh>
diff --git a/a/content_digest b/N1/content_digest
index 65fcca9..e24839d 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,308 +1,12 @@
  "ref\020131031062708.520968323@linux.com\0"
- "From\0Domenico Andreoli <domenico.andreoli@linux.com>\0"
+ "From\0domenico.andreoli@linux.com (Domenico Andreoli)\0"
  "Subject\0[PATCH 01/11] machine-reset: platform generic handling\0"
  "Date\0Thu, 31 Oct 2013 07:27:09 +0100\0"
- "To\0linux-arch@vger.kernel.org\0"
- "Cc\0linux-arm-kernel@lists.infradead.org"
-  linux-mips@lvger.kernel.org
-  Russell King <linux@arm.linux.org.uk>
-  Arnd Bergmann <arnd@arndb.de>
-  Olof Johansson <olof@lixom.net>
-  Ralf Baechle <ralf@linux-mips.org>
-  Catalin Marinas <catalin.marinas@arm.com>
-  Will Deacon <will.deacon@arm.com>
- " Domenico Andreoli <domenico.andreoli@linux.com>\0"
+ "To\0linux-arm-kernel@lists.infradead.org\0"
  "\00:1\0"
- "fn\0machine-reset-handling.patch\0"
  "b\0"
- "From: Domenico Andreoli <domenico.andreoli@linux.com>\n"
- "\n"
- "Code is not commented but it's really simple. The bulk is in\n"
- "set_machine_reset(), the static data is hidden in get_descr(). The rest\n"
- "is just a straightforward consequence with the intent to keep it simple.\n"
- "\n"
- "Cc: Russell King <linux@arm.linux.org.uk>\n"
- "Cc: Arnd Bergmann <arnd@arndb.de>\n"
- "Cc: Olof Johansson <olof@lixom.net>\n"
- "Cc: Catalin Marinas <catalin.marinas@arm.com>\n"
- "Cc: Will Deacon <will.deacon@arm.com>\n"
- "Cc: Ralf Baechle <ralf@linux-mips.org>\n"
- "Cc: linux-arch@vger.kernel.org\n"
- "Cc: linux-arm-kernel@lists.infradead.org\n"
- "Cc: linux-mips@lvger.kernel.org\n"
- "Signed-off-by: Domenico Andreoli <domenico.andreoli@linux.com>\n"
- "---\n"
- " include/linux/machine_reset.h |   79 +++++++++++++++++++++++++\n"
- " kernel/Makefile               |    1 +\n"
- " kernel/machine_reset.c        |  131 ++++++++++++++++++++++++++++++++++++++++++\n"
- " kernel/power/Kconfig          |    4 +\n"
- " kernel/reboot.c               |    3 +\n"
- " 5 files changed, 218 insertions(+)\n"
- "\n"
- "Index: b/include/linux/machine_reset.h\n"
- "===================================================================\n"
- "--- /dev/null\n"
- "+++ b/include/linux/machine_reset.h\n"
- "@@ -0,0 +1,79 @@\n"
- "+/*\n"
- "+ * Machine reset hooks management\n"
- "+ *\n"
- "+ * Copyright (C) 2013 Domenico Andreoli <domenico.andreoli@linux.com>\n"
- "+ *\n"
- "+ * This program is free software; you can redistribute it and/or modify\n"
- "+ * it under the terms of the GNU General Public License as published by\n"
- "+ * the Free Software Foundation; either version 2 of the License, or\n"
- "+ * (at your option) any later version.\n"
- "+ *\n"
- "+ * This program is distributed in the hope that it will be useful,\n"
- "+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
- "+ * GNU General Public License for more details.\n"
- "+ */\n"
- "+\n"
- "+#include <linux/reboot.h>\n"
- "+\n"
- "+enum reset_func {\n"
- "+\tRESET_RESTART = 0,\n"
- "+\tRESET_HALT,\n"
- "+\tRESET_POWER_OFF_PREPARE,\n"
- "+\tRESET_POWER_OFF,\n"
- "+\tRESET_CRASH_POWER_OFF,\n"
- "+\tRESET_NR_FUNCS,\n"
- "+};\n"
- "+\n"
- "+struct reset_hook {\n"
- "+\tunion {\n"
- "+\t\tvoid (*restart)(void *dev, enum reboot_mode, const char *cmd);\n"
- "+\t\tvoid (*halt)(void *dev);\n"
- "+\t\tvoid (*power_off_prepare)(void *dev);\n"
- "+\t\tvoid (*power_off)(void *dev);\n"
- "+\t\tvoid (*crash_power_off)(void *dev);\n"
- "+\t\tvoid (*handler)(void *dev);\n"
- "+\t};\n"
- "+\tvoid (*release)(void *dev);\n"
- "+};\n"
- "+\n"
- "+static inline\n"
- "+void reset_hook_init(struct reset_hook *hook)\n"
- "+{\n"
- "+\thook->handler = NULL;\n"
- "+\thook->release = NULL;\n"
- "+}\n"
- "+\n"
- "+#ifdef CONFIG_MACHINE_RESET\n"
- "+\n"
- "+void set_machine_reset(enum reset_func, const struct reset_hook *, void *dev);\n"
- "+void unset_machine_reset(enum reset_func, const struct reset_hook *);\n"
- "+int isset_machine_reset(enum reset_func, void *dev);\n"
- "+\n"
- "+void default_restart(enum reboot_mode, const char *cmd);\n"
- "+void default_halt(void);\n"
- "+void default_power_off_prepare(void);\n"
- "+void default_power_off(void);\n"
- "+void default_crash_power_off(void);\n"
- "+\n"
- "+#else /* CONFIG_MACHINE_RESET */\n"
- "+\n"
- "+static inline\n"
- "+void set_machine_reset(enum reset_func func,\n"
- "+                       const struct reset_hook *hook, void *dev)\n"
- "+{\n"
- "+\tif (hook->release)\n"
- "+\t\thook->release(dev);\n"
- "+}\n"
- "+\n"
- "+static inline void unset_machine_reset(enum reset_func _f,\n"
- "+                                       const struct reset_hook *_h) {}\n"
- "+static inline int isset_machine_reset(enum reset_func _f, void *_d) { return 0; }\n"
- "+\n"
- "+static inline void default_restart(enum reboot_mode _m, const char *_c) {}\n"
- "+static inline void default_halt(void) {}\n"
- "+static inline void default_power_off_prepare(void) {}\n"
- "+static inline void default_power_off(void) {}\n"
- "+static inline void default_crash_power_off(void) {}\n"
- "+\n"
- "+#endif /* CONFIG_MACHINE_RESET */\n"
- "Index: b/kernel/Makefile\n"
- "===================================================================\n"
- "--- a/kernel/Makefile\n"
- "+++ b/kernel/Makefile\n"
- "@@ -111,6 +111,7 @@ obj-$(CONFIG_PADATA) += padata.o\n"
- " obj-$(CONFIG_CRASH_DUMP) += crash_dump.o\n"
- " obj-$(CONFIG_JUMP_LABEL) += jump_label.o\n"
- " obj-$(CONFIG_CONTEXT_TRACKING) += context_tracking.o\n"
- "+obj-$(CONFIG_MACHINE_RESET) += machine_reset.o\n"
- " \n"
- " $(obj)/configs.o: $(obj)/config_data.h\n"
- " \n"
- "Index: b/kernel/machine_reset.c\n"
- "===================================================================\n"
- "--- /dev/null\n"
- "+++ b/kernel/machine_reset.c\n"
- "@@ -0,0 +1,131 @@\n"
- "+/*\n"
- "+ * Machine reset hooks management\n"
- "+ *\n"
- "+ * Copyright (C) 2013 Domenico Andreoli <domenico.andreoli@linux.com>\n"
- "+ *\n"
- "+ * This program is free software; you can redistribute it and/or modify\n"
- "+ * it under the terms of the GNU General Public License as published by\n"
- "+ * the Free Software Foundation; either version 2 of the License, or\n"
- "+ * (at your option) any later version.\n"
- "+ *\n"
- "+ * This program is distributed in the hope that it will be useful,\n"
- "+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
- "+ * GNU General Public License for more details.\n"
- "+ */\n"
- "+\n"
- "+#include <linux/export.h>\n"
- "+#include <linux/spinlock.h>\n"
- "+#include <linux/reboot.h>\n"
- "+#include <linux/machine_reset.h>\n"
- "+\n"
- "+struct reset_descr {\n"
- "+\tstruct reset_hook hook;\n"
- "+\tvoid *dev;\n"
- "+};\n"
- "+static DEFINE_SPINLOCK(descr_lock);\n"
- "+\n"
- "+static struct reset_descr *get_descr(enum reset_func func)\n"
- "+{\n"
- "+\tstatic struct reset_descr descr[RESET_NR_FUNCS];\n"
- "+\n"
- "+\tBUG_ON(func >= RESET_NR_FUNCS);\n"
- "+\tspin_lock(&descr_lock);\n"
- "+\treturn &descr[func];\n"
- "+}\n"
- "+\n"
- "+static void put_descr(struct reset_descr *descr)\n"
- "+{\n"
- "+\tspin_unlock(&descr_lock);\n"
- "+}\n"
- "+\n"
- "+#define RESET_FUNC(_func, _member, _args...)                           \\\n"
- "+{                                                                      \\\n"
- "+\tstruct reset_descr *descr = get_descr(_func);                  \\\n"
- "+\ttypeof(descr->hook._member) member = descr->hook._member;      \\\n"
- "+\tif (member) {                                                  \\\n"
- "+\t\tpr_debug(\"machine_reset: %s (%pf)\\n\", #_func, member); \\\n"
- "+\t\tmember(descr->dev , ##_args);                          \\\n"
- "+\t}                                                              \\\n"
- "+\tput_descr(descr);                                              \\\n"
- "+\tpr_emerg(\"machine_reset: %s: FAILED\\n\", #_func);               \\\n"
- "+\twhile (1);                                                     \\\n"
- "+}\n"
- "+\n"
- "+void default_restart(enum reboot_mode reboot_mode, const char *cmd)\n"
- "+{\n"
- "+\tRESET_FUNC(RESET_RESTART, restart, reboot_mode, cmd);\n"
- "+}\n"
- "+\n"
- "+void default_halt(void)\n"
- "+{\n"
- "+\tRESET_FUNC(RESET_HALT, halt);\n"
- "+}\n"
- "+\n"
- "+void default_power_off_prepare(void)\n"
- "+{\n"
- "+\tRESET_FUNC(RESET_POWER_OFF_PREPARE, power_off_prepare);\n"
- "+}\n"
- "+\n"
- "+void default_power_off(void)\n"
- "+{\n"
- "+\tRESET_FUNC(RESET_POWER_OFF, power_off);\n"
- "+}\n"
- "+\n"
- "+void default_crash_power_off(void)\n"
- "+{\n"
- "+\tRESET_FUNC(RESET_CRASH_POWER_OFF, crash_power_off);\n"
- "+}\n"
- "+\n"
- "+void set_machine_reset(enum reset_func func,\n"
- "+                       const struct reset_hook *hook, void *new_dev)\n"
- "+{\n"
- "+\tstruct reset_descr *descr;\n"
- "+\tvoid (*new_handler)(void *) = hook ? hook->handler : NULL;\n"
- "+\tvoid (*new_release)(void *) = hook ? hook->release : NULL;\n"
- "+\tvoid (*old_release)(void *) = NULL;\n"
- "+\tvoid *old_dev;\n"
- "+\n"
- "+\tdescr = get_descr(func);\n"
- "+\told_release = descr->hook.release;\n"
- "+\told_dev = descr->dev;\n"
- "+\treset_hook_init(&descr->hook);\n"
- "+\tdescr->hook.handler = new_handler;\n"
- "+\tdescr->hook.release = new_release;\n"
- "+\tdescr->dev = new_dev;\n"
- "+\tput_descr(descr);\n"
- "+\n"
- "+\tif (old_release)\n"
- "+\t\told_release(old_dev);\n"
- "+}\n"
- "+EXPORT_SYMBOL_GPL(set_machine_reset);\n"
- "+\n"
- "+void unset_machine_reset(enum reset_func func, const struct reset_hook *hook)\n"
- "+{\n"
- "+\tstruct reset_descr *descr;\n"
- "+\tvoid (*old_release)(void *) = NULL;\n"
- "+\tvoid *old_dev;\n"
- "+\n"
- "+\tBUG_ON(!hook || !hook->handler);\n"
- "+\n"
- "+\tdescr = get_descr(func);\n"
- "+\tif (descr->hook.handler == hook->handler) {\n"
- "+\t\told_release = descr->hook.release;\n"
- "+\t\told_dev = descr->dev;\n"
- "+\t\treset_hook_init(&descr->hook);\n"
- "+\t}\n"
- "+\tput_descr(descr);\n"
- "+\n"
- "+\tif (old_release)\n"
- "+\t\told_release(old_dev);\n"
- "+}\n"
- "+EXPORT_SYMBOL_GPL(unset_machine_reset);\n"
- "+\n"
- "+int isset_machine_reset(enum reset_func func, void *dev)\n"
- "+{\n"
- "+\tstruct reset_descr *descr = get_descr(func);\n"
- "+\tint ret = descr->hook.handler && (!dev || descr->dev == dev);\n"
- "+\tput_descr(descr);\n"
- "+\treturn ret;\n"
- "+}\n"
- "+EXPORT_SYMBOL_GPL(isset_machine_reset);\n"
- "Index: b/kernel/power/Kconfig\n"
- "===================================================================\n"
- "--- a/kernel/power/Kconfig\n"
- "+++ b/kernel/power/Kconfig\n"
- "@@ -293,3 +293,7 @@ config PM_GENERIC_DOMAINS_RUNTIME\n"
- " config CPU_PM\n"
- " \tbool\n"
- " \tdepends on SUSPEND || CPU_IDLE\n"
- "+\n"
- "+config MACHINE_RESET\n"
- "+\tbool\n"
- "+\tdefault n\n"
- "Index: b/kernel/reboot.c\n"
- "===================================================================\n"
- "--- a/kernel/reboot.c\n"
- "+++ b/kernel/reboot.c\n"
- "@@ -12,6 +12,7 @@\n"
- " #include <linux/kmod.h>\n"
- " #include <linux/kmsg_dump.h>\n"
- " #include <linux/reboot.h>\n"
- "+#include <linux/machine_reset.h>\n"
- " #include <linux/suspend.h>\n"
- " #include <linux/syscalls.h>\n"
- " #include <linux/syscore_ops.h>\n"
- "@@ -178,6 +179,8 @@ void kernel_power_off(void)\n"
- " \tkernel_shutdown_prepare(SYSTEM_POWER_OFF);\n"
- " \tif (pm_power_off_prepare)\n"
- " \t\tpm_power_off_prepare();\n"
- "+\telse\n"
- "+\t\tdefault_power_off_prepare();\n"
- " \tmigrate_to_reboot_cpu();\n"
- " \tsyscore_shutdown();\n"
- " \tpr_emerg(\"Power down\\n\");"
+ "An embedded and charset-unspecified text was scrubbed...\n"
+ "Name: machine-reset-handling.patch\n"
+ URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20131031/2fbc9da9/attachment.ksh>
 
-acfbcd2e354162e695ad2914296c9dc7595061028aec99e5f56d7de4f674db9c
+b86bf48b7e5baf99b2b5c6c1394d293ad19139232d1c06b01e4ad20301a77ccc

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.