mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andy Isaacson <adi@hexapodia.org>
To: Pavel Machek <pavel@ucw.cz>
Cc: Arjan van de Ven <arjanv@redhat.com>,
	linux-kernel@vger.kernel.org, Andrew Morton <akpm@osdl.org>
Subject: Re: Some highmem pages still in use after shrink_all_memory()?
Date: Mon, 8 Mar 2004 12:52:16 -0600	[thread overview]
Message-ID: <20040308185216.GB1555@hexapodia.org> (raw)
In-Reply-To: <20040308183401.GE484@elf.ucw.cz>

On Mon, Mar 08, 2004 at 07:34:01PM +0100, Pavel Machek wrote:
> > > > Note that there are some applications for which it is a *bug* if an
> > > > mlocked page gets written out to magnetic media.  (gpg, for example.)
> > > 
> > > mlock() does not guarantee things not hitting magnetic media, just as
> > > mlock() doesn't guarantee that the physical address of a page doesn't
> > > change. mlock guarantees that you won't get hard pagefaults and that you
> > > have guaranteed memory for the task at hand (eg for realtime apps and
> > > oom-critical stuff)
> > 
> > Well, that's fine -- you can certainly define mlock to have whatever
> > semantics you want.  But the semantics that gpg depends on are
> > reasonable, and if mlock is changed to have other semantics, there
> > should be some way for apps to get the behavior that used to be
> > implemented by mlock (and *documented* in the mlock man page).
> > 
> > It's a pity that mlock doesn't take a flags argument.
> 
> How would it help?
> 
> Block system-wide suspend because 4K are mlocked?

Sorry, I left too much of my train of thought implicit.  I'm suggesting
that it would be cool if there were an mlockf(addr, len, ML_NOSWAP) which
would allow an app to say "do not write this page to disk or send it
over the network."  If the kernel decided to evict that page (due to
doing a suspend, perhaps) it would just drop the mapping, and when the
app next used it there would be a SEGV delivered.

Alternatively, you could define a protocol for suspend to notify apps
with mlocked memory that they must clean up in preparation for a
suspend.  It doesn't have to be bulletproof; you can give them one
chance, and if they don't do it just proceed with the suspend.
(Unfortunately this does violate the "never write key material to
magnetic store" semantic as well, but at least you've given the app a
chance.)  Perhaps just SIGUSR1 or something?

Perhaps a better API than mlockf(addr, len, flags) would be a
mattr(addr, len, flags) with MA_NOFAULT, MA_FIXEDPHYSADDR, MA_NOSWAP...
mlock() could then be defined as mattr(addr, len, MA_NOFAULT).


I agree that all of this is beyond the scope of what you're trying to do
in swsusp.  I just want to bring up the issues so that they're not
ignored.

-andy

      reply	other threads:[~2004-03-08 18:52 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-07 14:49 Pavel Machek
2004-03-08  0:40 ` Andrew Morton
2004-03-08  6:36   ` Andy Isaacson
2004-03-08  5:41     ` Nigel Cunningham
2004-03-08  9:13     ` Pavel Machek
2004-03-08  9:39     ` Arjan van de Ven
2004-03-08 15:09       ` Chris Friesen
2004-03-08 15:16         ` Arjan van de Ven
2004-03-08 15:35           ` Chris Friesen
2004-03-08 17:54             ` Zwane Mwaikambo
2004-03-08 16:36       ` Andy Isaacson
2004-03-08 18:34         ` Pavel Machek
2004-03-08 18:52           ` Andy Isaacson [this message]

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=20040308185216.GB1555@hexapodia.org \
    --to=adi@hexapodia.org \
    --cc=akpm@osdl.org \
    --cc=arjanv@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@ucw.cz \
    /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

all inboxes | Powered by JetHome®