{
if ( tainted )
{
- snprintf(str, TAINT_STRING_MAX_LEN, "Tainted: %c%c%c",
+ snprintf(str, TAINT_STRING_MAX_LEN, "Tainted: %c%c%c%c",
tainted & TAINT_UNSAFE_SMP ? 'S' : ' ',
tainted & TAINT_MACHINE_CHECK ? 'M' : ' ',
- tainted & TAINT_BAD_PAGE ? 'B' : ' ');
+ tainted & TAINT_BAD_PAGE ? 'B' : ' ',
+ tainted & TAINT_SYNC_CONSOLE ? 'C' : ' ');
}
else
{
if ( opt_sync_console )
{
serial_start_sync(sercon_handle);
+ add_taint(TAINT_SYNC_CONSOLE);
printk("Console output is synchronous.\n");
}
}
void console_endboot(int disable_vga)
{
+ int i;
+
+ if ( opt_sync_console )
+ {
+ printk("**********************************************\n");
+ printk("******* WARNING: CONSOLE OUTPUT IS SYCHRONOUS\n");
+ printk("******* This option is intended to aid debugging "
+ "of Xen by ensuring\n");
+ printk("******* that all output is synchronously delivered "
+ "on the serial line.\n");
+ printk("******* However it can introduce SIGNIFICANT latencies "
+ "and affect\n");
+ printk("******* timekeeping. It is NOT recommended for "
+ "production use!\n");
+ printk("**********************************************\n");
+ for ( i = 0; i < 3; i++ )
+ {
+ printk("%d... ", 3-i);
+ mdelay(1000);
+ }
+ printk("\n");
+ }
+
if ( disable_vga )
vgacon_enabled = 0;
#define TAINT_UNSAFE_SMP (1<<0)
#define TAINT_MACHINE_CHECK (1<<1)
#define TAINT_BAD_PAGE (1<<2)
+#define TAINT_SYNC_CONSOLE (1<<3)
extern int tainted;
#define TAINT_STRING_MAX_LEN 20
extern char *print_tainted(char *str);