linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Nigel Cunningham <ncunningham@cyclades.com>
To: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Linux Memory Management <linux-mm@kvack.org>,
	Pavel Machek <pavel@suse.cz>, Hugh Dickins <hugh@veritas.com>,
	William Lee Irwin III <wli@holomorphy.com>
Subject: Re: PageReserved removal from swsusp
Date: Mon, 25 Jul 2005 14:31:50 +1000	[thread overview]
Message-ID: <1122265909.6144.106.camel@localhost> (raw)
In-Reply-To: <42E44294.5020408@yahoo.com.au>

Hi.

On Mon, 2005-07-25 at 11:38, Nick Piggin wrote:
> Hi,
> 
> kernel/power/swsusp.c is the last remaining real user of PageReserved
> with my current PageReserved removal patchset. This is actually not a
> problem for my purposes, and swsusp is quite able to continue using
> PageReserved... however that may be a bit ugly, and means swsusp will
> be the sole user of 3(!) page-flags.
> 
> The PageReserved test in save_highmem_zone() is the hard one. rvmalloc
> is no problem, but it seems to be important to prevent saving regions
> that aren't RAM.
> 
> I seem to be able to work around this on i386 by testing page_is_ram()
> instead of PageReserved, however that looks nonportable, and at least
> on i386 we rather want something like page_is_usable_ram() which is
> (page_is_ram && !(bad_ppro && page_kills_ppro))
> 
> Otherwise we could perhaps have a PageUsableRAM() which returns
> page->flags != 0xffffffff or some other unlikely combination of flags.
> 
> They're my two ideas. Anyone else?

I have a few differences in Suspend2 that let me only use one real
pageflag (Nosave).

The changes are:

1) Use a set of order zero allocations, tied together via a kmalloc'd
list of pointers as a means of dynamically creating and destroying
pseudo page-flags (such as are only needed while suspending). The
bitmaps don't support sparsemem yet, but this support could be added
pretty easily.

2) This bitmap could be used straight off for swsusp's PageNosave flag
since it is only used in kernel/power/swsusp.c (2.6.13-rc3 checked).

3) Set & Clear PageNosaveFree are also used in mm/page_alloc.c, in
mark_free_pages, which is only called from swsusp.c, so a dynamically
allocated bitmap could be used there too.

4) That leaves PageReserved. Pavel and I both rely on a page flag being
set in the arch specific code (based on e820 tables), so as to know what
pages are untouchable. As I look more closely though, I wonder if we
could do without that if we instead directly do the 

(page_is_ram(pfn) && !(bad_ppro && page_kills_ppro(pfn))

and

(addr < (void *)&__nosave_begin || addr >= (void *)&__nosave_end)

tests when preparing the image. Assuming, of course, that page_is_ram,
bad_ppro and page_kills_ppro can be made usable by us.

Regards,

Nigel
-- 
Evolution.
Enumerate the requirements.
Consider the interdependencies.
Calculate the probabilities.

--
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>

  reply	other threads:[~2005-07-25  4:31 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-25  1:38 Nick Piggin
2005-07-25  4:31 ` Nigel Cunningham [this message]
2005-07-25  4:52   ` Nick Piggin
2005-07-25  6:22     ` Nick Piggin
2005-07-25  6:59       ` Pavel Machek
2005-07-25 12:39       ` Hugh Dickins
2005-07-25 23:29         ` Nick Piggin

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=1122265909.6144.106.camel@localhost \
    --to=ncunningham@cyclades.com \
    --cc=hugh@veritas.com \
    --cc=linux-mm@kvack.org \
    --cc=nickpiggin@yahoo.com.au \
    --cc=pavel@suse.cz \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox