All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bodo Eggert <7eggert@gmx.de>
To: Jean Delvare <khali@linux-fr.org>
Cc: Bodo Eggert <7eggert@gmx.de>,
	David Hubbard <david.c.hubbard@gmail.com>,
	Matthew Garrett <mjg59@srcf.ucam.org>,
	Pavel Machek <pavel@ucw.cz>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	lm-sensors@lm-sensors.org, linux-acpi@vger.kernel.org,
	Chuck Ebbert <cebbert@redhat.com>,
	Rudolf@atrpms.net
Subject: Re: [lm-sensors] Could the k8temp driver be interfering with ACPI?
Date: Tue, 6 Mar 2007 21:40:19 +0100 (CET)	[thread overview]
Message-ID: <Pine.LNX.4.58.0703061804360.2988@be1.lrz> (raw)
In-Reply-To: <20070306161935.025a3ec1.khali@linux-fr.org>

On Tue, 6 Mar 2007, Jean Delvare wrote:
> On Mon, 05 Mar 2007 14:56:44 +0100, Bodo Eggert wrote:

> > 2) make ACPI take this lock whenever it touches ports not allocated by itself
> >    and release it on function return.
> 
> This is costly.

TANSTAAFL. You'll need to take some lock, and if you want port emulation 
or per-device-mutex, you'll have to pay the price.

> > 3) Make ACPI callback the allocating device if it touches allocated ranges,
> >    and on function return.
> 
> By callback, do you mean port forwarding as Rudolf Marek did, or more
> simple "stop touching the device" and "you can touch the device again"
> sort of signals? If the latter, this is no different from a mutex.

It may be the described port emulation callback (which is very nice and
possibly desired for some devices), but if you add an "I am done tampering
with your hardware" callback, the driver can also implement the mutex.

Some drivers will not understand all possible access patterns, they may 
try to emulate first, and if they fail, fall back to taking the mutex and 
passing the raw port access.

> > 1 + 2 will replace allocating single ports and freeing them again (so ACPI won't
> > prevent e.g. the display driver from loading just because it turned on the
> > backlight) while preventing races with newly allocated ranges, and 3 allows
> > coexistence with other drivers.
> 
> What benefit do you see compared to a lock taken by both AML and the
> hardware monitoring drivers?

1) I asume port allocations or ACPI foreign port acces to be rare, so
   there would be little impact on (un)registering hardware. Off cause
   there are some long ACPI calls (like reading the battery?), in these
   cases it might be beneficial to release the global allocation lock
   after gaining exclusive access to the driver's port range. (This can
   only be done if the device driver is loaded.)

2) If there is a global lock for accessing ACPI-tampered hardware, each
   driver that *might* conflict with ACPI _must_ take it on each access.  
   This would seialize unrelated sensor busses, IDE, graphics ...  (AFAI
   can imagine.)  A callback allows using a per-(device|bus)-mutex instead.

> Care to submit a sample implementation?

I think somebody experienced with the internals should do this.

Rudolph's implementation is close enough to imagine what would be done,
the changes would be:

- Add a "done" call to resource_ops

in ACPI:
- Check for own region first and do raw access there
- get the lock before __request_region
- s/__request/__check/

in driver:
- If emulation fails, get the local lock and switch to passthrough mode
- if in passthrough mode and done is called, release the lock
-- 
Those who hesitate under fire usually do not end up KIA or WIA. 

WARNING: multiple messages have this Message-ID (diff)
From: 7eggert@gmx.de (Bodo Eggert)
To: Jean Delvare <khali@linux-fr.org>
Cc: Bodo Eggert <7eggert@gmx.de>,
	David Hubbard <david.c.hubbard@gmail.com>,
	Matthew Garrett <mjg59@srcf.ucam.org>,
	Pavel Machek <pavel@ucw.cz>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	lm-sensors@lm-sensors.org, linux-acpi@vger.kernel.org,
	Chuck Ebbert <cebbert@redhat.com>,
	Rudolf@atrpms.net
