2003-07-13 16:25:06

by Fredrik Tolf

[permalink] [raw]
Subject: Input layer demand loading

Why does the input layer still not have on-demand module loading? How about
applying this?

Fredrik Tolf


Attachments:
input.c.patch (725.00 B)
Patch for 2.5.75

2003-07-14 06:13:09

by Greg KH

[permalink] [raw]
Subject: Re: Input layer demand loading

On Sun, Jul 13, 2003 at 06:39:49PM +0200, Fredrik Tolf wrote:
> Why does the input layer still not have on-demand module loading? How about
> applying this?

What's wrong with the current hotplug interface for the input layer? If
you want to implement this, add some input hotplug scripts to the
linux-hotplug package.

thanks,

greg k-h

2003-07-14 10:43:40

by Fredrik Tolf

[permalink] [raw]
Subject: Re: Input layer demand loading

On Monday 14 July 2003 08.22, Greg KH wrote:
> On Sun, Jul 13, 2003 at 06:39:49PM +0200, Fredrik Tolf wrote:
> > Why does the input layer still not have on-demand module loading? How
> > about applying this?
>
> What's wrong with the current hotplug interface for the input layer? If
> you want to implement this, add some input hotplug scripts to the
> linux-hotplug package.

Correct me if I'm wrong, but AFAIK that can only be smoothly used to load
hardware driver modules.
If the input layer userspace interface code has been compiled as modules, and
you have a ordinary (not hotplug) device, eg. a gameport joystick, can really
the hotplug interface be used to load joydev.o when /dev/input/js0 is opened?
I don't use hotplugging that much, so I can't say that I'm sure about what it
can do, but in my perception of the hotplug system, it can't be used for
that.

Fredrik Tolf

2003-07-16 04:16:54

by Greg KH

[permalink] [raw]
Subject: Re: Input layer demand loading

On Mon, Jul 14, 2003 at 12:58:24PM +0200, Fredrik Tolf wrote:
> On Monday 14 July 2003 08.22, Greg KH wrote:
> > On Sun, Jul 13, 2003 at 06:39:49PM +0200, Fredrik Tolf wrote:
> > > Why does the input layer still not have on-demand module loading? How
> > > about applying this?
> >
> > What's wrong with the current hotplug interface for the input layer? If
> > you want to implement this, add some input hotplug scripts to the
> > linux-hotplug package.
>
> Correct me if I'm wrong, but AFAIK that can only be smoothly used to load
> hardware driver modules.

In a way, yes.

> If the input layer userspace interface code has been compiled as modules, and
> you have a ordinary (not hotplug) device, eg. a gameport joystick, can really
> the hotplug interface be used to load joydev.o when /dev/input/js0 is opened?
> I don't use hotplugging that much, so I can't say that I'm sure about what it
> can do, but in my perception of the hotplug system, it can't be used for
> that.

No, you want to load the joydev.o driver when you plug in the gameport
joystick. Which will be before you open the /dev node.

So I think it's working the way it is now, correct?

thanks,

greg k-h

2003-07-16 12:47:03

by Fredrik Tolf

[permalink] [raw]
Subject: Re: Input layer demand loading

On Wednesday 16 July 2003 06.29, Greg KH wrote:
> On Mon, Jul 14, 2003 at 12:58:24PM +0200, Fredrik Tolf wrote:
> > On Monday 14 July 2003 08.22, Greg KH wrote:
> > > On Sun, Jul 13, 2003 at 06:39:49PM +0200, Fredrik Tolf wrote:
> > > > Why does the input layer still not have on-demand module loading? How
> > > > about applying this?
> > >
> > > What's wrong with the current hotplug interface for the input layer?
> > > If you want to implement this, add some input hotplug scripts to the
> > > linux-hotplug package.
> >
> > Correct me if I'm wrong, but AFAIK that can only be smoothly used to load
> > hardware driver modules.
>
> In a way, yes.
>
> > If the input layer userspace interface code has been compiled as modules,
> > and you have a ordinary (not hotplug) device, eg. a gameport joystick,
> > can really the hotplug interface be used to load joydev.o when
> > /dev/input/js0 is opened?
>
> No, you want to load the joydev.o driver when you plug in the gameport
> joystick. Which will be before you open the /dev node.

Not necessarily. When the joystick is plugged in, you want to load the
hardware driver modules. There's really no need for the userspace interface
until someone requests it. At least that's the way I see it.
And in any case, even if you do want to load joydev.o when the joystick is
plugged in, I don't see how that could be done on-demand when the joystick
port isn't hotplug compatible, such as is the case with gameports, right?

Fredrik Tolf

2003-07-16 16:18:54

by Greg KH

[permalink] [raw]
Subject: Re: Input layer demand loading

