mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Russell King <rmk+lkml@arm.linux.org.uk>
To: Linus Torvalds <torvalds@osdl.org>
Cc: David Woodhouse <dwmw2@infradead.org>,
	Christoph Hellwig <hch@infradead.org>,
	William Lee Irwin III <wli@holomorphy.com>,
	Andrew Morton <akpm@osdl.org>, Andrea Arcangeli <andrea@suse.de>,
	linux-kernel@vger.kernel.org
Subject: Re: can device drivers return non-ram via vm_ops->nopage?
Date: Sun, 21 Mar 2004 22:23:27 +0000	[thread overview]
Message-ID: <20040321222327.D26708@flint.arm.linux.org.uk> (raw)
In-Reply-To: <Pine.LNX.4.58.0403211349340.1106@ppc970.osdl.org>; from torvalds@osdl.org on Sun, Mar 21, 2004 at 01:53:41PM -0800

On Sun, Mar 21, 2004 at 01:53:41PM -0800, Linus Torvalds wrote:
> So I really put my veto on "nopage()" returning a PFN. That's just wrong, 
> wrong, wrong. It returns a "struct page" pointer, and it has lots of 
> reasons for that.

Ok then.  We leave nopage() as is, and define that for returning RAM
backed pages.

We also have a fault() handler which is used for faulting in driver
mappings, which returns a PFN suitable for set_pte().  The fault()
would be separate from do_no_page() in much the same way as
do_anonymous_page() is separate, and it knows that PFNs returned
from this have nothing to do with struct pages.  All it does is
set the relevant PTE entry in the page tables to create the mapping.

I don't think remap_area_pages() solves the problem - think about
the DMA ring buffer returned by dma_alloc_coherent().  This returns
an architectually defined virtual address and a DMA address.

Neither of these two addresses can be converted today to a struct
page or a PFN.  Sure, we can invent some architecture defined
interface to get hold of this information, but take a moment to
consider all the cases where this type of activity goes on.

What about the case where the buffer is scatter-gather in nature,
just like we're so fond of telling driver writers who want to grab
(eg) 1MB of contiguous kernel memory for video buffers and the like?
Do we really want to tell driver writers to walk over 1MB of pages,
page by page, inserting them into the processes page tables via
remap_area_pages()?

Or does the ->fault() method make sense in all these cases?

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 PCMCIA      - http://pcmcia.arm.linux.org.uk/
                 2.6 Serial core

  parent reply	other threads:[~2004-03-21 22:24 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-20 13:30 Andrea Arcangeli
2004-03-20 14:40 ` William Lee Irwin III
2004-03-20 15:06   ` Andrea Arcangeli
2004-03-20 15:27     ` William Lee Irwin III
2004-03-20 15:44     ` Russell King
2004-03-20 15:57       ` Andrea Arcangeli
2004-03-20 16:15         ` Russell King
2004-03-20 16:25           ` Andrea Arcangeli
2004-03-20 16:57             ` William Lee Irwin III
2004-03-20 17:48             ` Andrea Arcangeli
2004-03-20 19:03               ` Andrea Arcangeli
2004-03-20 15:58       ` Jaroslav Kysela
2004-03-20 16:09         ` Russell King
2004-03-20 19:44           ` Jaroslav Kysela
2004-03-20 22:23             ` Russell King
2004-03-20 22:45               ` William Lee Irwin III
2004-03-20 23:54                 ` Russell King
2004-03-21  0:22                   ` Zwane Mwaikambo
2004-03-22  4:46                     ` Benjamin Herrenschmidt
2004-03-22 18:23                       ` Richard Curnow
2004-03-21  0:23                   ` William Lee Irwin III
2004-03-21  9:52                   ` Arjan van de Ven
2004-03-21 10:39                   ` Jaroslav Kysela
2004-03-22  4:43             ` Benjamin Herrenschmidt
2004-03-20 20:13     ` Andrew Morton
2004-03-20 20:28       ` Andrea Arcangeli
2004-03-20 20:50       ` William Lee Irwin III
2004-03-20 22:26         ` Russell King
2004-03-20 22:45           ` William Lee Irwin III
2004-03-21 20:45             ` David Woodhouse
2004-03-21 20:49               ` Christoph Hellwig
2004-03-21 20:57                 ` David Woodhouse
2004-03-21 21:53                   ` Linus Torvalds
2004-03-21 22:17                     ` Jeff Garzik
2004-03-21 22:23                     ` David Woodhouse
2004-03-21 22:23                     ` Russell King [this message]
2004-03-21 22:34                       ` Jeff Garzik
2004-03-21 22:42                         ` David Woodhouse
2004-03-21 23:06                           ` Jeff Garzik
2004-03-21 22:51                         ` Russell King
2004-03-21 23:09                           ` Jeff Garzik
2004-03-21 23:11                           ` Linus Torvalds
2004-03-21 23:22                             ` Jeff Garzik
2004-03-21 23:51                               ` Linus Torvalds
2004-03-21 23:58                                 ` Russell King
2004-03-22  0:34                                   ` Andrea Arcangeli
2004-03-22  3:05                                     ` Linus Torvalds
2004-03-23 17:59                                   ` Andy Whitcroft
2004-03-23 17:58                                     ` David Woodhouse
2004-03-23 18:11                                     ` William Lee Irwin III
2004-03-22  0:02                                 ` David Woodhouse
2004-03-22  3:28                                   ` Linus Torvalds
2004-03-22  0:10                                 ` Jeff Garzik
2004-03-22  0:20                                   ` Russell King
2004-03-22  0:33                                     ` Jeff Garzik
2004-03-22  4:57                                     ` Benjamin Herrenschmidt
2004-03-21 23:45                             ` Russell King
2004-03-22  0:23                               ` William Lee Irwin III
2004-03-22  0:29                                 ` Jeff Garzik
2004-03-22  1:28                                   ` William Lee Irwin III
2004-03-22  6:36           ` William Lee Irwin III
2004-03-20 17:39 ` Linus Torvalds
2004-03-20 17:56   ` Andrea Arcangeli
2004-03-20 18:22   ` William Lee Irwin III
2004-03-21  3:13   ` Chris Wedgwood
2004-03-21  6:23     ` Christoph Hellwig
2004-03-21  7:00       ` Chris Wedgwood

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=20040321222327.D26708@flint.arm.linux.org.uk \
    --to=rmk+lkml@arm.linux.org.uk \
    --cc=akpm@osdl.org \
    --cc=andrea@suse.de \
    --cc=dwmw2@infradead.org \
    --cc=hch@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@osdl.org \
    --cc=wli@holomorphy.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

Powered by JetHome