From: William Lee Irwin III <wli@holomorphy.com>
To: Roman Zippel <zippel@linux-m68k.org>
Cc: Christoph Hellwig <hch@infradead.org>,
Rik van Riel <riel@conectiva.com.br>,
Samuel Ortiz <sortiz@dbear.engr.sgi.com>,
linux-mm@kvack.org
Subject: Re: [PATCH] rmap 13a
Date: Thu, 9 May 2002 10:42:21 -0700 [thread overview]
Message-ID: <20020509174221.GQ15756@holomorphy.com> (raw)
In-Reply-To: <3CDA9776.776CB406@linux-m68k.org>
William Lee Irwin III wrote:
>> I stated starting at 0 as one of the preconditions for page - mem_map
>> based calculations. The only missing piece of information is the
>> starting address, which is not very difficult to take care of so as
>> to relax this invariant (compilers *should* optimize out 0). Hence,
>> static inline void *page_address(struct page *page)
>> {
>> return __va(MEM_START + ((page - mem_map) << PAGE_SHIFT));
>> }
On Thu, May 09, 2002 at 05:36:22PM +0200, Roman Zippel wrote:
> There is no generic MEM_START, but there is PAGE_OFFSET. Why don't you
> want to use this instead?
MEM_START would be the lowest physical address, not the lowest virtual.
__va(PAGE_OFFSET + ((page - mem_map) << PAGE_SHIFT)) would yield
garbage... Perhaps __pa(PAGE_OFFSET) would work while relaxing only the
"memory starts at 0" precondition? It should come out to 0 for the
architectures with memory starting at 0, and the other preconditions
guarantee that it's the lowest physical, but that breaks if the lowest
physical isn't mapped to PAGE_OFFSET...
William Lee Irwin III wrote:
>> Unfortunately there isn't a CONFIG_MEM_STARTS_AT_ZERO or a MEM_START.
On Thu, May 09, 2002 at 05:36:22PM +0200, Roman Zippel wrote:
> And it's not needed, why should the vm care about the physical memory
> location?
VM is about translating virtual to physical, and so it must know
something resembling the physical address of a page just to edit PTE's?
William Lee Irwin III wrote:
>> To date I've gotten very few and/or very unclear responses from arch
>> maintainers. I'm very interested in getting info from arches such as
>> this but have had approximately zero input along this front thus far.
>> Do you have any suggestions as to a decent course of action here? My
>> first thought is a small set of #defines in include/asm-*/param.h or
>> some appropriate arch header.
On Thu, May 09, 2002 at 05:36:22PM +0200, Roman Zippel wrote:
> What do you want to define there?
(1) ARCH_SLOW_ALU
Address calculation doesn't win on some CPU's with ridiculously
slow ALU's (well, slow relative to memory fetch)
(2) ARCH_DENSEMAPS_ZONES (probably better to define it elsewhere)
MAP_NR_DENSE() makes address calculation schemes somewhat more
expensive
(3) ARCH_REMAPS_DISCONTIG
__va() and __pa() may do strange things when physical memory is
mapped in a strange ways for virtual contiguity, don't mess
with these guys
(4) ARCH_TRIVIAL_MEMORY_LAYOUT
We're the super-easy case that nobody complains about =)
William Lee Irwin III wrote:
>> I believe the real issue is that architectures don't yet export enough
>> information to select the version they really want. There just aren't
>> enough variations on this theme to warrant doing this in arch code, and
>> I think I got some consensus on that by the mere acceptance of the
>> patch to remove ->virtual in most instances.
On Thu, May 09, 2002 at 05:36:22PM +0200, Roman Zippel wrote:
> The basic mechanism is often the same, that's true. The problem is to
> allow the archs an efficient conversion. Only the arch specific code
> knows how the memory is laid out and can use this information to
> optimize the conversion at compile time by making some of the variables
> constant. As soon as you have managed to generalize this, I'm sure
> highmem will be the only special case left you have to deal with.
This sounds like an important direction I should investigate then. I've
already got a notion of how highmem could be dealt with (c.f. indexing
into kmap pool post). I'll have to dig around to see what architectures
export and see what needs to be standardized for an address calculation
scheme based on constructing the address with the help of those constants.
On Thu, May 09, 2002 at 05:36:22PM +0200, Roman Zippel wrote:
>> If we can agree on this much then can we start pinning down a more
>> precise method of selecting the method of address calculation? I'm
>> very interested in maintaining this code and making it suitable for
>> all architectures.
On Thu, May 09, 2002 at 05:36:22PM +0200, Roman Zippel wrote:
> Why is it so important to move it out of the arch code? The simple case
> is trivial enough to be copied around or maybe put some templates into
> asm-generic, but I'd prefer to leave the archs complete control about
> this.
mem_map was bloated to the point where highmem machines couldn't get
enough ZONE_NORMAL to boot. Control definitely needs to be exerted over
the space consumption of mem_map, and killing ->virtual wherever/whenever
possible is a large part of that. I even have some evidence that what
control of that space consumption there is now may still be insufficient.
asm-generic has the small problem that it divorces the format of struct
page from the definition of page_address(). Also, it shouldn't really be
optional; the VM should be given enough information to do the right thing.
Cheers,
Bill
--
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/
next prev parent reply other threads:[~2002-05-09 17:42 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-07 2:17 Rik van Riel
2002-05-07 17:37 ` Christoph Hellwig
2002-05-07 18:03 ` William Lee Irwin III
2002-05-08 11:06 ` Samuel Ortiz
2002-05-08 11:13 ` William Lee Irwin III
2002-05-08 13:40 ` Rik van Riel
2002-05-08 18:21 ` Roman Zippel
2002-05-08 21:34 ` William Lee Irwin III
2002-05-08 22:34 ` Roman Zippel
2002-05-08 22:42 ` William Lee Irwin III
2002-05-08 22:50 ` William Lee Irwin III
2002-05-08 23:26 ` Roman Zippel
2002-05-09 1:29 ` William Lee Irwin III
2002-05-09 12:33 ` Roman Zippel
2002-05-09 14:09 ` William Lee Irwin III
2002-05-09 15:36 ` Roman Zippel
2002-05-09 17:42 ` William Lee Irwin III [this message]
2002-05-09 21:45 ` Roman Zippel
2002-05-09 23:13 ` William Lee Irwin III
2002-05-10 11:37 ` Roman Zippel
2002-05-10 16:28 ` William Lee Irwin III
2002-05-10 19:48 ` Roman Zippel
2002-05-08 21:50 ` William Lee Irwin III
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=20020509174221.GQ15756@holomorphy.com \
--to=wli@holomorphy.com \
--cc=hch@infradead.org \
--cc=linux-mm@kvack.org \
--cc=riel@conectiva.com.br \
--cc=sortiz@dbear.engr.sgi.com \
--cc=zippel@linux-m68k.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