linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Elias Oltmanns <eo@nebensachen.de>
To: Tejun Heo <tj@kernel.org>
Cc: Shem Multinymous <multinymous@gmail.com>,
	Thomas Renninger <trenn@suse.de>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	IDE/ATA development list <linux-ide@vger.kernel.org>
Subject: Re: Laptop shock detection and harddisk protection
Date: Thu, 11 Sep 2008 22:00:37 +0200	[thread overview]
Message-ID: <877i9ipi56.fsf@denkblock.local> (raw)
In-Reply-To: 48C948A6.3080404@kernel.org

Tejun Heo <tj@kernel.org> wrote:
> Hello, Shem Multinymous.
>
> Shem Multinymous wrote:
[...]
>>> 2. If we're gonna unify interface, how much can we unify the backend?
>>>   Some devices are based on polling, others interrupt.  For polling,
>>>   is it better to delegate the whole polling to userland or is it
>>>   better to do some of it in kernel (tp_smapi seems to be doing
>>>   this)?
>> 
>> The ThinkPad accelerometer needs to be polled at very regular
>> intervals (max jitter on the order of 10ms), which sounds like a job
>> for the kernel.
>
> Yes, I agree.
>
>> This is because in ThinkPads we actually have a 4-level pile:
>> [hdapsd userspace] -> [hdaps kernel] -> [embedded controller] ->
>> [accelerometer A2D]
>> What the kernel polls is actually is the H8S embedded controller (EC)
>> chip, which in turn does its own polling of the accelerometer A2D.
>> Now, the EC has a tiny buffer and strange buffering semantics, and it
>> has its own internal clock, so the software->EC polling should be very
>> regular to minmize EC buffer overflows/underruns.
>
> So, I think the whole polling should be implemented inside the kernel
> and the kernel should notify userland when new data is available,
> which is about what the current joystick implementation does and can
> be achieved using sysfs_notify_event().

Short of a satisfying proposition regarding the questions raised, I just
want to add two things that would be nice to solve in the future one way
or another and should perhaps be taken into consideration from the
beginning:

1. Disable polling completely when it isn't required: once the hd has
   spun down, there is no need to keep polling the sensors at all. Only
   when the first request requiring the hd to spin up arrives, the
   kernel needs to hold back for a short while to gather enough data
   from the sensors, so shock protection is up and running again.
2. Make shock protection interact nicely with suspend operations:
   currently, we are out of luck if anything should happen after
   processes have been frozen. This is particularly unfortunatel in the
   case of s2disk.

As far as 1. is concerned, I'm not quite sure yet how to determine when
the disk has spun down since this may have happened according to vendor
specific timing rules. Once we have established that the disk is
sleeping safe and sound, sensor drivers can be notified to stop polling
the hardware and possibly notify clients (like hdapsd) about that fact.

Something along the lines of the disk_shock module approach suggested by
Bart in [1] sounds promising, but it still needs some careful thinking
when designing the interfaces to all components involved. As for the
suspend problem, we could either put some simplified logic into
disk_shock so it can take over once hdapsd has been frozen, or we can
find a way to keep hdapsd unfrozen until the hd has been put to sleep.
Of course, we'd have to think about resume as well, although it'll be
impossible to protect right from the start in the s2disk case.

Regards,

Elias

[1] http://marc.info/?l=linux-kernel&m=122021163324843&w=2

  parent reply	other threads:[~2008-09-11 20:00 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-10 16:59 Laptop shock detection and harddisk protection Tejun Heo
2008-09-10 19:43 ` Renato S. Yamane
2008-09-11 10:26 ` Austin Zhang
2008-09-11 11:18   ` Tejun Heo
2008-09-11 16:08 ` Shem Multinymous
2008-09-11 16:34   ` Tejun Heo
2008-08-17 19:48     ` Pavel Machek
2008-09-11 20:00     ` Elias Oltmanns [this message]
2008-08-17 19:51       ` Pavel Machek
2008-09-17 15:21         ` Elias Oltmanns
2008-09-17 19:36           ` Shem Multinymous
2008-09-11 20:25     ` Shem Multinymous
2008-08-17 19:30       ` Pavel Machek
2008-09-11 23:35       ` Tejun Heo
2008-09-12 16:59         ` Greg KH
2008-08-17 19:45           ` Pavel Machek
2008-09-17 18:04             ` Greg KH
2008-09-18 11:18               ` Pavel Machek
2008-09-19  9:03                 ` Thomas Renninger
2008-09-24  5:14                   ` Greg KH
2008-10-07 20:40                     ` Pavel Machek
2008-10-07 21:19                       ` Greg KH
2008-10-07 21:40                         ` Pavel Machek
2008-10-07 22:03                           ` Greg KH
2008-10-07 23:03                             ` Pavel Machek
2008-10-07 22:55                         ` Shem Multinymous
2008-09-15  8:29           ` Tejun Heo
2008-09-15 18:09             ` Shem Multinymous
2008-09-15 20:10               ` Tejun Heo
2008-09-14  4:41       ` Jeremy Fitzhardinge
2008-09-11 23:36     ` Henrique de Moraes Holschuh
     [not found] <baBmH-48R-17@gated-at.bofh.it>
2008-09-12 13:28 ` Bodo Eggert

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=877i9ipi56.fsf@denkblock.local \
    --to=eo@nebensachen.de \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=multinymous@gmail.com \
    --cc=tj@kernel.org \
    --cc=trenn@suse.de \
    /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;
as well as URLs for NNTP newsgroup(s).