All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <greg@kroah.com>
To: Michael E Brown <Michael_E_Brown@dell.com>
Cc: Kyle Moffett <mrmacman_g4@mac.com>,
	linux-kernel@vger.kernel.org, Douglas_Warzecha@dell.com,
	Matt_Domsch@dell.com
Subject: Re: [RFC][PATCH 2.6.13-rc6] add Dell Systems Management Base Driver (dcdbas) with sysfs support
Date: Tue, 16 Aug 2005 13:37:06 -0700	[thread overview]
Message-ID: <20050816203706.GA27198@kroah.com> (raw)
In-Reply-To: <1124199265.10755.310.camel@soltek.michaels-house.net>

On Tue, Aug 16, 2005 at 08:34:24AM -0500, Michael E Brown wrote:
> On Tue, 2005-08-16 at 01:16 -0700, Greg KH wrote:
> > On Mon, Aug 15, 2005 at 10:10:28PM -0500, Michael E Brown wrote:
> > > To take a concrete example, I suggested to Doug to mention fan status. I
> > > get the feeling that you possibly think that this would be better
> > > integrated into lmsensors, or something like that.
> > 
> > Yes it should.  That way you get the benifit of all userspace
> > applications that already use the lmsensors library without having to be
> > rewritten in order to support your new library.
> 
> Little did I know when I first mentioned it how big of a mistake it
> would be to mention the sensor functions. *sigh*
> 
> The dcdbas driver allows access to all of the Dell SMIs. Sensors are
> only one instance of SMI code (only two functions, in fact, if I am
> reading this spec correctly). The other (roughly) 58 functions have
> nothing to do with sensors. The presence of the dcdbas driver would not
> stop anybody from writing another driver to provide a hwmon interface to
> just the sensors pieces. 

Great, I await your /drivers/hwmon driver submission :)

> This isn't like a PCI device where there can be only one driver.

Oh, like fbdev and drm liking to control the same exact pci device?
Don't use pci as a good example of one driver per device...

> > > That really isn't the case, as lmsensors is really geared towards
> > > bit-banging lm81 (for example) chips to get fan status.
> > 
> > Not true at all.  It is geared toward providing a common userspace
> > interface for all sensor information in the system.  Now if it provides
> > this in a good and easy to use way is another story...
> > 
> > But anyway, there is a standard way to export fan speed and temperature
> > information from the kernel, the hwmon interface (see -mm for examples
> > and documentation, and the i2c stuff in mainline today.)
> 
> I don't really know a bunch about lmsensors. I just downloaded it and
> started poking around. I would have thought, though, that they would
> provide an easy way to provide a userspace library method of extending
> for new sensors. I suppose I was wrong here as I don't see such
> functionality on first glance.

It's there, just ignore all the 2.4 kernel code in their tree.  They
even provide a lot of documentation on how to do this.

> > > In our case, we have a standardized BIOS interface to get this info,
> > > and that standardized method involves SMI and not bit-banging
> > > interfaces. Once this driver is accepted into the kernel, we can go
> > > and add support in the _userspace_ lmsensors libs to poll fan and temp
> > > using this driver.
> > 
> > No, export this data properly through sysfs like all other temperature
> > and sensor data is.  Don't create a new one, no matter how much you
> > would like to keep from changing kernel code in the future for new
> > hardware.
> 
> This driver is not trying to create a new way to do sensor and monitor
> data. This just happens to be a side effect of the main use case.

But it's probably a main use case for a lot of users daily experience,
right?

> > > For example, we already have at least one buggy implementation of this
> > > exact stack in the kernel as the i8k driver. The i8k driver was reverse-
> > > engineered and works, but it does not follow the spec at all, and so is
> > > subject to major breakage if the BIOS changes. With dcdbase + libsmbios,
> > > we can write this _correctly_, and in such a way that it follows the
> > > spec and will not break on BIOS updates.
> > 
> > No, fix the i8k driver as you have access to the specs.  It was there
> > first.
> 
> Ok.

On second thought, after looking at that code, forget it, just do
something new with the proper hwmon interface instead.

> > > What you are asking us to do is just not feasible on many levels. First,
> > > just from the number of functions we would have to implement. We would
> > > have to implement about 60 new sysfs files, with at least 120 separate
> > > functions for read/write.
> > 
> > No problem at all, we can create that with only 2 read/write functions.
> > See the i2c code for details.
> 
> file/line#? I did a quick search and didn't see anything special.

the lm90.c driver as an example.  Look at the usage of
SENSOR_DEVICE_ATTR().

> My main point here is that each SMI call would require it's own kernel-
> space parsing of parameter and return values, as each call has different
> argument passing requirements.

Yes, no objection there.  Just like every other kernel driver.