Subject: [lm-sensors] Could the k8temp driver be interfering with ACPI?
Date: Tue, 06 Mar 2007 20:40:19 +0000	[thread overview]
Message-ID: <Pine.LNX.4.58.0703061804360.2988@be1.lrz> (raw)
In-Reply-To: <20070306161935.025a3ec1.khali@linux-fr.org>

On Tue, 6 Mar 2007, Jean Delvare wrote:
> On Mon, 05 Mar 2007 14:56:44 +0100, Bodo Eggert wrote:

> > 2) make ACPI take this lock whenever it touches ports not allocated by itself
> >    and release it on function return.
> 
> This is costly.

TANSTAAFL. You'll need to take some lock, and if you want port emulation 
or per-device-mutex, you'll have to pay the price.

> > 3) Make ACPI callback the allocating device if it touches allocated ranges,
> >    and on function return.
> 
> By callback, do you mean port forwarding as Rudolf Marek did, or more
> simple "stop touching the device" and "you can touch the device again"
> sort of signals? If the latter, this is no different from a mutex.

It may be the described port emulation callback (which is very nice and
possibly desired for some devices), but if you add an "I am done tampering
with your hardware" callback, the driver can also implement the mutex.

Some drivers will not understand all possible access patterns, they may 
try to emulate first, and if they fail, fall back to taking the mutex and 
passing the raw port access.

> > 1 + 2 will replace allocating single ports and freeing them again (so ACPI won't
> > prevent e.g. the display driver from loading just because it turned on the
> > backlight) while preventing races with newly allocated ranges, and 3 allows
> > coexistence with other drivers.
> 
> What benefit do you see compared to a lock taken by both AML and the
> hardware monitoring drivers?

1) I asume port allocations or ACPI foreign port acces to be rare, so
   there would be little impact on (un)registering hardware. Off cause
   there are some long ACPI calls (like reading the battery?), in these
   cases it might be beneficial to release the global allocation lock
   after gaining exclusive access to the driver's port range. (This can
   only be done if the device driver is loaded.)

2) If there is a global lock for accessing ACPI-tampered hardware, each
   driver that *might* conflict with ACPI _must_ take it on each access.  
   This would seialize unrelated sensor busses, IDE, graphics ...  (AFAI
   can imagine.)  A callback allows using a per-(device|bus)-mutex instead.

> Care to submit a sample implementation?

I think somebody experienced with the internals should do this.

Rudolph's implementation is close enough to imagine what would be done,
the changes would be:

- Add a "done" call to resource_ops

in ACPI:
- Check for own region first and do raw access there
- get the lock before __request_region
- s/__request/__check/

in driver:
- If emulation fails, get the local lock and switch to passthrough mode
- if in passthrough mode and done is called, release the lock
-- 
Those who hesitate under fire usually do not end up KIA or WIA. 


  reply	other threads:[~2007-03-06 20:40 UTC|newest]

Thread overview: 203+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <7PvLN-1cj-3@gated-at.bofh.it>
     [not found] ` <7TEGV-6Jy-39@gated-at.bofh.it>
     [not found]   ` <7TUBX-6TN-5@gated-at.bofh.it>
     [not found]     ` <7UeqX-4QO-17@gated-at.bofh.it>
     [not found]       ` <7UeqZ-4QO-27@gated-at.bofh.it>
     [not found]         ` <7UgM5-np-1@gated-at.bofh.it>
     [not found]           ` <7UgM8-np-11@gated-at.bofh.it>
     [not found]             ` <7UnaS-2xP-9@gated-at.bofh.it>
     [not found]               ` <7UnkC-2JB-9@gated-at.bofh.it>
     [not found]                 ` <7Uzcd-49u-3@gated-at.bofh.it>
     [not found]                   ` <7UEEN-4xi-3@gated-at.bofh.it>
