Linux PARISC architecture development
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Cc: Carlos O'Donell <carlos@systemhalted.org>, linux-parisc@vger.kernel.org
Subject: Re: [PATCH] parisc: Improve dcache flush on PA8800/PA8900
Date: Tue, 15 Feb 2011 10:58:10 -0600	[thread overview]
Message-ID: <1297789090.3015.31.camel@mulgrave.site> (raw)
In-Reply-To: <20110215164703.GA9471@hiauly1.hia.nrc.ca>

On Tue, 2011-02-15 at 11:47 -0500, John David Anglin wrote:
> On Tue, 15 Feb 2011, Carlos O'Donell wrote:
> 
> > On Mon, Feb 14, 2011 at 8:58 PM, John David Anglin
> > <dave@hiauly1.hia.nrc.ca> wrote:
> > > Feb 14 07:48:06 mx3210 kernel: INEQUIVALENT ALIASES: page 0x4282e520 addr 0x411e
> > > 8000 in file libc-2.11.2.so with flags 0x8000071
> > >
> > > i haven't tracked down where these come from but this looks like a glibc issue.
> > > Note the final vm_flags value for the final map.  This is the inequivalent one.
> > > As far as I know, the GCC testsuite does not play with MAP_FIXED maps.
> > >
> > > Carlos, any thoughts on where this might come from?
> > 
> > Could you more clearly describe exactly what is the problem from
> > glibc's perspective?
> 
> It's a little hard to tell since I haven't found the application
> the causes the above inequivalent aliases.

There was a prink in the inequivalent alias detector that printed
task->comm (that's the process name) if you add it back it will give
more information.

> >From a kernel perspective, we need to avoid multiple maps of the same
> memory page with inequivalent virtual addresses (i.e., the maps must
> start at the same address & 0x3fffff).

If I understand what you've done: you already patched the kernel to
force MAP_FIXED onto this boundary.  If that's the case, the actual
problem must be an offset mapping; meaning something maps a region and
then maps a subregion of it.  I've got to guess this is the dynamic
loader.

> Inequivalent maps only result from the use of MAP_FIXED.  All
> the maps with VM_READ and VM_EXEC are equivalent in this case,
> so it's fairly clear that the map is for a code segment of
> libc-2.11.2.so.  There is one map with just the VM_READ flag
> that is not equivalent.  Because there are multiple maps to the
> same memory page, the page is in effect shared.
> 
> Ideally, glibc should use equivalent aliases for all maps that
> it creates when they are "shared" as above.
> 
> > The dynamic loader will do a non-fixed mapping to cover the entire
> > range of the PIC code needed to load into memory. This ensures it has
> > enough space to map segments. Then it follows up by using MAP_FIXED to
> > exactly map the segment from the file into memory. It also maps
> > remaining pages at MAP_FIXED from fd=-1 (zero fill).
> 
> I tend to think this is the problem area.  I will try to find a
> testcase.

Great, thanks!  Just getting an application (or .c file) that does this
will give us a better opportunity to analyse what the problem is.

James



  reply	other threads:[~2011-02-15 16:58 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-20 18:54 [PATCH] parisc: improve vmap flush/invalidate James Bottomley
2011-02-08 17:15 ` [PATCH] parisc: Improve dcache flush on PA8800/PA8900 John David Anglin
2011-02-08 17:29   ` James Bottomley
2011-02-08 18:45     ` John David Anglin
2011-02-10 16:03       ` James Bottomley
2011-02-10 17:00         ` John David Anglin
2011-02-10 20:00           ` John David Anglin
2011-02-12 16:18             ` John David Anglin
2011-02-13 19:39               ` John David Anglin
2011-02-15  1:58                 ` John David Anglin
2011-02-15 15:13                   ` Carlos O'Donell
2011-02-15 16:47                     ` John David Anglin
2011-02-15 16:58                       ` James Bottomley [this message]
2011-02-15 17:09                         ` John David Anglin
2011-02-17  0:37                         ` John David Anglin
2011-02-17  0:30                     ` binutils change break glibc build John David Anglin
2011-02-17  1:09                       ` John David Anglin
2011-02-17  1:17                         ` John David Anglin
2011-02-17  4:13                           ` John David Anglin
2011-02-18  3:29                             ` John David Anglin
2011-02-18  5:32                         ` Mike Frysinger
2011-02-18 14:39                           ` John David Anglin
2011-02-18 15:28                             ` Carlos O'Donell
2011-02-18 18:40                       ` John David Anglin
2011-02-18 19:31                         ` Mike Frysinger
2011-02-18 19:39                         ` Carlos O'Donell
2011-02-22  0:13                           ` John David Anglin
2011-02-22 15:07                             ` Carlos O'Donell
2011-02-22 16:27                               ` John David Anglin

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=1297789090.3015.31.camel@mulgrave.site \
    --to=james.bottomley@hansenpartnership.com \
    --cc=carlos@systemhalted.org \
    --cc=dave.anglin@nrc-cnrc.gc.ca \
    --cc=linux-parisc@vger.kernel.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