On Wed, Jul 16, 2003 at 02:57:42PM +0200, Fredrik Tolf wrote:
> On Wednesday 16 July 2003 06.29, Greg KH wrote:
> > On Mon, Jul 14, 2003 at 12:58:24PM +0200, Fredrik Tolf wrote:
> > > On Monday 14 July 2003 08.22, Greg KH wrote:
> > > > On Sun, Jul 13, 2003 at 06:39:49PM +0200, Fredrik Tolf wrote:
> > > > > Why does the input layer still not have on-demand module loading? How
> > > > > about applying this?
> > > >
> > > > What's wrong with the current hotplug interface for the input layer?
> > > > If you want to implement this, add some input hotplug scripts to the
> > > > linux-hotplug package.
> > >
> > > Correct me if I'm wrong, but AFAIK that can only be smoothly used to load
> > > hardware driver modules.
> >
> > In a way, yes.
> >
> > > If the input layer userspace interface code has been compiled as modules,
> > > and you have a ordinary (not hotplug) device, eg. a gameport joystick,
> > > can really the hotplug interface be used to load joydev.o when
> > > /dev/input/js0 is opened?
> >
> > No, you want to load the joydev.o driver when you plug in the gameport
> > joystick. Which will be before you open the /dev node.
>
> Not necessarily. When the joystick is plugged in, you want to load the
> hardware driver modules. There's really no need for the userspace interface
> until someone requests it. At least that's the way I see it.
> And in any case, even if you do want to load joydev.o when the joystick is
> plugged in, I don't see how that could be done on-demand when the joystick
> port isn't hotplug compatible, such as is the case with gameports, right?

True, but then if you try to open the port, you will only get the base
joydev.o module loaded, not the gameport driver, which is what you
_really_ want to have loaded, right?

So there really isn't much benifit to doing this, sorry.

greg k-h

2003-07-16 16:45:05

by MånsRullgård

[permalink] [raw]
Subject: Re: Input layer demand loading

Greg KH <[email protected]> writes:

>> Not necessarily. When the joystick is plugged in, you want to load the
>> hardware driver modules. There's really no need for the userspace interface
>> until someone requests it. At least that's the way I see it.
>> And in any case, even if you do want to load joydev.o when the joystick is
>> plugged in, I don't see how that could be done on-demand when the joystick
>> port isn't hotplug compatible, such as is the case with gameports, right?
>
> True, but then if you try to open the port, you will only get the base
> joydev.o module loaded, not the gameport driver, which is what you
> _really_ want to have loaded, right?
>
> So there really isn't much benifit to doing this, sorry.

That's easily fixed in modules.conf, or modprobe.conf for 2.6.

--
M?ns Rullg?rd
[email protected]

2003-07-16 17:29:47

by Oliver Neukum

[permalink] [raw]
Subject: Re: Input layer demand loading


> True, but then if you try to open the port, you will only get the base
> joydev.o module loaded, not the gameport driver, which is what you
> _really_ want to have loaded, right?
>
> So there really isn't much benifit to doing this, sorry.

Why? It could work the way PCMCIA SCSI works.
Cardmgr loads the LLDD, but sd, sg, etc. are loaded
on demand.

Regards
Oliver

2003-07-16 18:07:34

by Andrey Borzenkov

[permalink] [raw]
Subject: Re: Input layer demand loading

>> True, but then if you try to open the port, you will only get the base
>> joydev.o module loaded, not the gameport driver, which is what you
>> _really_ want to have loaded, right?
>>
>> So there really isn't much benifit to doing this, sorry.
>
> Why? It could work the way PCMCIA SCSI works.
> Cardmgr loads the LLDD, but sd, sg, etc. are loaded
> on demand.

how? SCSI (or USB, PCI, EISA etc) have driver-independent means to identify
device or at least device class.

But how are you going you going to know you need to load specific mouse driver
(logitech not microsoft) or specific joystick flavour? All that you possibly
know that you have _some_ mouse or _some_ joystick ...

-andrey

2003-07-16 18:19:28

by Oliver Neukum

[permalink] [raw]
Subject: Re: Input layer demand loading

Am Mittwoch, 16. Juli 2003 20:19 schrieb Andrey Borzenkov:
> >> True, but then if you try to open the port, you will only get the base
> >> joydev.o module loaded, not the gameport driver, which is what you
> >> _really_ want to have loaded, right?
> >>
> >> So there really isn't much benifit to doing this, sorry.
> >
> > Why? It could work the way PCMCIA SCSI works.
> > Cardmgr loads the LLDD, but sd, sg, etc. are loaded
> > on demand.
>
> how? SCSI (or USB, PCI, EISA etc) have driver-independent means to identify
> device or at least device class.
>
> But how are you going you going to know you need to load specific mouse driver
> (logitech not microsoft) or specific joystick flavour? All that you possibly
> know that you have _some_ mouse or _some_ joystick ...