> > > Each function would have to take into account the specific calling
> > > requirements of that specific function.
> > 
> > Again, no different from any other sensor driver.
> 
> Again, this driver is not a sensor driver. 

You provide sensor data, hence...

> > > Then, we would have to implement all of the bugfixes and
> > > platform-specific workarounds in the kernel for each of those
> > > functions for each Dell platform.
> > 
> > Yup.
> > 
> > > Each time another function is added to BIOS, we would have to go out
> > > and patch everybody's kernel to support the new function.
> > 
> > Yup.  I suggest you complain to the bios people about this horrible way
> > to design hardware then :)
> 
> You have a smiley there, but you know very well that even the most well-
> intentioned BIOS folk make errors in design or implementation from time
> to time. Once it is in BIOS, there really isn't much choice but try to
> work around it. 

I agree, the majority of issues with drivers is working around buggy
hardware and bios implementations.

> > > Besides the fact that this is just not a good design, there just isn't
> > > the manpower to maintain all of these in the kernel along with the
> > > requisite testing for each update, not to mention the lag between when
> > > we have to submit something and when it would show up in a vendor
> > > kernel.
> > 
> > And the lag for your userspace library would not be the same?
> 
> For some odd reason, our customers have less concerns with updating a
> userspace library. 

For a library like this, they should be just as concerned, as you have a
direct hook into their hardware, with the ability to break it just as
easily as a kernel update.

thanks,

greg k-h

  parent reply	other threads:[~2005-08-16 21:29 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-15 22:58 [RFC][PATCH 2.6.13-rc6] add Dell Systems Management Base Driver (dcdbas) with sysfs support Michael_E_Brown
2005-08-16  1:29 ` Kyle Moffett
2005-08-16  3:10   ` Michael E Brown
2005-08-16  5:59     ` Nathan Lutchansky
2005-08-16  8:16     ` Greg KH
2005-08-16 13:34       ` Michael E Brown
2005-08-16 20:31         ` Pavel Machek
2005-08-16 20:37         ` Greg KH [this message]
2005-08-16 23:11           ` Michael_E_Brown
2005-08-16 23:23             ` Greg KH
     [not found] <4277B1B44843BA48B0173B5B0A0DED4352817E@ausx3mps301.aus.amer.dell.com.suse.lists.linux.kernel>
     [not found] ` <DEFA2736-585A-4F84-9262-C3EB53E8E2A0@mac.com.suse.lists.linux.kernel>
     [not found]   ` <1124161828.10755.87.camel@soltek.michaels-house.net.suse.lists.linux.kernel>
     [not found]     ` <20050816081622.GA22625@kroah.com.suse.lists.linux.kernel>
     [not found]       ` <1124199265.10755.310.camel@soltek.michaels-house.net.suse.lists.linux.kernel>
     [not found]         ` <20050816203706.GA27198@kroah.com.suse.lists.linux.kernel>
     [not found]           ` <4277B1B44843BA48B0173B5B0A0DED43528192@ausx3mps301.aus.amer.dell.com.suse.lists.linux.kernel>
2005-08-17  0:23             ` Andi Kleen
2005-08-17  0:41               ` Michael E Brown
  -- strict thread matches above, loose matches on Subject: below --
2005-08-16 23:47 Michael_E_Brown
2005-08-17  5:33 ` Matt Domsch
2005-08-17  7:32   ` Kyle Moffett
2005-08-16  5:19 Michael E Brown
2005-08-16  5:35 ` Chris Wedgwood
2005-08-16  5:50   ` Michael E Brown
2005-08-16  4:58 Michael E Brown
2005-08-16  5:36 ` Valdis.Kletnieks
2005-08-16  6:10   ` Michael E Brown
2005-08-16  6:45     ` Valdis.Kletnieks
2005-08-16 12:15   ` Andrey Panin
2005-08-16  4:09 Michael E Brown
2005-08-16  5:17 ` Valdis.Kletnieks
2005-08-16  5:30   ` Michael E Brown
2005-08-15 20:05 Doug Warzecha
2005-08-15 20:23 ` Kyle Moffett
2005-08-15 23:38   ` Doug Warzecha
2005-08-16  1:44     ` Kyle Moffett
2005-08-16  2:43     ` Valdis.Kletnieks
2005-08-16  4:34   ` Chris Wedgwood
2005-08-16  4:55     ` Kyle Moffett
2005-08-16  5:14       ` Chris Wedgwood
2005-08-16  5:52 ` Greg KH
2005-08-17  0:02   ` Doug Warzecha

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=20050816203706.GA27198@kroah.com \
    --to=greg@kroah.com \
    --cc=Douglas_Warzecha@dell.com \
    --cc=Matt_Domsch@dell.com \
    --cc=Michael_E_Brown@dell.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mrmacman_g4@mac.com \
    /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.