[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XenPPC] [PATCH] xen console driver hijacking TTY_MAJOR



On Tue, 2006-08-01 at 12:14 -0400, Jimi Xenidis wrote:
> On Aug 1, 2006, at 12:08 PM, Hollis Blanchard wrote:
> 
> > On Mon, 2006-07-31 at 21:41 -0400, Amos Waterland wrote:
> >> diff -r 17aa29a18b08 drivers/xen/console/console.c
> >> --- a/drivers/xen/console/console.c        Thu Jul 27 18:57:20 2006 -0400
> >> +++ b/drivers/xen/console/console.c        Mon Jul 31 21:04:17 2006 -0400
> >>
> >
> > I don't understand why you're doing this. The solution is for the
> > console driver to use a new major number.
> 
> Just covering all the bases.
> The goal is to have an intermediary patch the Xen will accpet until  
> they willing to move to a new TTY, they have been awfully quite about  
> this.

So pester them. Nobody's going to do anything about it if they don't
realize it's an issue.

> Ultimately, we'll have a patch that will do the new major number but  
> allow this "bug compatible" to exist as a CONFIG.

The patch is trivial. You can use 240 until someone registers a real
major number. Try this:

diff -r 72c8bc5d88f4 drivers/xen/console/console.c
--- a/drivers/xen/console/console.c     Thu Jun 29 13:04:30 2006 -0400
+++ b/drivers/xen/console/console.c     Tue Aug 01 11:20:08 2006 -0500
@@ -582,7 +582,9 @@ static int __init xencons_init(void)
                return -ENOMEM;

        DRV(xencons_driver)->name            = "xencons";
-       DRV(xencons_driver)->major           = TTY_MAJOR;
+       DRV(xencons_driver)->major           = 240;
+       DRV(xencons_driver)->minor_start     = 0;
+       DRV(xencons_driver)->name_base       = 0;
        DRV(xencons_driver)->type            = TTY_DRIVER_TYPE_SERIAL;
        DRV(xencons_driver)->subtype         = SERIAL_TYPE_NORMAL;
        DRV(xencons_driver)->init_termios    = tty_std_termios;
@@ -593,16 +595,6 @@ static int __init xencons_init(void)
        DRV(xencons_driver)->termios         = xencons_termios;
        DRV(xencons_driver)->termios_locked  = xencons_termios_locked;

-       if (xc_mode == XC_SERIAL) {
-               DRV(xencons_driver)->name        = "ttyS";
-               DRV(xencons_driver)->minor_start = 64 + xc_num;
-               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;
-       }
-
        tty_set_operations(xencons_driver, &xencons_ops);

        if ((rc = tty_register_driver(DRV(xencons_driver))) != 0) {

That should work for you locally. You'll want to add xencons0
to /etc/inittab and /etc/securetty. You may not even have to mknod or
modify udev rules; not sure about that.

Through the wonders of decentralized source management, you can keep
this modification in a local tree indefinitely.

If you want to be more complete for submission on xen-devel, you can
also rip out the xc_num and related initialization and mode logic
earlier in console.c.

Solve the real problem please; don't add hacks to work around hacks.

-- 
Hollis Blanchard
IBM Linux Technology Center


_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.