public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Vojtech Pavlik <vojtech@suse.cz>
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 12:52:14 -0500	[thread overview]
Message-ID: <d120d50005011309526326afef@mail.gmail.com> (raw)
In-Reply-To: <20050113153644.GA18939@ucw.cz>

On Thu, 13 Jan 2005 16:36:44 +0100, Vojtech Pavlik <vojtech@suse.cz> wrote:
> On Wed, Dec 29, 2004 at 02:17:36AM -0500, Dmitry Torokhov wrote:
> >
> > 01-i8042-panicblink-cleanup.patch
> >       Move panicblink parameter definition together with the rest of i8042
> >       module parameters, add description and entry in kernel-parameters.txt
> 
> I think I prefer the DELAY definition to be outside the function. Other
> than that the patch is OK.
 
Will do.

> > 02-serio-start-stop.patch
> >       Add serio start() and stop() methods to serio structure that are
> >       called when serio port is about to be fully registered and when
> >       serio port is about to be unregistered. These methods are useful
> >       for drivers that share interrupt among several serio ports. In this
> >       case interrupt can not be enabled/disabled in open/close methods
> >       and it is very hard to determine if interrupt shoudl be ignored or
> >       passed on.
> 
> > 03-i8042-use-start-stop.patch
> >       Make use of new serio start/stop methods to safely activate and
> >       deactivate ports. Also unify as much as possible port handling
> >       between KBD, AUX and MUX ports. Rename i8042_values into i8042_port.
> 
> Would we need this at all if we made the port registration completely
> asynchronous, only binding devices to ports _after_ the port is
> completely registered?
> 
> I'm rather reluctant to add even more callbacks.
> 

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.

> > 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.

> 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 lis is mostr likely empty anyway.

> 
> Already merged.
> 
> > 09-i8042-sysfs-permissions.patch
> >       Fix braindamage in sysfs permissions for 'debug' option.
> 
> OK.

This one has already been merged as well I think.

> 
> > 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 ;)
 
> 
> > 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.

-- 
Dmitry

  reply	other threads:[~2005-01-13 17:55 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 [this message]
2005-01-13 19:25     ` Vojtech Pavlik
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=d120d50005011309526326afef@mail.gmail.com \
    --to=dmitry.torokhov@gmail.com \
    --cc=dtor_core@ameritech.net \
    --cc=linux-input@atrey.karlin.mff.cuni.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=vojtech@suse.cz \
    /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