[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [LINUX] Fix booting with e.g. xencons=tty3, so that tty1/tty2 are valid (dummy) devices.
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxxxx # Node ID 9fd92e7e91a58b5d09dc2f4f2f520ed01e69834f # Parent 856caf975abd50b78c15f41cc8ab52372059fcf3 [LINUX] Fix booting with e.g. xencons=tty3, so that tty1/tty2 are valid (dummy) devices. Attached patch makes it always create valid devices on tty1-tty63, but all but the one specified by xencons are dummy devices. From: Mark McLoughlin <markmc@xxxxxxxxxx> Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- linux-2.6-xen-sparse/drivers/xen/console/console.c | 35 +++++++++------------ 1 files changed, 16 insertions(+), 19 deletions(-) diff -r 856caf975abd -r 9fd92e7e91a5 linux-2.6-xen-sparse/drivers/xen/console/console.c --- a/linux-2.6-xen-sparse/drivers/xen/console/console.c Mon Jul 03 08:35:12 2006 +0100 +++ b/linux-2.6-xen-sparse/drivers/xen/console/console.c Mon Jul 03 08:52:27 2006 +0100 @@ -267,7 +267,8 @@ void xencons_force_flush(void) /******************** User-space console driver (/dev/console) ************/ #define DRV(_d) (_d) -#define TTY_INDEX(_tty) ((_tty)->index) +#define DUMMY_TTY(_tty) ((xc_mode != XC_SERIAL) && \ + ((_tty)->index != (xc_num - 1))) static struct termios *xencons_termios[MAX_NR_CONSOLES]; static struct termios *xencons_termios_locked[MAX_NR_CONSOLES]; @@ -391,7 +392,7 @@ static void xencons_send_xchar(struct tt { unsigned long flags; - if (TTY_INDEX(tty) != 0) + if (DUMMY_TTY(tty)) return; spin_lock_irqsave(&xencons_lock, flags); @@ -402,7 +403,7 @@ static void xencons_send_xchar(struct tt static void xencons_throttle(struct tty_struct *tty) { - if (TTY_INDEX(tty) != 0) + if (DUMMY_TTY(tty)) return; if (I_IXOFF(tty)) @@ -411,7 +412,7 @@ static void xencons_throttle(struct tty_ static void xencons_unthrottle(struct tty_struct *tty) { - if (TTY_INDEX(tty) != 0) + if (DUMMY_TTY(tty)) return; if (I_IXOFF(tty)) { @@ -426,7 +427,7 @@ static void xencons_flush_buffer(struct { unsigned long flags; - if (TTY_INDEX(tty) != 0) + if (DUMMY_TTY(tty)) return; spin_lock_irqsave(&xencons_lock, flags); @@ -451,7 +452,7 @@ static int xencons_write( int i; unsigned long flags; - if (TTY_INDEX(tty) != 0) + if (DUMMY_TTY(tty)) return count; spin_lock_irqsave(&xencons_lock, flags); @@ -472,7 +473,7 @@ static void xencons_put_char(struct tty_ { unsigned long flags; - if (TTY_INDEX(tty) != 0) + if (DUMMY_TTY(tty)) return; spin_lock_irqsave(&xencons_lock, flags); @@ -484,7 +485,7 @@ static void xencons_flush_chars(struct t { unsigned long flags; - if (TTY_INDEX(tty) != 0) + if (DUMMY_TTY(tty)) return; spin_lock_irqsave(&xencons_lock, flags); @@ -496,7 +497,7 @@ static void xencons_wait_until_sent(stru { unsigned long orig_jiffies = jiffies; - if (TTY_INDEX(tty) != 0) + if (DUMMY_TTY(tty)) return; while (DRV(tty->driver)->chars_in_buffer(tty)) { @@ -515,7 +516,7 @@ static int xencons_open(struct tty_struc { unsigned long flags; - if (TTY_INDEX(tty) != 0) + if (DUMMY_TTY(tty)) return 0; spin_lock_irqsave(&xencons_lock, flags); @@ -532,7 +533,7 @@ static void xencons_close(struct tty_str { unsigned long flags; - if (TTY_INDEX(tty) != 0) + if (DUMMY_TTY(tty)) return; if (tty->count == 1) { @@ -588,8 +589,7 @@ static int __init xencons_init(void) DRV(xencons_driver)->init_termios = tty_std_termios; DRV(xencons_driver)->flags = TTY_DRIVER_REAL_RAW | - TTY_DRIVER_RESET_TERMIOS | - TTY_DRIVER_NO_DEVFS; + TTY_DRIVER_RESET_TERMIOS; DRV(xencons_driver)->termios = xencons_termios; DRV(xencons_driver)->termios_locked = xencons_termios_locked; @@ -599,8 +599,8 @@ static int __init xencons_init(void) DRV(xencons_driver)->name_base = 0 + xc_num; } else { DRV(xencons_driver)->name = "tty"; - DRV(xencons_driver)->minor_start = xc_num; - DRV(xencons_driver)->name_base = xc_num; + DRV(xencons_driver)->minor_start = 1; + DRV(xencons_driver)->name_base = 1; } tty_set_operations(xencons_driver, &xencons_ops); @@ -614,8 +614,6 @@ static int __init xencons_init(void) xencons_driver = NULL; return rc; } - - tty_register_device(xencons_driver, 0, NULL); if (xen_start_info->flags & SIF_INITDOMAIN) { xencons_priv_irq = bind_virq_to_irqhandler( @@ -629,8 +627,7 @@ static int __init xencons_init(void) } printk("Xen virtual console successfully installed as %s%d\n", - DRV(xencons_driver)->name, - DRV(xencons_driver)->name_base ); + DRV(xencons_driver)->name, xc_num); return 0; } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |