aboutsummaryrefslogtreecommitdiffstats
path: root/meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch')
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch174
1 files changed, 0 insertions, 174 deletions
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch
deleted file mode 100644
index 289f54ac..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-From faa349f4d096554c6d5bfe74634599d2e26f64a7 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Sun, 11 Sep 2016 23:30:04 +0200
-Subject: [PATCH 03/32] jailhouse: Add simple debug console via the hypervisor
-
-Jailhouse allows explicitly enabled cells to write character-wise
-messages to the hypervisor debug console. Make use of this for a
-platform-agnostic boot diagnosis channel, specifically for non-root
-cells. This also comes with earlycon support.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- MAINTAINERS | 1 +
- drivers/virt/Kconfig | 11 +++++
- drivers/virt/Makefile | 1 +
- drivers/virt/jailhouse_dbgcon.c | 103 ++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 116 insertions(+)
- create mode 100644 drivers/virt/jailhouse_dbgcon.c
-
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 9d3a5c54a41d..07cb4d674c93 100644
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -8761,6 +8761,7 @@ L: jailhouse-dev@googlegroups.com
- S: Maintained
- F: arch/x86/kernel/jailhouse.c
- F: arch/x86/include/asm/jailhouse_para.h
-+F: drivers/virt/jailhouse_dbgcon.c
-
- JC42.4 TEMPERATURE SENSOR DRIVER
- M: Guenter Roeck <linux@roeck-us.net>
-diff --git a/drivers/virt/Kconfig b/drivers/virt/Kconfig
-index 363af2eaf2ba..99c5eaca6952 100644
---- a/drivers/virt/Kconfig
-+++ b/drivers/virt/Kconfig
-@@ -31,5 +31,16 @@ config FSL_HV_MANAGER
- 4) A kernel interface for receiving callbacks when a managed
- partition shuts down.
-
-+config JAILHOUSE_DBGCON
-+ tristate "Jailhouse console driver"
-+ depends on X86 || ARM || ARM64
-+ help
-+ The Jailhouse hypervisor provides a simple write-only console for
-+ debugging the bootstrap process of its cells. This driver registers
-+ a console with the kernel to make use of it.
-+
-+ Note that Jailhouse has to be configured to permit a cell the usage
-+ of the console interface.
-+
- source "drivers/virt/vboxguest/Kconfig"
- endif
-diff --git a/drivers/virt/Makefile b/drivers/virt/Makefile
-index fd331247c27a..89e86a1d0f19 100644
---- a/drivers/virt/Makefile
-+++ b/drivers/virt/Makefile
-@@ -4,4 +4,5 @@
- #
-
- obj-$(CONFIG_FSL_HV_MANAGER) += fsl_hypervisor.o
-+obj-$(CONFIG_JAILHOUSE_DBGCON) += jailhouse_dbgcon.o
- obj-y += vboxguest/
-diff --git a/drivers/virt/jailhouse_dbgcon.c b/drivers/virt/jailhouse_dbgcon.c
-new file mode 100644
-index 000000000000..1fd201ea1460
---- /dev/null
-+++ b/drivers/virt/jailhouse_dbgcon.c
-@@ -0,0 +1,103 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+/*
-+ * Console driver for running over the Jailhouse partitioning hypervisor
-+ *
-+ * Copyright (c) Siemens AG, 2016-2018
-+ *
-+ * Authors:
-+ * Jan Kiszka <jan.kiszka@siemens.com>
-+ */
-+
-+#include <linux/console.h>
-+#include <linux/hypervisor.h>
-+#include <linux/module.h>
-+#include <linux/serial_core.h>
-+#ifdef CONFIG_X86
-+#include <asm/alternative.h>
-+#endif
-+#ifdef CONFIG_ARM
-+#include <asm/opcodes-virt.h>
-+#endif
-+
-+#define JAILHOUSE_HC_DEBUG_CONSOLE_PUTC 8
-+
-+static void hypervisor_putc(char c)
-+{
-+#if defined(CONFIG_X86)
-+ int result;
-+
-+ asm volatile(
-+ ALTERNATIVE(".byte 0x0f,0x01,0xc1", ".byte 0x0f,0x01,0xd9",
-+ X86_FEATURE_VMMCALL)
-+ : "=a" (result)
-+ : "a" (JAILHOUSE_HC_DEBUG_CONSOLE_PUTC), "D" (c)
-+ : "memory");
-+#elif defined(CONFIG_ARM)
-+ register u32 num_res asm("r0") = JAILHOUSE_HC_DEBUG_CONSOLE_PUTC;
-+ register u32 arg1 asm("r1") = c;
-+
-+ asm volatile(
-+ __HVC(0x4a48)
-+ : "=r" (num_res)
-+ : "r" (num_res), "r" (arg1)
-+ : "memory");
-+#elif defined(CONFIG_ARM64)
-+ register u64 num_res asm("x0") = JAILHOUSE_HC_DEBUG_CONSOLE_PUTC;
-+ register u64 arg1 asm("x1") = c;
-+
-+ asm volatile(
-+ "hvc #0x4a48\n\t"
-+ : "=r" (num_res)
-+ : "r" (num_res), "r" (arg1)
-+ : "memory");
-+#else
-+#error Unsupported architecture.
-+#endif
-+}
-+
-+static void jailhouse_dbgcon_write(struct console *con, const char *s,
-+ unsigned count)
-+{
-+ while (count > 0) {
-+ hypervisor_putc(*s);
-+ count--;
-+ s++;
-+ }
-+}
-+
-+static int __init early_jailhouse_dbgcon_setup(struct earlycon_device *device,
-+ const char *options)
-+{
-+ device->con->write = jailhouse_dbgcon_write;
-+ return 0;
-+}
-+
-+EARLYCON_DECLARE(jailhouse, early_jailhouse_dbgcon_setup);
-+
-+static struct console jailhouse_dbgcon = {
-+ .name = "jailhouse",
-+ .write = jailhouse_dbgcon_write,
-+ .flags = CON_PRINTBUFFER | CON_ANYTIME,
-+ .index = -1,
-+};
-+
-+static int __init jailhouse_dbgcon_init(void)
-+{
-+ if (!jailhouse_paravirt())
-+ return -ENODEV;
-+
-+ register_console(&jailhouse_dbgcon);
-+ return 0;
-+}
-+
-+static void __exit jailhouse_dbgcon_exit(void)
-+{
-+ unregister_console(&jailhouse_dbgcon);
-+}
-+
-+module_init(jailhouse_dbgcon_init);
-+module_exit(jailhouse_dbgcon_exit);
-+
-+MODULE_LICENSE("GPL v2");
-+MODULE_DESCRIPTION("Jailhouse debug console driver");
-+MODULE_AUTHOR("Jan Kiszka <jan.kiszka@siemens.com>");
---
-2.11.0
-