Specify the size of the console ring buffer.
### console
-> `= List of [ vga | com1[H,L] | com2[H,L] | dbgp | none ]`
+> `= List of [ vga | com1[H,L] | com2[H,L] | pv | dbgp | none ]`
> Default: `console=com1,vga`
cleared. This allows a single port to be shared by two subsystems
(e.g. console and debugger).
+`pv` indicates that Xen should use Xen's PV console. This option is
+only available when used together with `pv-in-pvh`.
+
`dbgp` indicates that Xen should use a USB debug port.
`none` indicates that Xen should not use a console. This option only
*/
#include <xen/init.h>
#include <xen/types.h>
+#include <xen/pv_console.h>
#include <asm/apic.h>
#include <asm/guest.h>
vcpu_info->evtchn_upcall_pending = 0;
xchg(&vcpu_info->evtchn_pending_sel, 0);
+ pv_console_rx(regs);
+
ack_APIC_irq();
}
#include <xen/event.h>
#include <xen/console.h>
#include <xen/serial.h>
+#include <xen/pv_console.h>
#include <xen/softirq.h>
#include <xen/keyhandler.h>
#include <xen/guest_access.h>
(*serial_steal_fn)(s);
else
serial_puts(sercon_handle, s);
+
+ /* Copy all serial output into PV console */
+ pv_console_puts(s);
}
static void dump_console_ring_key(unsigned char key)
{
if ( *p == ',' )
p++;
- if ( !strncmp(p, "vga", 3) )
+ if ( !strncmp(p, "pv", 2) )
+ pv_console_init();
+ else if ( !strncmp(p, "vga", 3) )
video_init();
else if ( !strncmp(p, "xen", 3) )
opt_console_xen = true;
}
serial_set_rx_handler(sercon_handle, serial_rx);
+ pv_console_set_rx_handler(serial_rx);
/* HELLO WORLD --- start-of-day banner text. */
spin_lock(&console_lock);
void __init console_init_postirq(void)
{
serial_init_postirq();
+ pv_console_init_postirq();
if ( conring != _conring )
return;