From: William Lee Irwin III <wli@holomorphy.com>
To: Andrea Arcangeli <andrea@suse.de>
Cc: linux-kernel@vger.kernel.org, Andrew Morton <akpm@osdl.org>,
Linus Torvalds <torvalds@osdl.org>
Subject: Re: can device drivers return non-ram via vm_ops->nopage?
Date: Sat, 20 Mar 2004 06:40:22 -0800 [thread overview]
Message-ID: <20040320144022.GC2045@holomorphy.com> (raw)
In-Reply-To: <20040320133025.GH9009@dualathlon.random>
On Sat, Mar 20, 2004 at 02:30:25PM +0100, Andrea Arcangeli wrote:
> Anyways returning to the non-ram returned by ->nopage see the below
> email exchange with Jens. the bug triggering of course is the
> BUG_ON(!pfn_valid(page_to_pfn(new_page))).
> If we want to return non-ram, we could, but I believe we should change
> the API to return a pfn not a page_t * if we want to.
This would be very helpful for other reasons also. There's a general
API issue with drivers that want or need to do this. The one I've
heard most about is /dev/mem when it's used to mmap() physical areas
lying in memory holes not covered by ->node_mem_map. Once ->mmap() and
->nopage() supplied by drivers are liberated from reliance on struct
page, numerous hacks, validation overheads, and stability issues may be
eliminated. I'd rather strongly advocate such an API change for mainline,
as it's something that fixes a number of drivers at once, but only if
the implementation carries out a full sweep of all affected callees
and only if it actually resolves the issues with these drivers.
But there's another question that should be asked up-front: in order to
give drivers sufficient expressiveness to correctly implement their
->mmap() methods, is this even sufficient? There is a serious question
of whether the core can actually handle the driver-specific issues,
which suggests devolving a larger swath of the fault handling codepath
to drivers supporting ->mmap() if it is insufficient after all. For
instance, will cache-disabled mappings or bolted/locked TLB entries
that the core doesn't understand be required? I'd like to get someone
with more driver experience or who may have architecture-specific
issues with driver ->nopage() methods to chime in here with respect to
the sufficiency of a pfn-based ->nopage() vs. stronger methods, since
it's pointless to make the pfn-based ->nopage() change if it's
insufficient anyway.
There is also a special case that's hitting a number of architectures
simultaneously that may or may not be a mainline concern. This is that
a number of people actually want to handle faults on hugetlb and do
ZFOD fault handling so that, for instance, various kinds of NUMA and
latency issues can be addressed. The current methods are to trap the
fault before calling handle_mm_fault() in arch code, but a cleaner
solution would very nicely reuse more general or stronger forms of
driver fault handling that would fix driver issues also. It's basically
an upstream call as to whether this will be allowed to have any
influence on the design of a solution to the more critical "drivers are
getting bitten by the requirement of a struct page * return value of
->nopage()" issue, and it looks like upstream is cc:'d on this thread. =)
-- wli
next prev parent reply other threads:[~2004-03-20 14:40 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-20 13:30 can device drivers return non-ram via vm_ops->nopage? Andrea Arcangeli
2004-03-20 14:40 ` William Lee Irwin III [this message]
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
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=20040320144022.GC2045@holomorphy.com \
--to=wli@holomorphy.com \
--cc=akpm@osdl.org \
--cc=andrea@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