linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Michael K. Edwards" <medwards.linux@gmail.com>
To: "Greg KH" <gregkh@suse.de>
Cc: "Linus Torvalds" <torvalds@osdl.org>,
	"Andrew Morton" <akpm@osdl.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [GIT PATCH] more Driver core patches for 2.6.19
Date: Wed, 13 Dec 2006 13:48:58 -0800	[thread overview]
Message-ID: <f2b55d220612131348q705cd2aey9f9a0cde21a5b316@mail.gmail.com> (raw)
In-Reply-To: <20061213210219.GA9410@suse.de>

On 12/13/06, Greg KH <gregkh@suse.de> wrote:
> On Wed, Dec 13, 2006 at 12:38:05PM -0800, Michael K. Edwards wrote:
> > Seriously, though, please please pretty please do not allow a facility
> > for "going through a simple interface to get accesses to irqs and
> > memory regions" into the mainline kernel, with or without toy ISA
> > examples.
>
> Why?  X does it today :)

Er, I rest my case?  Anyway, the history around X11 is completely
different from the present situation, and there were good arguments at
the time for structuring the problem so that the X server was
relatively kernel-neutral even if it was banging directly on a
framebuffer, and later on 2-D acceleration hardware.  As graphics
chips have become more sophisticated, pure-userspace X11 has become
less tenable.

> > Embedded systems integrators have enough trouble with chip vendors who
> > think that exposing the device registers to userspace constitutes a
> > "driver".
>
> Yes, and because of this, they create binary only drivers today.  Lots
> of them.  All over the place.  Doing crazy stupid crap in kernelspace.

It does not get less crazy and stupid because we open a big hole from
kernelspace to userspace and let them pretend that they have a GPL
"driver" when all of the chip init logic is peeked and poked from the
same closed code in userspace.  Most low-level drivers (the kind that
involve IRQs and registers local to the CPU; USB is different) cannot
be done right from userspace and we shouldn't encourage people to try.

> Then there are people who do irq stuff in userspace but get it wrong.
> I've seen that happen many times in lots of different research papers
> and presentations.

Their problems need not become our problems.

> This interface does it correctly, and it allows those people who for
> some reason feel they do want to keep their logic in non-gpl code, to do
> it.

People who want to keep their logic in non-GPL code do so by providing
binary-only drivers.  That's a sane compromise in certain sectors, and
occasionally results in the eventual opening of the driver (when the
illusion of competitive advantage in closed-ness wears off) in
integrable shape.  A customer with some leverage and technical skill
can negotiate for access to the source code so that he can fix the
bugs that are biting him, rebuild with a toolchain that isn't from the
Dark Ages, and so forth: a real-life demonstration to the vendor that
letting outsiders work on the code will sell more chips.  But if you
actively encourage a brain-damaged userspace driver strategy, that
opportunity is lost.

> It also allows code that needs floating point to not be in the kernel
> and in one instance using this interface actually sped up the device
> because of the lack of the need to go between kernel and userspace a
> bunch of times.

What instance is that?  Are you sure it wasn't a case of things being
done in the driver that should have been done in a library all along?

> > The correct description is more like "porting shim for MMU-less RTOS
> > tasks"; and if the BSP vendors of the world can make a nickel
> > supplying them, more power to them.  Just not in mainline, please.
>
> Again, X does this today, and does does lots of other applications.
> This is a way to do it in a sane manner, to keep people who want to do
> floating point out of the kernel, and to make some embedded people much
> happier to use Linux, gets them from being so mad at Linux because we
> keep changing the internal apis, and makes me happier as they stop
> violating my copyright by creating closed drivers in the kernel.

Today's problem is that too many chip suppliers' in-house software
people have neither the skills nor the schedule room nor the influence
to insist that drivers be written competently and maintainably,
whether or not they are maintained in the public view.  So chipmakers
turn to the BSP vendors, whose business model is built around being
the only people who can do incremental development on the code they
write.

I'm not at all hostile to BSP vendors or to chipmakers who wind up in
this position; that's the way most of the industry works nowadays.
But I do want to know when I'm dealing with that situation, because
the appropriate strategies for getting a product to market are
different when it costs the chip vendor real cash money each time they
commission a recompile to meet some customer's expectations.
Pretending that driver code doesn't need reviewing every few months as
the kernel's locking strategies, timer handling, internal APIs, etc.
evolve makes things worse.

Just like the only thing worse that a salesperson who's on commission
is a salesperson who isn't on commission, the only thing worse than a
closed device driver in kernelspace is a closed device driver in
userspace.

Cheers,
- Michael

  parent reply	other threads:[~2006-12-13 21:49 UTC|newest]

Thread overview: 201+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-13 19:52 [GIT PATCH] more Driver core patches for 2.6.19 Greg KH
     [not found] ` <1166039585152-git-send-email-greg@kroah.com>
     [not found]   ` <11660395913232-git-send-email-greg@kroah.com>
     [not found]     ` <11660395951158-git-send-email-greg@kroah.com>
     [not found]       ` <11660395998-git-send-email-greg@kroah.com>
2006-12-13 19:52         ` [PATCH 5/14] Driver core: show "initstate" of module Greg KH
2006-12-13 19:52           ` [PATCH 6/14] driver core: delete virtual directory on class_unregister() Greg KH
2006-12-13 19:52             ` [PATCH 7/14] DebugFS : inotify create/mkdir support Greg KH
2006-12-13 19:52               ` [PATCH 8/14] DebugFS : coding style fixes Greg KH
2006-12-13 19:53                 ` [PATCH 9/14] DebugFS : file/directory creation error handling Greg KH
2006-12-13 19:53                   ` [PATCH 10/14] DebugFS : more " Greg KH
2006-12-13 19:53                     ` [PATCH 11/14] DebugFS : file/directory removal fix Greg KH
2006-12-13 19:53                       ` [PATCH 12/14] Driver core: "platform_driver_probe() can save codespace": save codespace Greg KH
2006-12-13 19:53                         ` [PATCH 13/14] Driver core: Make platform_device_add_data accept a const pointer Greg KH
2006-12-13 19:53                           ` [PATCH 14/14] Driver core: deprecate PM_LEGACY, default it to N Greg KH
2006-12-13 20:12 ` [GIT PATCH] more Driver core patches for 2.6.19 Linus Torvalds
2006-12-13 20:31   ` Greg KH
2006-12-13 20:58     ` Linus Torvalds
2006-12-13 21:08       ` Linus Torvalds
2006-12-13 21:15         ` Arjan van de Ven
2006-12-14  9:30           ` Muli Ben-Yehuda
2006-12-14 10:13             ` Hans-Jürgen Koch
2006-12-13 21:36       ` Thomas Gleixner
2006-12-13 21:46       ` Benjamin Herrenschmidt
2006-12-13 23:40       ` Greg KH
2006-12-14  8:49       ` Duncan Sands
2006-12-14  9:56         ` Hans-Jürgen Koch
2006-12-14 11:51           ` Olivier Galibert
2006-12-14 12:45             ` Hans-Jürgen Koch
2006-12-14 19:16               ` Olivier Galibert
2006-12-14 12:39           ` Alan
2006-12-14 13:08             ` Hans-Jürgen Koch
2006-12-14 17:02           ` Jan Engelhardt
2006-12-14 17:17             ` Hans-Jürgen Koch
2006-12-14 17:57               ` Jan Engelhardt
2006-12-16 20:13             ` Lee Revell
2006-12-16 20:28               ` Jan Engelhardt
2006-12-14 17:34           ` Bernd Petrovitsch
2006-12-14 17:47             ` Hans-Jürgen Koch
2006-12-14 17:59               ` Bernd Petrovitsch
2006-12-14 12:27         ` James Courtier-Dutton
2006-12-13 20:38   ` Michael K. Edwards
2006-12-13 21:02     ` Greg KH
2006-12-13 21:32       ` Martin Bligh
2006-12-13 21:47         ` Andrew Morton
2006-12-13 22:09           ` GPL only modules [was Re: [GIT PATCH] more Driver core patches for 2.6.19] Greg KH
2006-12-14  0:32             ` Greg KH
2006-12-14  0:43               ` Jonathan Corbet
2006-12-14  0:55                 ` Greg KH
2006-12-14  1:00                   ` Linus Torvalds
2006-12-14  1:08                     ` Michael K. Edwards
2006-12-14  1:30                   ` Grzegorz Kulewski
2006-12-14  1:58                     ` Greg KH
2006-12-14  4:15                   ` Linus Torvalds
2006-12-14  5:39                     ` Martin J. Bligh
2006-12-14  6:01                       ` Hua Zhong
2006-12-14 11:14                         ` Alan
2006-12-14 11:31                           ` Hans-Jürgen Koch
2006-12-14 12:42                             ` Alan
2006-12-14 12:54                               ` Hans-Jürgen Koch
2006-12-14 16:59                                 ` Greg KH
2006-12-14 18:26                                   ` Alan
2006-12-14 21:16                                     ` Greg KH
2006-12-14 12:55                               ` Jan Engelhardt
2006-12-14 13:10                                 ` Arjan van de Ven
2006-12-14 17:17                                   ` Jan Engelhardt
2006-12-17 10:54                                     ` Geert Uytterhoeven
2006-12-14  8:03                       ` James Morris
2006-12-14 15:39                         ` Adrian Bunk
2006-12-14 20:08                           ` David Schwartz
2006-12-15 14:05                             ` Paolo Ornati
2006-12-17 10:11                             ` Geert Uytterhoeven
2006-12-17 10:56                               ` Rafael J. Wysocki
2006-12-19 12:57                               ` Marek Wawrzyczny
2006-12-19 13:56                                 ` Diego Calleja
2006-12-19 16:46                                   ` Gene Heskett
2006-12-19 17:11                                     ` Bill Nottingham
2006-12-19 17:24                                       ` Gene Heskett
2006-12-19 17:13                                     ` Diego Calleja
2006-12-20  5:11                                 ` Valdis.Kletnieks
2006-12-20 19:29                                   ` David Schwartz
2006-12-20 20:52                                     ` Valdis.Kletnieks
2006-12-20 21:10                                       ` alan
2006-12-21 15:34                                   ` Marek Wawrzyczny
2006-12-21 16:43                                     ` Horst H. von Brand
2006-12-21 19:28                                     ` Valdis.Kletnieks
2006-12-24  3:11                                       ` Horst H. von Brand
2006-12-20  4:27                               ` Steven Rostedt
2006-12-14 13:07                       ` Dave Jones
2006-12-14 15:05                         ` Adrian Bunk
2006-12-14 16:11                           ` Dave Jones
2006-12-14 16:31                             ` Olivier Galibert
2006-12-14 15:36                         ` Martin J. Bligh
2006-12-14 17:20                         ` Jan Engelhardt
2006-12-14 14:12                       ` Ben Collins
2006-12-14 15:10                         ` James Courtier-Dutton
2006-12-14 16:09                           ` Dave Jones
2006-12-14 16:36                           ` Ben Collins
2006-12-14 17:34                         ` Jan Engelhardt
2006-12-14 19:29                         ` Michael Buesch
2006-12-14 20:19                           ` Ben Collins
2006-12-14  7:24                     ` Jeffrey V. Merkey
2006-12-14  8:21                     ` David Woodhouse
2006-12-14 11:25                       ` Alan
2007-01-22 23:37                         ` dfsg isn't fsf (Re: GPL only modules [was Re: [GIT PATCH] more Driver core patches for 2.6.19]) Oleg Verych
2006-12-14 14:53                       ` GPL only modules [was Re: [GIT PATCH] more Driver core patches for 2.6.19] Theodore Tso
2006-12-14 16:52                       ` Linus Torvalds
2006-12-14 17:33                         ` Jeff V. Merkey
2006-12-14 18:01                           ` Martin J. Bligh
2006-12-14 18:12                             ` Jeff V. Merkey
2006-12-14 18:37                               ` Linus Torvalds
2006-12-14 18:30                                 ` Jeff V. Merkey
2006-12-14  9:34                     ` James Courtier-Dutton
2006-12-24 11:57                       ` Mark Hounschell
2006-12-24 13:22                         ` Sean
2006-12-24 14:42                           ` Mark Hounschell
2006-12-14 10:49                     ` Xavier Bestel
2006-12-14 13:04                     ` Dave Jones
2006-12-14 13:46                     ` Ben Collins
2006-12-14 17:21                       ` Jan Engelhardt
2006-12-14 17:49                         ` Ben Collins
2006-12-14 15:46                     ` Jeff Garzik
2006-12-14 17:03                       ` Linus Torvalds
2006-12-14 17:08                         ` Chris Wedgwood
2006-12-14 17:38                           ` Christoph Hellwig
2006-12-14 17:52                             ` Chris Wedgwood
2006-12-14 18:09                               ` Jan Engelhardt
2006-12-18 10:28                                 ` GPL only modules Eric W. Biederman
2006-12-14 18:15                               ` GPL only modules [was Re: [GIT PATCH] more Driver core patches for 2.6.19] Eric Sandeen
2006-12-14 18:39                                 ` Chris Wedgwood
2006-12-14 18:51                                   ` Linus Torvalds
2006-12-14 19:42                                   ` Scott Preece
2006-12-14 19:34                                     ` Jeff V. Merkey
2006-12-15  5:28                                       ` GPL only modules Alexandre Oliva
2006-12-15 10:13                                       ` GPL only modules [was Re: [GIT PATCH] more Driver core patches for 2.6.19] Eduard Bloch
2006-12-15 17:44                                       ` Dave Neuer
2006-12-18 10:55                                       ` Eric W. Biederman
2006-12-18 17:05                                         ` Jeff V. Merkey
2006-12-14 19:49                                     ` Hua Zhong
2006-12-17 10:57                             ` Geert Uytterhoeven
2006-12-14 16:17                     ` Adrian Bunk
2006-12-14 16:33                       ` Alan
2006-12-14 16:54                         ` Adrian Bunk
2006-12-14 17:17                         ` Theodore Tso
2006-12-14 18:18                           ` Alan
2006-12-14 19:51                           ` Adrian Bunk
2006-12-21 15:38                             ` Pavel Machek
2006-12-23 11:24                               ` Adrian Bunk
2006-12-23 21:36                                 ` Pavel Machek
2006-12-24  1:07                                   ` Adrian Bunk
2006-12-19 15:12                     ` free module selection Markus Elfring
2006-12-14  5:10                   ` GPL only modules [was Re: [GIT PATCH] more Driver core patches for 2.6.19] Bill Nottingham
2006-12-14  8:48                     ` Greg KH
2006-12-14 14:02                       ` Rik van Riel
2006-12-14 15:42                         ` Chris Friesen
2006-12-14 15:47                         ` Alan
2006-12-14 15:48                           ` Jeff Garzik
2006-12-14 22:21                             ` Dave Airlie
2006-12-14 22:26                               ` Michael Buesch
2006-12-14 22:39                                 ` Dave Airlie
2006-12-14 22:45                                   ` Michael Buesch
2006-12-14 19:32                         ` Bill Nottingham
2006-12-14  5:58                   ` Nigel Cunningham
2006-12-14  7:54                   ` David Schwartz
2006-12-14  8:21                   ` David Woodhouse
2006-12-14 10:36                 ` Alan
2006-12-14 14:57                   ` Adrian Bunk
2006-12-24 14:27               ` Pavel Machek
2006-12-24 19:59                 ` Dmitry Torokhov
2006-12-13 22:20           ` [GIT PATCH] more Driver core patches for 2.6.19 Michael K. Edwards
2006-12-13 22:59             ` Kyle Moffett
2006-12-13 23:55             ` Alan
2006-12-14  2:11               ` Al Viro
2006-12-14 17:22               ` Linus Torvalds
2006-12-14 15:13             ` Rik van Riel
2006-12-13 21:48       ` Michael K. Edwards [this message]
2006-12-13 21:03     ` Linus Torvalds
2006-12-16  9:05       ` Pavel Machek
2006-12-16 11:04         ` Jörn Engel
2006-12-17 10:49           ` Pavel Machek
2006-12-13 21:14   ` Benjamin Herrenschmidt
2006-12-13 21:22     ` Jan Engelhardt
2006-12-13 23:28       ` Linus Torvalds
2006-12-14 11:18         ` Jan Engelhardt
2006-12-14 11:26           ` Jan Engelhardt
2006-12-14 17:32             ` Linus Torvalds
2006-12-14 18:04               ` Jan Engelhardt
2006-12-14 17:26           ` Linus Torvalds
2006-12-14 20:47             ` Thomas Gleixner
2006-12-14 22:59               ` Linus Torvalds
2006-12-14 23:37                 ` Thomas Gleixner
2006-12-13 21:26     ` Linus Torvalds
2006-12-13 22:14       ` Benjamin Herrenschmidt
2006-12-13 22:30         ` Thomas Gleixner
2006-12-13 22:39           ` Benjamin Herrenschmidt
2006-12-13 23:11             ` Thomas Gleixner
2006-12-13 23:39               ` Michael K. Edwards
2006-12-14  0:00               ` Alan
2006-12-13 23:56           ` Alan
2006-12-14  0:08             ` Greg KH
2006-12-14  9:15             ` Thomas Gleixner
2006-12-14 11:33               ` Alan
2006-12-13 22:40         ` Thomas Gleixner
2006-12-13 22:45           ` Benjamin Herrenschmidt
2006-12-13 23:15             ` Thomas Gleixner

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=f2b55d220612131348q705cd2aey9f9a0cde21a5b316@mail.gmail.com \
    --to=medwards.linux@gmail.com \
    --cc=akpm@osdl.org \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@osdl.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;
as well as URLs for NNTP newsgroup(s).