plain text document attachment (lguest64-hvc.patch)
This is a start to try to get HVC working for x86_64.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Glauber de Oliveira Costa <glommer@gmail.com>
Cc: Chris Wright <chrisw@sous-sol.org>
Index: work-pv/drivers/char/Kconfig
==================================================================---
work-pv.orig/drivers/char/Kconfig
+++ work-pv/drivers/char/Kconfig
@@ -595,6 +595,12 @@ config HVC_CONSOLE
pSeries machines when partitioned support a hypervisor virtual
console. This driver allows each pSeries partition to have a console
which is accessed via the HMC.
+config HVC_LGUEST
+ bool "lguest hypervisor console"
+ depends on LGUEST_GUEST
+ select HVC_DRIVER
+ help
+ Totally fubar
config HVC_ISERIES
bool "iSeries Hypervisor Virtual Console support"
Index: work-pv/drivers/char/Makefile
==================================================================---
work-pv.orig/drivers/char/Makefile
+++ work-pv/drivers/char/Makefile
@@ -43,7 +43,7 @@ obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += am
obj-$(CONFIG_SX) += sx.o generic_serial.o
obj-$(CONFIG_RIO) += rio/ generic_serial.o
obj-$(CONFIG_HVC_CONSOLE) += hvc_vio.o hvsi.o
-obj-$(CONFIG_LGUEST_GUEST) += hvc_lguest.o
+obj-$(CONFIG_HVC_GUEST) += hvc_lguest.o
obj-$(CONFIG_HVC_ISERIES) += hvc_iseries.o
obj-$(CONFIG_HVC_RTAS) += hvc_rtas.o
obj-$(CONFIG_HVC_DRIVER) += hvc_console.o
Index: work-pv/drivers/char/hvc_lguest.c
==================================================================---
work-pv.orig/drivers/char/hvc_lguest.c
+++ work-pv/drivers/char/hvc_lguest.c
@@ -25,7 +25,6 @@ static int cons_irq;
static int cons_offset;
static char inbuf[256];
static struct lguest_dma cons_input = { .used_len = 0,
- .addr[0] = __pa(inbuf),
.len[0] = sizeof(inbuf),
.len[1] = 0 };
@@ -66,6 +65,12 @@ struct hv_ops lguest_cons = {
static int __init cons_init(void)
{
+ /*
+ * Can't initialize this in the const declarations,
+ * since __pa(inbuf) does not evaluate into a constant.
+ */
+ cons_input.addr[0] = __pa(inbuf);
+
if (strcmp(paravirt_ops.name, "lguest") != 0)
return 0;
--