From: Vojtech Pavlik <vojtech@suse.cz>
To: dtor_core@ameritech.net
Cc: linux-input@atrey.karlin.mff.cuni.cz,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 0/16] New set of input patches
Date: Thu, 13 Jan 2005 20:25:25 +0100 [thread overview]
Message-ID: <20050113192525.GA4680@ucw.cz> (raw)
In-Reply-To: <d120d50005011309526326afef@mail.gmail.com>
On Thu, Jan 13, 2005 at 12:52:14PM -0500, Dmitry Torokhov wrote:
> The problem is not with binding devices, it is with mostly with
> sharing the same IRQ between different ports.
>
> Look at the MUX case, you have 4 ports all sharing the same IRQ. At
> startup i8042 enables all on-chip ports and registers them with
> serio_register_port(). When first serio driver class i8042_open it
> installs IRQ handler. All 4 ports are enabled now (because we want to
> do hot-plug) but, especially with async. serio registration, only the
> first is fully registered with serio subsystem. If data was to come
> from any other port the shared IRQ handler will call serio_reconnect
> on half-alive port. The similar issues happen when you try to
> unregister port.
>
> With start/stop methods allow serop core signal driver that the port
> is fully registered and now is safe to use. If IRQ is not shared
> between ports one can safely register/unregister handler in open/close
> methods (at the expense of hotplug device support) but with shared IRQ
> you need additional callbacks.
Yes, this can result in calling serio_reconnect on a port that's not
registered yet. But I believe we don't need a callback for this, just a
flag in the serio struct that will say "live", be set during
registration, and until that time all serio_interrupt() calls would be
ignored?
This is transparent to the port drivers, and doesn't change any
interfaces. What do you think?
> > > 04-serio-suppress-dup-events.patch
> > > Do not submit serio event into event queue if there is already one
> > > of the same type for the same port in front of it. Also look for
> > > duplicat events once event is processed. This should help with
> > > disconnected ports generating alot of data and consuming memory for
> > > events when kseriod gets behind and prevents constant rescans.
> > > This also allows to remove special check for 0xaa in reconnect path
> > > of interrupt handler known to cause problems with Toshibas keyboards.
> >
> > Ok. Since we'll be usually scanning an empty list, this shouldn't add
> > any overhead.
>
> Plus serio events are rare so unless there are "runaway" serio interrupt this
> patch tries to procet from there shoudl not be pretty much any overhead.
Indeed.
> > Btw, why do we need _both_ to scan for duplicate events on event
> > completion and check at event insert time? One should be enough - if we
> > always check, then we cannot have duplicate events and if we always are
> > able to deal with them, we don't have to care ...
>
> A duplicate event can be queued while kseriod was processing current event,
> checking for a dupe is cheaper then doing duplicate work we'd just done and
> the list is most likely empty anyway.
Yes. So I'd probably drop the check when we're inserting the event?
> > > 09-i8042-sysfs-permissions.patch
> > > Fix braindamage in sysfs permissions for 'debug' option.
> >
> > OK.
>
> This one has already been merged as well I think.
Probably yes.
> > > 14-serio-id-match.patch
> > > Replace serio's type field with serio_id structure and
> > > add ids table to serio drivers. This will allow splitting
> > > initial matching and probing routines for better sysfs
> > > integration.
> >
> > OK. Maybe we should add a new SPIOCSTYPE ioctl to pass the structure
> > directly.
>
> I am not sure it is needed ATM and I am a bit fuzzy on 32/64 bit ioctl
> issues so I'll leave it alone for now ;)
OK.
> > > 15-serio-bus-cleanup.patch
> > > Make serio implementation more in line with standard
> > > driver model implementations by removing explicit device
> > > and driver list manipulations and introducing bus_match
> > > function. serio_register_port is always asynchronous to
> > > allow freely registering child ports. When deregistering
> > > serio core still takes care of destroying children ports
> > > first.
> >
> > OK. I suppose the synchronous unregister variant is needed for module
> > unload? I suppose refcounting would be enough there ...
>
> I don't see how. Kobject refcounting protects data structures but not
> code and I can't bump up module's reference count in module_exit
> function to delay its removal and we do not want to take module's
> reference for every registered port otherwise unload will not be
> possible. That's why synchronous removal method is needed.
I think it could be done by marking the port dead, but still leaving it
there when the module exits, but it's probably not worth it.
--
Vojtech Pavlik
SuSE Labs, SuSE CR
next prev parent reply other threads:[~2005-01-13 19:37 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-29 7:17 [PATCH 0/16] New set of input patches Dmitry Torokhov
2004-12-29 7:19 ` [PATCH 1/16] i8042 panicblink cleanup Dmitry Torokhov
2004-12-29 7:20 ` [PATCH 2/16] Add serio start and stop methods Dmitry Torokhov
2004-12-29 7:20 ` [PATCH 3/16] i8042: Make use of new " Dmitry Torokhov
2004-12-29 7:21 ` [PATCH 4/16] Suppress duplicate events in serio core Dmitry Torokhov
2004-12-29 7:22 ` [PATCH 5/16] evdev: return -EINVAL if read buffer is too small Dmitry Torokhov
2004-12-29 7:23 ` [PATCH 6/16] Propery set up name for PS/2 Logitech mice Dmitry Torokhov
2004-12-29 7:24 ` [PATCH 7/16] Limit Synaptics rate on Toshiba Satellites Dmitry Torokhov
2004-12-29 7:25 ` [PATCH 8/16] Allow setkeycodes work again Dmitry Torokhov
2004-12-29 7:26 ` [PATCH 9/16] i8042: fix sysfs permissiions for 'debug' parameter Dmitry Torokhov
2004-12-29 7:27 ` [PATCH 10/16] Fix building twidjoy module Dmitry Torokhov
2004-12-29 7:28 ` [PATCH 11/16] Use msecs_to_jiffies in input core Dmitry Torokhov
2004-12-29 7:28 ` [PATCH 12/16] Use msecs_to_jiffies in atkbd Dmitry Torokhov
2004-12-29 7:29 ` [PATCH 13/16] Introduce serio_get/set_drvdata helpers Dmitry Torokhov
2004-12-29 7:31 ` [PATCH 14/16] Introduce serio_id to match ports and drivers Dmitry Torokhov
2004-12-29 7:32 ` [PATCH 15/16] serio bus implementation cleanup Dmitry Torokhov
2004-12-29 7:33 ` [PATCH 16/16] serio connect methods should return error codes Dmitry Torokhov
2005-01-13 15:36 ` [PATCH 0/16] New set of input patches Vojtech Pavlik
2005-01-13 17:52 ` Dmitry Torokhov
2005-01-13 19:25 ` Vojtech Pavlik [this message]
2005-01-13 20:16 ` Dmitry Torokhov
2005-01-27 14:04 ` Dmitry Torokhov
2005-01-27 16:15 ` Vojtech Pavlik
2005-01-27 16:36 ` Vojtech Pavlik
2005-01-27 18:18 ` Dmitry Torokhov
2005-01-27 22:16 ` Vojtech Pavlik
2005-01-30 23:35 ` Dmitry Torokhov
2005-01-31 9:13 ` Vojtech Pavlik
2005-01-28 7:13 ` Dmitry Torokhov
2005-01-28 11:24 ` Vojtech Pavlik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050113192525.GA4680@ucw.cz \
--to=vojtech@suse.cz \
--cc=dtor_core@ameritech.net \
--cc=linux-input@atrey.karlin.mff.cuni.cz \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox