From: Linus Torvalds <torvalds@linux-foundation.org>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Nick Piggin <npiggin@suse.de>,
akpm@linux-foundation.org, linux-mm@kvack.org
Subject: Re: [patch 3/8] mm: merge nopfn into fault
Date: Wed, 23 May 2007 20:37:28 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.0.98.0705232028510.3890@woody.linux-foundation.org> (raw)
In-Reply-To: <1179977184.32247.1032.camel@localhost.localdomain>
On Thu, 24 May 2007, Benjamin Herrenschmidt wrote:
>
> Note that I culd just modify the address/page index in the struct
> vm_fault... doesn't make much difference in this case.
>
> Might even create an arch helper prepare_special_pgsize_fault() or
> something like that that takes the VM fault struct, whack it the right
> way, and returns it to the driver for passing to vm_insert_pfn() so that
> all of the logic is actually hidden from the driver.
I don't think we really need that, but what I'd like to avoid is people
using "address" when they don't actually need to (especially if it's just
a quick-and-lazy conversion, and they use "address" to do the page index
calculation with the "pgoff + ((address - vma->start) >> PAGE_SHIFT)" kind
of thing.
So exactly _because_ the "nopage()" interface takes "address", I'd like to
avoid it in that form in the "vm_fault" structure, just so that people
don't do stupid things with it.
(And yes, I'm not proud of the "nopage()" interface, but it evolved from
historical behaviour which did everything at the low level, so "address"
_used_ to make sense for the same reason you want it now).
So just about any "hiding" would do it as far as I'm concerned. Ranging
from the odd (making it a "virtual page number") to just using an
inconvenient name that just makes it obvious that it shouldn't be used
lightly ("virtual_page_fault_address"), to making it a type that cannot
easily be used for that kind of arithmetic ("void __user *" would make
sense, no?).
We literally have code like
offset = area->vm_pgoff << PAGE_SHIFT;
offset += address - area->vm_start;
vaddr = (char*)((struct usX2Ydev *)area->vm_private_data)->hwdep_pcm_shm + offset:
page = virt_to_page(vaddr);
and the "easy" way to convert it would be to just continue to do the
insane thing, without realizing that the "offset" calculation should now
be just something like
offset = fault->pgindex << PAGE_SHIFT;
instead.
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://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2007-05-24 3:37 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-18 7:37 akpm, Nick Piggin
2007-05-18 15:23 ` Linus Torvalds
2007-05-19 1:46 ` Nick Piggin
2007-05-23 23:40 ` Benjamin Herrenschmidt
2007-05-24 1:42 ` Nick Piggin
2007-05-24 2:04 ` Linus Torvalds
2007-05-24 2:16 ` Nick Piggin
2007-05-24 3:17 ` Benjamin Herrenschmidt
2007-05-24 3:26 ` Benjamin Herrenschmidt
2007-05-24 3:37 ` Linus Torvalds [this message]
2007-05-24 3:45 ` Nick Piggin
2007-05-24 10:07 ` Christoph Hellwig
2007-05-24 10:15 ` Benjamin Herrenschmidt
2007-05-24 3:48 ` Benjamin Herrenschmidt
2007-05-25 11:18 ` Nick Piggin
2007-05-25 16:36 ` Linus Torvalds
2007-05-26 7:34 ` Nick Piggin
2007-05-26 8:03 ` Nick Piggin
2007-05-26 15:44 ` Linus Torvalds
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=alpine.LFD.0.98.0705232028510.3890@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=akpm@linux-foundation.org \
--cc=benh@kernel.crashing.org \
--cc=linux-mm@kvack.org \
--cc=npiggin@suse.de \
/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