2007-03-05 13:56                     ` [lm-sensors] Could the k8temp driver be interfering with ACPI? Bodo Eggert
2007-03-05 13:56                       ` Bodo Eggert
2007-03-05 13:56                       ` Bodo Eggert
2007-03-06 15:19                       ` Jean Delvare
2007-03-06 15:19                         ` Jean Delvare
2007-03-06 20:40                         ` Bodo Eggert [this message]
2007-03-06 20:40                           ` Bodo Eggert
2007-03-07  9:17                           ` Jean Delvare
2007-03-07  9:17                             ` Jean Delvare
2007-03-07  9:36                             ` Pavel Machek
2007-03-07  9:36                               ` Pavel Machek
2007-03-07 17:09                             ` Bodo Eggert
2007-03-07 17:09                               ` Bodo Eggert
2007-02-16 17:31 Chuck Ebbert
2007-02-16 17:57 ` Len Brown
2007-02-16 18:14   ` Chuck Ebbert
2007-02-16 19:59 ` Andi Kleen
2007-02-16 19:31   ` Chuck Ebbert
2007-02-18 17:32     ` Jean Delvare
2007-02-18 17:32       ` Jean Delvare
2007-02-18 23:22       ` Andi Kleen
2007-02-18 23:22         ` Andi Kleen
2007-02-17 10:49 ` Rudolf Marek
2007-02-17 10:49   ` Rudolf Marek
2007-02-17 18:14   ` Chuck Ebbert
2007-02-17 18:14     ` Chuck Ebbert
2007-02-18 17:38     ` Jean Delvare
2007-02-18 17:38       ` Jean Delvare
2007-02-20 15:18       ` Matthew Garrett
2007-02-20 15:18         ` Matthew Garrett
2007-02-20 15:33         ` Luca Tettamanti
2007-02-20 15:33           ` Luca Tettamanti
2007-02-21 14:59           ` Jean Delvare
2007-02-21 14:59             ` Jean Delvare
2007-02-21 15:07         ` Jean Delvare
2007-02-21 15:07           ` Jean Delvare
2007-02-28 21:38       ` Pavel Machek
2007-02-28 21:38         ` Pavel Machek
2007-03-01 14:26         ` Jean Delvare
2007-03-01 14:26           ` Jean Delvare
2007-03-01 17:48           ` Dave Jones
2007-03-01 17:48             ` Dave Jones
2007-03-02 11:27             ` Jean Delvare
2007-03-02 11:27               ` Jean Delvare
2007-03-02 11:31               ` Pavel Machek
2007-03-02 11:31                 ` Pavel Machek
2007-03-02 13:37                 ` Jean Delvare
2007-03-02 13:37                   ` Jean Delvare
2007-03-02 13:47                   ` Henrique de Moraes Holschuh
2007-03-02 13:47                     ` Henrique de Moraes Holschuh
2007-03-02 13:57                   ` Pavel Machek
2007-03-02 13:57                     ` Pavel Machek
2007-03-03  6:44                     ` Jean Delvare
2007-03-03  6:44                       ` Jean Delvare
2007-03-02 11:40           ` Pavel Machek
2007-03-02 11:40             ` Pavel Machek
2007-03-02 11:47             ` Matthew Garrett
2007-03-02 11:47               ` Matthew Garrett
2007-03-02 13:58               ` Pavel Machek
2007-03-02 13:58                 ` Pavel Machek
2007-03-02 21:00                 ` Jean Delvare
2007-03-02 21:00                   ` Jean Delvare
2007-03-02 21:22                   ` Henrique de Moraes Holschuh
2007-03-02 21:22                     ` Henrique de Moraes Holschuh
2007-04-01 15:39                   ` Pavel Machek
2007-04-01 15:39                     ` Pavel Machek
2007-04-02 15:48                     ` Jean Delvare
2007-04-02 19:22                       ` Dave Jones
2007-04-03  5:49                         ` Jean Delvare
2007-04-02 20:55                       ` Moore, Robert
2007-04-03  7:21                         ` Jean Delvare
2007-04-04 21:35                           ` Moore, Robert
2007-03-02 14:10               ` Jean Delvare
2007-03-02 14:10                 ` Jean Delvare
2007-03-02 14:18                 ` Matthew Garrett
2007-03-02 14:18                   ` Matthew Garrett
2007-03-02 21:04                   ` Jean Delvare
2007-03-02 21:04                     ` Jean Delvare
2007-03-02 21:12                     ` Matthew Garrett
2007-03-02 21:12                       ` Matthew Garrett
2007-03-03  9:53                       ` Jean Delvare
2007-03-03  9:53                         ` Jean Delvare
2007-03-03 15:47                         ` David Hubbard
2007-03-03 15:47                           ` David Hubbard
2007-03-03 15:50                           ` Matthew Garrett
2007-03-03 15:50                             ` Matthew Garrett
2007-03-03 17:08                             ` Rudolf Marek
2007-03-03 17:08                               ` Rudolf Marek
2007-03-04 17:29                               ` Rudolf Marek
2007-03-04 17:29                                 ` Rudolf Marek
2007-03-05 21:16                                 ` Jean Delvare
2007-03-05 21:16                                   ` Jean Delvare
2007-03-05 21:35                                   ` David Hubbard
2007-03-05 21:35                                     ` David Hubbard
2007-03-06 15:10                                     ` Jean Delvare
2007-03-06 15:10                                       ` Jean Delvare
2007-03-04 10:54                           ` Jean Delvare
2007-03-04 10:54                             ` Jean Delvare
2007-03-05 22:25                         ` Pavel Machek
2007-03-05 22:25                           ` Pavel Machek
2007-03-06  7:55                           ` Benny Amorsen
2007-03-06  7:55                             ` Benny Amorsen
2007-03-06 15:26                           ` Jean Delvare
2007-03-06 15:26                             ` Jean Delvare
2007-03-06 20:07                             ` Stefan Monnier
2007-03-06 20:07                               ` Stefan Monnier
2007-03-06 20:07                               ` Stefan Monnier
2007-03-06 21:20                             ` Pavel Machek
2007-03-06 21:20                               ` Pavel Machek
2007-03-06 21:25                               ` Moore, Robert
2007-03-06 21:25                                 ` Moore, Robert
2007-03-06 21:25                                 ` Moore, Robert
2007-03-18 19:36                         ` richardvoigt
2007-03-18 19:36                           ` richardvoigt at gmail.com
2007-03-19  7:08                           ` Jean Delvare
2007-03-19  7:08                             ` Jean Delvare
2007-03-02 22:07                     ` Moore, Robert
2007-03-02 22:07                       ` Moore, Robert
2007-03-02 22:07                       ` Moore, Robert
2007-03-09  7:18                       ` Pavel Machek
2007-03-09  7:18                         ` Pavel Machek
2007-03-09 10:24                         ` Jean Delvare
2007-03-09 10:24                           ` Jean Delvare
2007-03-09 10:39                           ` Alexey Starikovskiy
2007-03-09 10:39                             ` Alexey Starikovskiy
2007-03-09 11:21                             ` Pavel Machek
2007-03-09 11:21                               ` Pavel Machek
2007-03-09 17:23                             ` Jean Delvare
2007-03-09 17:23                               ` Jean Delvare
2007-03-09 17:35                               ` Alexey Starikovskiy
2007-03-09 17:35                                 ` Alexey Starikovskiy
2007-03-09 21:03                                 ` Moore, Robert
2007-03-09 21:03                                   ` Moore, Robert
2007-03-09 21:03                                   ` Moore, Robert
2007-03-09 20:56                         ` Moore, Robert
2007-03-09 20:56                           ` Moore, Robert
2007-03-09 20:56                           ` Moore, Robert
2007-03-02 14:22                 ` Pavel Machek
2007-03-02 14:22                   ` Pavel Machek
2007-03-02 14:03             ` Jean Delvare
2007-03-02 14:03               ` Jean Delvare
2007-03-02 14:24               ` Pavel Machek
2007-03-02 14:24                 ` Pavel Machek
2007-03-02 14:57               ` Matthew Garrett
2007-03-02 14:57                 ` Matthew Garrett
2007-03-02 21:41                 ` Jean Delvare
2007-03-02 21:41                   ` Jean Delvare
2007-03-02 21:46                   ` Matthew Garrett
2007-03-02 21:46                     ` Matthew Garrett
2007-03-06 21:28                     ` Jean Delvare
2007-03-06 21:28                       ` Jean Delvare
2007-04-13 18:18               ` Bjorn Helgaas
2007-04-13 18:18                 ` Bjorn Helgaas
2007-04-13 20:07                 ` Pavel Machek
2007-04-13 20:07                   ` Pavel Machek
2007-04-13 20:59                   ` Bjorn Helgaas
2007-04-13 20:59                     ` Bjorn Helgaas
2007-04-15  9:41                     ` Jean Delvare
2007-04-15  9:41                       ` Jean Delvare
2007-04-15 20:31                       ` Bjorn Helgaas
2007-04-15 20:31                         ` Bjorn Helgaas
2007-04-15 20:59                         ` Luca Tettamanti
2007-04-15 20:59                           ` Luca Tettamanti
2007-04-16  0:57                           ` Bjorn Helgaas
2007-04-16  0:57                             ` Bjorn Helgaas
2007-04-16 21:14                             ` Luca Tettamanti
2007-04-16 21:14                               ` Luca Tettamanti
2007-04-16 22:28                               ` Bjorn Helgaas
2007-04-16 22:28                                 ` Bjorn Helgaas
2007-04-17 23:50                                 ` Luca Tettamanti
2007-04-17 23:50                                   ` Luca Tettamanti
2007-04-22 16:55                                   ` Luca Tettamanti
2007-04-22 16:55                                     ` Luca Tettamanti
2007-04-17 10:03                               ` Jean Delvare
2007-04-17 10:03                                 ` Jean Delvare
2007-02-18 22:43     ` Rudolf Marek
2007-02-18 22:43       ` Rudolf Marek
2007-02-20 15:08       ` Chuck Ebbert
2007-02-20 15:08         ` Chuck Ebbert
2007-02-20 19:11         ` Dave Jones
2007-02-20 19:11           ` Dave Jones
2007-02-21 16:17           ` Jean Delvare
2007-02-21 16:17             ` Jean Delvare
2007-02-21 17:37             ` Dave Jones
2007-02-21 17:37               ` Dave Jones
2007-02-21 20:19               ` Dave Jones
2007-02-21 20:19                 ` Dave Jones
2007-02-22 16:37                 ` Jean Delvare
2007-02-22 16:37                   ` Jean Delvare
2007-02-23  7:13                   ` Hans de Goede
2007-02-23  7:13                     ` Hans de Goede
2007-02-23  7:47                     ` Jean Delvare
2007-02-23  7:47                       ` Jean Delvare
2007-02-21 14:54         ` Jean Delvare
2007-02-21 14:54           ` Jean Delvare
2007-02-21 16:03           ` Chuck Ebbert
2007-02-21 16:03             ` Chuck Ebbert
2007-02-21 16:22             ` Jean Delvare
2007-02-21 16:22               ` Jean Delvare
2007-02-23  8:08 ` Hans de Goede
2007-02-26 17:24 ` Jean Delvare
2007-02-26 19:03 ` Hans de Goede
2007-02-27  8:45 ` Jean Delvare

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=Pine.LNX.4.58.0703061804360.2988@be1.lrz \
    --to=7eggert@gmx.de \
    --cc=Rudolf@atrpms.net \
    --cc=cebbert@redhat.com \
    --cc=david.c.hubbard@gmail.com \
    --cc=khali@linux-fr.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lm-sensors@lm-sensors.org \
    --cc=mjg59@srcf.ucam.org \
    --cc=pavel@ucw.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.