From: William Lee Irwin III <wli@holomorphy.com>
To: Andrew Morton <akpm@osdl.org>
Cc: David Howells <dhowells@redhat.com>,
torvalds@osdl.org, hch@infradead.org, gerg@snapgear.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Compound page overhaul
Date: Tue, 23 Nov 2004 09:10:39 -0800 [thread overview]
Message-ID: <20041123171039.GK2714@holomorphy.com> (raw)
In-Reply-To: <20041123081129.3e0121fd.akpm@osdl.org>
David Howells <dhowells@redhat.com> wrote:
>> It's nothing at all to do with MMU vs !MMU.
On Tue, Nov 23, 2004 at 08:11:29AM -0800, Andrew Morton wrote:
> In that case I just dunno what's going on now.
> I thought we were discussing the removal of this, from __free_pages_ok():
> #ifndef CONFIG_MMU
> if (order > 0)
> for (i = 1 ; i < (1 << order) ; ++i)
> __put_page(page + i);
> #endif
> by using compound page's refcounting logic instead. But !MMU really wants
> to treat that higher-order page as an array of zero-order pages, and that
> requires the usual usage of the fields of page[1], page[2], etc.
> So what I'm saying is "compound pages are designed for treating a
> higher-order page as a higher-order page. !MMU wants to treat a higher
> order page as an array of zero-order pages. Hence give up and stick with
> the current code".
> What are you saying?
The way I interpreted this is something like:
The usual way this goes (as I've seen it elsewhere) is that some fields
are "base page properties", so each struct page in the subarray of
mem_map the higher-order page represents can have some different,
meaningful value for the field, and so on. Others are "superpage
properties", which refer to the head of the higher-order page.
The MMU-less code appears to assume the refcounts of the tail pages
will remain balanced, and elevates them to avoid the obvious disaster.
But this looks rather broken barring some rather unlikely invariants. I
presume the patch is backing that out so refcounting works properly, or
in the nomenclature above (for which there is a precedent) makes the
refcount a superpage property uniformly across MMU and MMU-less cases.
It's unclear (to me) how the current MMU-less code works properly, at
the very least. It would appear to leak memory since there is no
obvious guarantee the reference to the head page will be dropped when
needed, though things may have intended to free the various tail pages.
i.e. AFAICT things really need to acquire and release references on the
whole higher-order page as a unit for refcounting to actually work,
regardless of MMU or no.
It may also be helpful for Greg Ungerer to help review these patches,
as he appears to represent some of the other MMU-less concerns, and
may have more concrete notions of how things behave in the MMU-less
case than I myself do (hardware tends to resolve these issues, but
that's not always feasible; perhaps an MMU-less port of a "normal"
architecture would be enlightening to those otherwise unable to
directly observe MMU-less behavior). In particular, correcting what
misinterpretations in the above there may be.
-- wli
next prev parent reply other threads:[~2004-11-23 17:45 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-22 13:27 [PATCH] Compound page overhaul David Howells
2004-11-22 14:41 ` William Lee Irwin III
2004-11-22 16:07 ` David Howells
2004-11-22 16:34 ` William Lee Irwin III
2004-11-22 23:54 ` Andrew Morton
2004-11-23 9:18 ` David Howells
2004-11-23 16:11 ` Andrew Morton
2004-11-23 16:48 ` David Howells
2004-11-23 16:56 ` Andrew Morton
2004-11-23 17:48 ` David Howells
2004-11-23 17:10 ` William Lee Irwin III [this message]
2004-11-23 17:24 ` David Howells
2004-11-23 17:46 ` William Lee Irwin III
2004-11-23 17:51 ` David Howells
2004-11-24 14:22 ` Greg Ungerer
2004-11-24 18:03 ` David Howells
2004-11-25 3:37 ` Greg Ungerer
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=20041123171039.GK2714@holomorphy.com \
--to=wli@holomorphy.com \
--cc=akpm@osdl.org \
--cc=dhowells@redhat.com \
--cc=gerg@snapgear.com \
--cc=hch@infradead.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.