Exactly, you'd only load the hardware independent part on demand.
Or, alternatively, you'd record the driver to load in the hotplug script
and load it on demand.

Regards
Oliver

2003-07-16 18:21:34

by Mike Fedyk

[permalink] [raw]
Subject: Re: Input layer demand loading

On Wed, Jul 16, 2003 at 10:19:17PM +0400, Andrey Borzenkov wrote:
> >> True, but then if you try to open the port, you will only get the base
> >> joydev.o module loaded, not the gameport driver, which is what you
> >> _really_ want to have loaded, right?
> >>
> >> So there really isn't much benifit to doing this, sorry.
> >
> > Why? It could work the way PCMCIA SCSI works.
> > Cardmgr loads the LLDD, but sd, sg, etc. are loaded
> > on demand.
>
> how? SCSI (or USB, PCI, EISA etc) have driver-independent means to identify
> device or at least device class.
>
> But how are you going you going to know you need to load specific mouse driver
> (logitech not microsoft) or specific joystick flavour? All that you possibly
> know that you have _some_ mouse or _some_ joystick ...

Isn't that why we have hotplug in userspace?

That way, we know we have a mouse, but it's up to userspace to find out
what kind.

2003-07-16 21:11:58

by Fredrik Tolf

[permalink] [raw]
Subject: Re: Input layer demand loading

On Wednesday 16 July 2003 18.26, Greg KH wrote:
> On Wed, Jul 16, 2003 at 02:57:42PM +0200, Fredrik Tolf wrote:
> > On Wednesday 16 July 2003 06.29, Greg KH wrote:
> > > On Mon, Jul 14, 2003 at 12:58:24PM +0200, Fredrik Tolf wrote:
> > > > If the input layer userspace interface code has been compiled as
> > > > modules, and you have a ordinary (not hotplug) device, eg. a gameport
> > > > joystick, can really the hotplug interface be used to load joydev.o
> > > > when /dev/input/js0 is opened?
> > >
> > > No, you want to load the joydev.o driver when you plug in the gameport
> > > joystick. Which will be before you open the /dev node.
> >
> > Not necessarily. When the joystick is plugged in, you want to load the
> > hardware driver modules. There's really no need for the userspace
> > interface until someone requests it. At least that's the way I see it.
> > And in any case, even if you do want to load joydev.o when the joystick
> > is plugged in, I don't see how that could be done on-demand when the
> > joystick port isn't hotplug compatible, such as is the case with
> > gameports, right?
>
> True, but then if you try to open the port, you will only get the base
> joydev.o module loaded, not the gameport driver, which is what you
> _really_ want to have loaded, right?

Huh? Look at it this way: As it is now, if you have a non-hotplug joystick,
then you can't load anything automatically, not even the hardware drivers.
If you have demand-loading in the input layer, on the other hand, you can have
"above" directives in modules.conf (or "install" directives in modprobe.conf)
to pull in the hardware drivers along with joydev. So not only does
demand-loading permit hardware drivers and userspace interfaces independently
of each other, it also provides for loading hardware drivers on demand for
non-hotplug hardware.

Fredrik Tolf

2003-07-16 21:42:38

by Greg KH

[permalink] [raw]
Subject: Re: Input layer demand loading

On Wed, Jul 16, 2003 at 11:23:31PM +0200, Fredrik Tolf wrote:
> On Wednesday 16 July 2003 18.26, Greg KH wrote:
> > On Wed, Jul 16, 2003 at 02:57:42PM +0200, Fredrik Tolf wrote:
> > > On Wednesday 16 July 2003 06.29, Greg KH wrote:
> > > > On Mon, Jul 14, 2003 at 12:58:24PM +0200, Fredrik Tolf wrote:
> > > > > If the input layer userspace interface code has been compiled as
> > > > > modules, and you have a ordinary (not hotplug) device, eg. a gameport
> > > > > joystick, can really the hotplug interface be used to load joydev.o
> > > > > when /dev/input/js0 is opened?
> > > >
> > > > No, you want to load the joydev.o driver when you plug in the gameport
> > > > joystick. Which will be before you open the /dev node.
> > >
> > > Not necessarily. When the joystick is plugged in, you want to load the
> > > hardware driver modules. There's really no need for the userspace
> > > interface until someone requests it. At least that's the way I see it.
> > > And in any case, even if you do want to load joydev.o when the joystick
> > > is plugged in, I don't see how that could be done on-demand when the
> > > joystick port isn't hotplug compatible, such as is the case with
> > > gameports, right?
> >
> > True, but then if you try to open the port, you will only get the base
> > joydev.o module loaded, not the gameport driver, which is what you
> > _really_ want to have loaded, right?
>
> Huh? Look at it this way: As it is now, if you have a non-hotplug joystick,
> then you can't load anything automatically, not even the hardware drivers.

Correct.

> If you have demand-loading in the input layer, on the other hand, you can have
> "above" directives in modules.conf (or "install" directives in modprobe.conf)
> to pull in the hardware drivers along with joydev.

Where do you get the hardware driver coming along with joydev?

I must be missing something here...

> So not only does demand-loading permit hardware drivers and userspace
> interfaces independently of each other, it also provides for loading
> hardware drivers on demand for non-hotplug hardware.

That would be very nice, but I still don't see how your patch enables
this to happen.

thanks,

greg k-h

2003-07-16 21:54:52

by Oliver Neukum

[permalink] [raw]
Subject: Re: Input layer demand loading


> > Huh? Look at it this way: As it is now, if you have a non-hotplug joystick,
> > then you can't load anything automatically, not even the hardware drivers.
>
> Correct.
>
> > If you have demand-loading in the input layer, on the other hand, you can have
> > "above" directives in modules.conf (or "install" directives in modprobe.conf)
> > to pull in the hardware drivers along with joydev.
>
> Where do you get the hardware driver coming along with joydev?

By editing /etc/modules.conf

> I must be missing something here...

Yes, there are non hotpluggable devices out there.
It is easy to forget :-)

Regards
Oliver

2003-07-16 22:03:43

by Greg KH

[permalink] [raw]
Subject: Re: Input layer demand loading

On Thu, Jul 17, 2003 at 12:07:04AM +0200, Oliver Neukum wrote:
>
> > > Huh? Look at it this way: As it is now, if you have a non-hotplug joystick,
> > > then you can't load anything automatically, not even the hardware drivers.
> >
> > Correct.
> >
> > > If you have demand-loading in the input layer, on the other hand, you can have
> > > "above" directives in modules.conf (or "install" directives in modprobe.conf)
> > > to pull in the hardware drivers along with joydev.
> >
> > Where do you get the hardware driver coming along with joydev?
>
> By editing /etc/modules.conf

Ahh. Hm, so you have to manually add each hardware driver to the file
to load when you want to open the joystick driver? How 1990's :)

> > I must be missing something here...
>
> Yes, there are non hotpluggable devices out there.
> It is easy to forget :-)

Heh, no, I remember. I just forgot the modutils trick to do this,
sorry.

greg k-h

2003-07-16 22:10:15

by Fredrik Tolf

[permalink] [raw]
Subject: Re: Input layer demand loading

On Wednesday 16 July 2003 23.54, you wrote:
> On Wed, Jul 16, 2003 at 11:23:31PM +0200, Fredrik Tolf wrote:
> > On Wednesday 16 July 2003 18.26, Greg KH wrote:
> > > On Wed, Jul 16, 2003 at 02:57:42PM +0200, Fredrik Tolf wrote:
> > > > On Wednesday 16 July 2003 06.29, Greg KH wrote:
> > > > > On Mon, Jul 14, 2003 at 12:58:24PM +0200, Fredrik Tolf wrote:
> > > > > > If the input layer userspace interface code has been compiled as
> > > > > > modules, and you have a ordinary (not hotplug) device, eg. a
> > > > > > gameport joystick, can really the hotplug interface be used to
> > > > > > load joydev.o when /dev/input/js0 is opened?
> > > > >
> > > > > No, you want to load the joydev.o driver when you plug in the
> > > > > gameport joystick. Which will be before you open the /dev node.
> > > >
> > > > Not necessarily. When the joystick is plugged in, you want to load
> > > > the hardware driver modules. There's really no need for the userspace
> > > > interface until someone requests it. At least that's the way I see
> > > > it. And in any case, even if you do want to load joydev.o when the
> > > > joystick is plugged in, I don't see how that could be done on-demand
> > > > when the joystick port isn't hotplug compatible, such as is the case
> > > > with gameports, right?
> > >
> > > True, but then if you try to open the port, you will only get the base
> > > joydev.o module loaded, not the gameport driver, which is what you
> > > _really_ want to have loaded, right?
> >
> > If you have demand-loading in the input layer, on the other hand, you can
> > have "above" directives in modules.conf (or "install" directives in
> > modprobe.conf) to pull in the hardware drivers along with joydev.
>
> Where do you get the hardware driver coming along with joydev?
>
> I must be missing something here...
>
> > So not only does demand-loading permit hardware drivers and userspace
> > interfaces independently of each other, it also provides for loading
> > hardware drivers on demand for non-hotplug hardware.
>
> That would be very nice, but I still don't see how your patch enables
> this to happen.

It could be done by adding this to your modules.conf (or the modprobe.conf
equivalent if you're using module-init-tools):

alias input-dev-0 joydev
above joydev joy_driver

Admittedly, "above" isn't the preferred way to load modules, but I'd say it's
far better than nothing. The gameport framework module will be pulled in with
the joystick driver from the dependency information.

Fredrik Tolf