summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authorroyger <royger@FreeBSD.org>2014-03-11 10:09:23 +0000
committerroyger <royger@FreeBSD.org>2014-03-11 10:09:23 +0000
commit3c7c289c4650f5f61980f1e10778d931bebb2755 (patch)
tree030377424ef21e9085fc03f2d6204dd25d2d42a1 /sys/i386
parent57a42c756398e8543cdfb5f911e9e1a9a54145ec (diff)
downloadFreeBSD-src-3c7c289c4650f5f61980f1e10778d931bebb2755.zip
FreeBSD-src-3c7c289c4650f5f61980f1e10778d931bebb2755.tar.gz
xen: add and enable Xen console for PVH guests
This adds and enables the PV console used on XEN kernels to GENERIC/XENHVM kernels in order for it to be used on PVH. Approved by: gibbs Sponsored by: Citrix Systems R&D dev/xen/console/console.c: - Define console_page. - Move xc_printf debug function from i386 XEN code to generic console code. - Rework xc_printf. - Use xen_initial_domain instead of open-coded checks for Dom0. - Gate the attach of the PV console to PV(H) guests. dev/xen/console/xencons_ring.c: - Allow the PV Xen console to output earlier by directly signaling the event channel in start_info if the event channel is not yet initialized. - Use HYPERVISOR_start_info instead of xen_start_info. i386/include/xen/xen-os.h: - Remove prototype for xc_printf since it's now declared in global xen-os.h i386/xen/xen_machdep.c: - Remove previous version of xc_printf. - Remove definition of console_page (now it's defined in the console itself). - Fix some printf formatting errors. x86/xen/pv.c: - Add some early boot debug messages using xc_printf. - Set console_page based on the value passed in start_info. xen/xen-os.h: - Declare console_page and add prototype for xc_printf.
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/include/xen/xen-os.h1
-rw-r--r--sys/i386/xen/xen_machdep.c21
2 files changed, 2 insertions, 20 deletions
diff --git a/sys/i386/include/xen/xen-os.h b/sys/i386/include/xen/xen-os.h
index a8fba61..3d1ef04 100644
--- a/sys/i386/include/xen/xen-os.h
+++ b/sys/i386/include/xen/xen-os.h
@@ -45,7 +45,6 @@ static inline void rep_nop(void)
#define cpu_relax() rep_nop()
#ifndef XENHVM
-void xc_printf(const char *fmt, ...);
#ifdef SMP
extern int gdtset;
diff --git a/sys/i386/xen/xen_machdep.c b/sys/i386/xen/xen_machdep.c
index fd575ee..c1e166b 100644
--- a/sys/i386/xen/xen_machdep.c
+++ b/sys/i386/xen/xen_machdep.c
@@ -186,21 +186,6 @@ xen_boothowto(char *envp)
return howto;
}
-#define XC_PRINTF_BUFSIZE 1024
-void
-xc_printf(const char *fmt, ...)
-{
- __va_list ap;
- int retval;
- static char buf[XC_PRINTF_BUFSIZE];
-
- va_start(ap, fmt);
- retval = vsnprintf(buf, XC_PRINTF_BUFSIZE - 1, fmt, ap);
- va_end(ap);
- buf[retval] = 0;
- (void)HYPERVISOR_console_write(buf, retval);
-}
-
#define XPQUEUE_SIZE 128
@@ -745,8 +730,6 @@ void initvalues(start_info_t *startinfo);
struct xenstore_domain_interface;
extern struct xenstore_domain_interface *xen_store;
-char *console_page;
-
void *
bootmem_alloc(unsigned int size)
{
@@ -969,7 +952,7 @@ initvalues(start_info_t *startinfo)
xc_printf("initvalues(): wooh - availmem=%x,%x\n", avail_space,
cur_space);
- xc_printf("KERNBASE=%x,pt_base=%x, VTOPFN(base)=%x, nr_pt_frames=%x\n",
+ xc_printf("KERNBASE=%x,pt_base=%lx, VTOPFN(base)=%x, nr_pt_frames=%lx\n",
KERNBASE,xen_start_info->pt_base, VTOPFN(xen_start_info->pt_base),
xen_start_info->nr_pt_frames);
xendebug_flags = 0; /* 0xffffffff; */
@@ -978,7 +961,7 @@ initvalues(start_info_t *startinfo)
shift_phys_machine(xen_phys_machine, xen_start_info->nr_pages);
#endif
XENPRINTF("IdlePTD %p\n", IdlePTD);
- XENPRINTF("nr_pages: %ld shared_info: 0x%lx flags: 0x%lx pt_base: 0x%lx "
+ XENPRINTF("nr_pages: %ld shared_info: 0x%lx flags: 0x%x pt_base: 0x%lx "
"mod_start: 0x%lx mod_len: 0x%lx\n",
xen_start_info->nr_pages, xen_start_info->shared_info,
xen_start_info->flags, xen_start_info->pt_base,
OpenPOWER on IntegriCloud