Subject: Re: linux-next: manual merge of the tty tree with the input tree

From: Dmitry Torokhov <[email-masked]>
Date: Mon, 28 Jan 2013 21:33:08 -0800

On Tue, Jan 29, 2013 at 04:13:21PM +1100, Josh Triplett wrote:
> On Mon, Jan 28, 2013 at 04:23:57PM -0800, Dmitry Torokhov wrote:
> > On Tue, Jan 29, 2013 at 10:59:17AM +1100, Josh Triplett wrote:
> > > On Mon, Jan 28, 2013 at 02:44:43PM -0800, Dmitry Torokhov wrote:
> > > > On Mon, Jan 28, 2013 at 02:09:31PM -0800, Joe Millenbach wrote:
> > > > > On Mon, Jan 28, 2013 at 9:33 AM, Dmitry Torokhov
> > > > > <[email-masked]> wrote:
> > > > > > On Mon, Jan 28, 2013 at 06:46:15AM -0800, Greg KH wrote:
> > > > > >> On Mon, Jan 28, 2013 at 08:44:24PM +1100, Stephen Rothwell wrote:
> > > > > >> > Hi Greg,
> > > > > >> >
> > > > > >> > Today's linux-next merge of the tty tree got a conflict in
> > > > > >> > drivers/input/keyboard/Kconfig between commit 6f2ac009f29b ("Input:
> > > > > >> > goldfish - virtual input event driver") from the input tree and commit
> > > > > >> > 4f73bc4dd3e8 ("tty: Added a CONFIG_TTY option to allow removal of TTY")
> > > > > >> > from the tty tree.
> > > > > >> >
> > > > > >> > I fixed it up (see below - I am not sure if GOLDFISH_EVENTS needs TTY or
> > > > > >> > not) and can carry the fix as necessary (no action is required).
> > > > > >> >
> > > > > >> > --
> > > > > >> > Cheers,
> > > > > >> > Stephen Rothwell                    [email-masked]
> > > > > >> >
> > > > > >> > diff --cc drivers/input/keyboard/Kconfig
> > > > > >> > index 078305e,008f96a..0000000
> > > > > >> > --- a/drivers/input/keyboard/Kconfig
> > > > > >> > +++ b/drivers/input/keyboard/Kconfig
> > > > > >> > @@@ -479,16 -482,8 +482,18 @@@ config KEYBOARD_SAMSUN
> > > > > >> >       To compile this driver as a module, choose M here: the
> > > > > >> >       module will be called samsung-keypad.
> > > > > >> >
> > > > > >> > + if TTY
> > > > > >> > +
> > > > > >> >  +config KEYBOARD_GOLDFISH_EVENTS
> > > > > >> >  +  depends on GOLDFISH
> > > > > >> >  +  tristate "Generic Input Event device for Goldfish"
> > > > > >> >  +  help
> > > > > >> >  +    Say Y here to get an input event device for the Goldfish virtual
> > > > > >>
> > > > > >> Looks good, thanks.
> > > > > >
> > > > > > Greg,
> > > > > >
> > > > > > Please drop 4f73bc4dd3e8563ef4109f293a092820dff66d92, at least the parts
> > > > > > related to input. As far as I know nothing except serport driver
> > > > > > depends on tty and we do not need to introduce this kind of
> > > > > > dependencie. Anyone needing slim config can simply try disabling
> > > > > > input (or parts of it) without needing an artificial dependencies.
> > > > > >
> > > > > > Thanks.
> > > > > >
> > > > > > --
> > > > > > Dmitry
> > > > > 
> > > > > Dmitry and Greg,
> > > > > 
> > > > > SERIO needs TTY, 
> > > > 
> > > > No it does not. There is only one (1) serio driver that needs the tty
> > > > layer and that is serport.
> > > > 
> > > > > and the majority of the input changes are adding "depends on TTY" to
> > > > > things that "select SERIO" as they break the dependency chain.  In
> > > > > other words, enabling a component that selects SERIO will turn SERIO
> > > > > on even when SERIO depends on TTY and TTY is disabled.
> > > > 
> > > > Except that it does not. Are you confusing SERIO with SERIAL by any
> > > > chance?
> > > 
> > > A few serial drivers don't actually need the TTY layer.  However, most
> > 
> > Can you please tell me why you are talking about serial layer here?
> 
> Probably terminology sloppiness.  Insert noun for "things that depend on
> SERIO" here. 

Still does not make sense as SERIO subsystem does not depend on TTY, a
single driver belonging to it does.

> > > do, including many that don't obviously appear to at first glance.  For
> > > instance, MOUSE_PS2 doesn't *appear* to need TTY, but without the
> > > dependency, having MOUSE_PS2 enabled and TTY disabled produces a kernel
> > > that doesn't build.
> > 
> > Compile log please.
> 
> http://marc.info/?l=linux-kernel&m=134555498507747&w=1
> 
> IIRC, produced by dropping the "depends on TTY" from MOUSE_PS2, enabling
> MOUSE_PS2, leaving TTY disabled, and changing nothing else.  (In
> particular, not changing anything related to serport directly.)

Right, because serport (one single diriver outr of all of them) does
depend on TTY.

> 
> > >  (Also keep in mind that many other headers include
> > > <linux/tty.h>.)  Many of the drivers that don't actually need TTY
> > > nonetheless won't typically appear on systems small enough to want to
> > > compile out TTY.
> > > 
> > > In any case, it seems simple enough to whittle down dependencies on TTY
> > > later on, but for a first pass, the conserative approach seems
> > > preferable.
> > 
> > However my approach would be not to touch anything except serport
> > driver (which indeed depends on TTY layer).
> 
> Quite a bit more than that depends on the TTY layer.

No, if you look at the log you mention above the only build failure is
coming from serport driver, exactly as I said. There is exactly *ONE*
driver in drivers/input/serio that depends on tty layer.

> 
> > > > In the future it would be nice if you CCed people involved in the
> > > > subsystem you are changing.
> > > 
> > > Such as the maintainers of the TTY and serial layers?  Alan Cox OKed
> > > this conservative addition of dependencies in the original version of
> > > this change, and Greg had no complaints at the time.
> > 
> > Maintainer of _SERIO_ (not SERIAL, SERIO) layer, yours truly.
> 
> This change affected the dependencies of several hundred drivers, and
> the output of get_maintainer.pl included hundreds of email addresses.
> Spamming *all* of them for a one-line change to the dependencies of a
> Kconfig option, when that change acts as a no-op except on systems
> trying to use CONFIG_TTY=n, seemed imprudent.  Given that this was a
> change to the TTY layer, and not to the SERIO subsystem other than its
> dependencies (along with the dependencies of hundreds of other drivers),
> SERIO didn't particularly seem to stand out here as one to keep the CC
> for.

And yet, if you bothered to CC me on it I'd tell you right away that
there is no point whatsoever to make this misguided change. In general,
if you think you need to add a new dependency to majority of the
drivers in the subsystem maybe you should ask yourself if what you are
doing is right thing or not.

Once again SERIO != SERIAL and has no direct relation to the TTY.

Please revert the input changes and add *ONE* new dependency to the
serport driver.

Thanks.

-- 
Dmitry