linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@transmeta.com>
To: Kanoj Sarcar <kanoj@google.engr.sgi.com>
Cc: andrea@suse.de, alan@lxorguk.ukuu.org.uk,
	"Stephen C. Tweedie" <sct@redhat.com>,
	Gerhard.Wichert@pdb.siemens.de, Winfried.Gerhard@pdb.siemens.de,
	linux-kernel@vger.rutgers.edu, linux-mm@kvack.org,
	linux-usb@suse.com
Subject: Re: [bigmem-patch] 4GB with Linux on IA32
Date: Tue, 17 Aug 1999 00:23:04 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.3.95.990817000705.19678B-100000@cesium.transmeta.com> (raw)
In-Reply-To: <Pine.LNX.4.10.9908170003290.1048-100000@penguin.transmeta.com>


On Tue, 17 Aug 1999, Linus Torvalds wrote:
> 
> The code in question cannot be "fixed". It's doing something wrong in the
> first place, 

To expand on the above:

 If you write a driver and you want to give direct DMA access to some
program, the way to do it is NOT by using some magic ioctl number and
doing stupid things like some drivers do (ie notably bttv).

The way to do it is to just be up-front about the fact that the user
process wants direct access to the buffers that the IO is done from, and
use an explicit mmap() on the file descriptor. The driver can then
allocate a contiguous chunk of memory of the right type, and with the
right restrictions, and then let the nopage() function page it into the
user process space. 

Suddenly, such a _wellwritten_ driver no longer needs to play games with
the page tables. And such a well written driver wouldn't have any problems
at all with the BIGMEM patches.

Btw, this is not somehting new. Quite a number of sound drivers do exactly
this, and have been doing it for several years. I don't know why the bttv
driver has to be so broken, but as far as I can tell it's one of two (the
other one being some completely obscure planb driver for power macs).

Oh, and I notice that the USB cpia driver does bad things too, although it
seems to be limited to vmalloc'ed memory so it's not nearly as horrible. 
It seems to have copied the bug from the bttv sources. Johannes, could you
look at that a bit, it really _is_ going to break horribly at some point,
and I hadn't noticed until after I did a quick grep.. You can use
__get_free_pages() to grab a larger area than just a single page. 

		Linus

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/

  reply	other threads:[~1999-08-17  7:23 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-08-16 16:29 Andrea Arcangeli
1999-08-16 16:48 ` Matthew Wilcox
1999-08-16 17:19   ` Andrea Arcangeli
1999-08-16 18:43 ` Kanoj Sarcar
1999-08-16 19:43   ` Alan Cox
1999-08-16 20:54     ` Andrea Arcangeli
1999-08-16 22:47       ` Andrea Arcangeli
1999-08-16 23:26         ` Andrea Arcangeli
1999-08-16 23:39           ` Kanoj Sarcar
1999-08-17  0:10             ` Andrea Arcangeli
1999-08-17  6:37               ` Kanoj Sarcar
1999-08-17  6:41                 ` Linus Torvalds
1999-08-17  6:50                   ` Kanoj Sarcar
1999-08-17  7:03                     ` Linus Torvalds
1999-08-17  7:23                       ` Linus Torvalds [this message]
1999-08-17 11:39                         ` Alan Cox
1999-08-26 16:27                           ` Andrea Arcangeli
1999-08-17 11:46                     ` Alan Cox
1999-08-17 14:26             ` Andrea Arcangeli
1999-08-17  6:39           ` Linus Torvalds
1999-08-17 12:40             ` Andrea Arcangeli
1999-08-17  6:29         ` Linus Torvalds
1999-08-17 12:37           ` Andrea Arcangeli
1999-08-17 14:04             ` Andrea Arcangeli
1999-08-17  8:52         ` Jakub Jelinek
1999-08-17  9:13         ` Pavel Machek
1999-08-18 14:08           ` Andrea Arcangeli
1999-08-19 12:20             ` Andrea Arcangeli
1999-08-16 23:28       ` Kanoj Sarcar
1999-08-16 23:49         ` Andrea Arcangeli
1999-08-17  6:29         ` David S. Miller
1999-08-17 12:38           ` Andrea Arcangeli
1999-08-17  0:17       ` Andrea Arcangeli
1999-08-19 13:33         ` Thierry Vignaud
1999-08-19 16:49           ` Stephen C. Tweedie
1999-08-20  7:35             ` Thierry Vignaud
1999-08-20  9:55               ` Alan Cox
1999-08-20 18:25               ` Linus Torvalds
1999-08-16 20:34   ` Andrea Arcangeli

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.3.95.990817000705.19678B-100000@cesium.transmeta.com \
    --to=torvalds@transmeta.com \
    --cc=Gerhard.Wichert@pdb.siemens.de \
    --cc=Winfried.Gerhard@pdb.siemens.de \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=andrea@suse.de \
    --cc=kanoj@google.engr.sgi.com \
    --cc=linux-kernel@vger.rutgers.edu \
    --cc=linux-mm@kvack.org \
    --cc=linux-usb@suse.com \
    --cc=sct@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox