All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Andrew Morton <akpm@digeo.com>, David Miller <davem@redhat.com>,
	Paul Mackerras <paulus@samba.org>,
	linux-kernel@vger.kernel.org,
	linuxppc-embedded@lists.linuxppc.org
Subject: Re: [PATCH,RFC] Add gfp_mask to get_vm_area()
Date: Thu, 3 Oct 2002 14:56:44 +1000	[thread overview]
Message-ID: <20021003045644.GO1102@zax> (raw)
In-Reply-To: <20021003043948.GN1102@zax>

On Thu, Oct 03, 2002 at 02:39:48PM +1000, David Gibson wrote:
> 
> On Tue, Oct 01, 2002 at 03:34:17PM +1000, David Gibson wrote:
> >
> > On Mon, Sep 30, 2002 at 10:08:00PM -0700, Andrew Morton wrote:
> > >
> > > David Gibson wrote:
> > > >
> > > > Dave, please consider this patch.  It renames get_vm_area() to
> > > > __get_vm_area() and adds a gfp_mask parameter which is passed on to
> > > > kmalloc().  get_vm_area(size,flags) is then defined as as
> > > > __get_vm_area(size,flags,GFP_KERNEL) to avoid messing with existing
> > > > callers.
> > > >
> > > > We need this in order to sanely make pci_alloc_consistent() (and other
> > > > consistent allocation functions) obey the DMA-mapping.txt rules on PPC
> > > > embedded machines (specifically the requirement that it be callable
> > > > from interrupt context).
> > > >
> > >
> > > I can look after that for you.  But I'd prefer that you just add the
> > > extra gfp_flags argument to get_vm_area() and update the 16 callers.
> > >
> > > You cannot call get_vm_area() from interrupt context at present;
> > > it does write_lock(&vmlist_lock) unsafely.
> >
> > Oh crap, I'm an idiot.  I've even seen prototype patches for this one
> > that changed the write_lock() to write_lock_irq(). Duh.
> >
> > > It would be a bit sad to make vmlist_lock interrupt-safe for this.  Is
> > > there no alternative?
> >
> > I don't see an easy one: PPC 4xx has non-coherent cache, so we have to
> > mark consistent memory non-cacheable.  We want to make the normal
> > lowmem mapping use large page TLB entries, so we can't frob the
> > attribute bits on the pages in place.  That means we need to create a
> > new, non-cacheable mapping for the physical RAM we allocate, which in
> > turn means allocating a chunk of kernel virtual memory.
> 
> Well, here is an updated patch which should make the vmlist_lock
> interrupt-safe.  It makes __get_vm_area() and remove_vm_area()
> callable from interrupt context.  If you can think of some way of
> avoiding doing that, I'd love to hear it - I agree this would be
> rather sad.

Blah.  It gets worse.  Making map_page() or remap_page_range()
interrupt-safe would require making mm->page_table_lock irq-safe too
:-(

Maybe non-coherent architectures should should pre-allocate a chunk of
virtual memory for consistent allocations, and pre-allocate all its
page tables.

-- 
David Gibson			| For every complex problem there is a
david@gibson.dropbear.id.au	| solution which is simple, neat and
				| wrong.
http://www.ozlabs.org/people/dgibson

  reply	other threads:[~2002-10-03  4:51 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-10-01  4:42 [PATCH,RFC] Add gfp_mask to get_vm_area() David Gibson
2002-10-01  4:37 ` David S. Miller
2002-10-01  5:08 ` Andrew Morton
2002-10-01  5:34   ` David Gibson
2002-10-01  8:42     ` Russell King
2002-10-02  1:18       ` David Gibson
2002-10-03  4:39     ` David Gibson
2002-10-03  4:56       ` David Gibson [this message]
2002-10-03 15:18         ` Russell King
2002-10-04  3:27           ` David Gibson

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=20021003045644.GO1102@zax \
    --to=david@gibson.dropbear.id.au \
    --cc=akpm@digeo.com \
    --cc=davem@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-embedded@lists.linuxppc.org \
    --cc=paulus@samba.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.