Module Name: src Committed By: bouyer Date: Mon Oct 16 17:31:18 UTC 2023
Modified Files: src/sys/arch/xen/include: hypervisor.h src/sys/arch/xen/x86: pvh_consinit.c src/sys/arch/xen/xen: xen_machdep.c Log Message: Move the pvh_xencons so xen_machdep.c as early_xencons, so it can be used in the future as early ouput for plain PV guests too. To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 src/sys/arch/xen/include/hypervisor.h cvs rdiff -u -r1.4 -r1.5 src/sys/arch/xen/x86/pvh_consinit.c cvs rdiff -u -r1.27 -r1.28 src/sys/arch/xen/xen/xen_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/xen/include/hypervisor.h diff -u src/sys/arch/xen/include/hypervisor.h:1.58 src/sys/arch/xen/include/hypervisor.h:1.59 --- src/sys/arch/xen/include/hypervisor.h:1.58 Mon Oct 16 17:29:31 2023 +++ src/sys/arch/xen/include/hypervisor.h Mon Oct 16 17:31:17 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: hypervisor.h,v 1.58 2023/10/16 17:29:31 bouyer Exp $ */ +/* $NetBSD: hypervisor.h,v 1.59 2023/10/16 17:31:17 bouyer Exp $ */ /* * Copyright (c) 2006 Manuel Bouyer. @@ -214,4 +214,6 @@ hypervisor_notify_via_evtchn(unsigned in void xen_init_ksyms(void); void xen_map_vcpu(struct cpu_info *); +void xen_early_console(void); + #endif /* _XEN_HYPERVISOR_H_ */ Index: src/sys/arch/xen/x86/pvh_consinit.c diff -u src/sys/arch/xen/x86/pvh_consinit.c:1.4 src/sys/arch/xen/x86/pvh_consinit.c:1.5 --- src/sys/arch/xen/x86/pvh_consinit.c:1.4 Sat Jul 22 19:13:17 2023 +++ src/sys/arch/xen/x86/pvh_consinit.c Mon Oct 16 17:31:18 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pvh_consinit.c,v 1.4 2023/07/22 19:13:17 mrg Exp $ */ +/* $NetBSD: pvh_consinit.c,v 1.5 2023/10/16 17:31:18 bouyer Exp $ */ /* * Copyright (c) 2020 Manuel Bouyer. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pvh_consinit.c,v 1.4 2023/07/22 19:13:17 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pvh_consinit.c,v 1.5 2023/10/16 17:31:18 bouyer Exp $"); #include "xencons.h" #include <sys/param.h> @@ -43,16 +43,6 @@ __KERNEL_RCSID(0, "$NetBSD: pvh_consinit #include "xen_def_cons.h" -static int pvh_xenconscn_getc(dev_t); -static void pvh_xenconscn_putc(dev_t, int); -static void pvh_xenconscn_pollc(dev_t, int); - -static struct consdev pvh_xencons = { - NULL, NULL, pvh_xenconscn_getc, pvh_xenconscn_putc, pvh_xenconscn_pollc, - NULL, NULL, NULL, NODEV, CN_NORMAL -}; - - int xen_pvh_consinit(void) { @@ -76,7 +66,7 @@ xen_pvh_consinit(void) } if (initted == 0 && !xendomain_is_dom0()) { /* pmap not up yet, fall back to printk() */ - cn_tab = &pvh_xencons; + xen_early_console(); initted++; return 1; } else if (initted > 1) { @@ -116,23 +106,3 @@ xen_pvh_consinit(void) #endif return 1; } - -static int -pvh_xenconscn_getc(dev_t dev) -{ - while(1) - ; - return -1; -} - -static void -pvh_xenconscn_putc(dev_t dev, int c) -{ - printk("%c", c); -} - -static void -pvh_xenconscn_pollc(dev_t dev, int on) -{ - return; -} Index: src/sys/arch/xen/xen/xen_machdep.c diff -u src/sys/arch/xen/xen/xen_machdep.c:1.27 src/sys/arch/xen/xen/xen_machdep.c:1.28 --- src/sys/arch/xen/xen/xen_machdep.c:1.27 Sat Aug 20 23:48:51 2022 +++ src/sys/arch/xen/xen/xen_machdep.c Mon Oct 16 17:31:18 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: xen_machdep.c,v 1.27 2022/08/20 23:48:51 riastradh Exp $ */ +/* $NetBSD: xen_machdep.c,v 1.28 2023/10/16 17:31:18 bouyer Exp $ */ /* * Copyright (c) 2006 Manuel Bouyer. @@ -53,7 +53,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xen_machdep.c,v 1.27 2022/08/20 23:48:51 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xen_machdep.c,v 1.28 2023/10/16 17:31:18 bouyer Exp $"); #include "opt_xen.h" @@ -70,6 +70,8 @@ __KERNEL_RCSID(0, "$NetBSD: xen_machdep. #include <sys/pmf.h> #include <sys/xcall.h> +#include <dev/cons.h> + #include <xen/intr.h> #include <xen/hypervisor.h> #include <xen/shutdown_xenbus.h> @@ -440,6 +442,41 @@ printk(const char *fmt, ...) (void)HYPERVISOR_console_io(CONSOLEIO_write, ret, buf); } +static int early_xenconscn_getc(dev_t); +static void early_xenconscn_putc(dev_t, int); +static void early_xenconscn_pollc(dev_t, int); + +static struct consdev early_xencons = { + NULL, NULL, + early_xenconscn_getc, early_xenconscn_putc, early_xenconscn_pollc, + NULL, NULL, NULL, NODEV, CN_NORMAL +}; + +void +xen_early_console(void) +{ + cn_tab = &early_xencons; /* fallback console */ +} + +static int +early_xenconscn_getc(dev_t dev) +{ + while(1) + ; + return -1; +} + +static void +early_xenconscn_putc(dev_t dev, int c) +{ + printk("%c", c); +} + +static void +early_xenconscn_pollc(dev_t dev, int on) +{ + return; +} bool xen_feature_tables[XENFEAT_NR_SUBMAPS * 32]; void