From: David Howells <dhowells@redhat.com>
To: William Lee Irwin III <wli@holomorphy.com>
Cc: Andrew Morton <akpm@osdl.org>,
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 17:24:33 +0000 [thread overview]
Message-ID: <16107.1101230673@redhat.com> (raw)
In-Reply-To: <20041123171039.GK2714@holomorphy.com>
William Lee Irwin III <wli@holomorphy.com> wrote:
> 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 had to fix it to make it work, but what's currently lurking in Andrew's tree
seems more or less correct, just not necessarily safe.
> 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.
My patch drops the old !MMU page refcount wangling stuff in favour of using
compound pages, which seem to work just as well.
> It's unclear (to me) how the current MMU-less code works properly, at
> the very least.
For the most part it's down to two !MMU bits in page_alloc.c - one sets all
the refcounts on the pages of a high-order allocation, and the other
decrements them all again during the first part of freeing.
This works okay with access_process_vm() as is because that pins the mm_struct
semaphore too; but it's also possible that something else does or will pin a
secondary page and then drop the semaphore.
> 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.
Actually, it's more a problem of the "superpage" being freed when the subpages
have elevated counts.
> 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.
I agree.
> 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.
The FRV arch does both MMU and !MMU versions. It's settable by a config
option, and I check both.
David
next prev parent reply other threads:[~2004-11-23 19:02 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
2004-11-23 17:24 ` David Howells [this message]
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=16107.1101230673@redhat.com \
--to=dhowells@redhat.com \
--cc=akpm@osdl.org \
--cc=gerg@snapgear.com \
--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 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.