All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Hansen <haveblue@us.ibm.com>
To: Haavard Skinnemoen <hskinnemoen@atmel.com>
Cc: linux-arch@vger.kernel.org
Subject: Re: [RFC] Generic ioremap_page_range
Date: Fri, 04 Aug 2006 10:18:25 -0700	[thread overview]
Message-ID: <1154711905.10109.25.camel@localhost.localdomain> (raw)
In-Reply-To: <20060804094700.40a63a78@cad-250-152.norway.atmel.com>

On Fri, 2006-08-04 at 09:47 +0200, Haavard Skinnemoen wrote:
> On Fri, 14 Jul 2006 08:48:43 -0700
> Dave Hansen <haveblue@us.ibm.com> wrote:
> > It would also be nice to see a _couple_ of patches that perhaps
> > abstract a thing or two into generic code.  I know that new
> > architectures usually begin with a 'cp -r', but it would be nice to
> > see a wee bit of code refactoring as a small price of admission.
> > Some of the ioremap and other pagetable code looked pretty generic to
> > me.
> 
> Ok, here's a first try.
> 
> This patch moves the i386 implementation of ioremap_page_range() into
> lib/ioremap.c for use by other architectures.

Wow.  Very nice.

> There's one difference between the generic ioremap_page_range and the
> i386 version: it takes a pgprot_t argument instead of unsigned long
> flags, meaning that the arch-specific ioremap() implementation must
> set all pte flags before calling ioremap_page_range() instead of
> in the lowest-level page remapping function.

It looks like they were pretty static before, anyway.  I guess, in the
worst case, you could make a weak symbol in lib/ioremap.c that does
arch_ioremap_pgprot().  If an architecture needs to do something
special, they could override it.

But, unless this is causing real problems, I don't see any serious
reason to do it.  It can wail until we actually run into a user that
needs it.

> If you think this looks like a good idea, I'll split out the i386
> modifications in a separate patch and submit patches for several other
> architectures as well.
> 
> To get the review started, here are a couple of questions:
>   * Wouldn't it make more sense to call flush_cache_vmap() instead of
>     flush_cache_all()?

Yup, probably.  The ioremap code probably predates the existence of 
flush_cache_vmap().

>   * Why do we need to call flush_tlb_all()? I thought you only needed
>     to do that when changing/removing existing mappings...

I must not be understanding the flush_cache*() functions correctly
because the vmalloc() code does its flush_cache_vmap() _after_ the
vmalloc area is set up.

In any case, vmalloc() apparently does something very close to what you
need, and it does what you suggest: use flush_cache_vmap(), intends to
only work on pte_none() ptes, and doesn't call a tlb flush function
afterwords.  Unless there is something to differentiate ioremap's
functionality (say, the random pte flags you can set with ioremap) I
can't think of why ioremap is different.

BTW, does this new generic ioremap code work on _your_ architecture? ;)
Have you done a quick survey to see how many other architectures can use
it?

-- Dave


  reply	other threads:[~2006-08-04 17:18 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-14  5:48 2.6.18-rc1-mm2 Andrew Morton
2006-07-14  6:55 ` 2.6.18-rc1-mm2 Reuben Farrelly
2006-07-14  7:05   ` 2.6.18-rc1-mm2 Andrew Morton
2006-07-15  0:04     ` 2.6.18-rc1-mm2 Herbert Xu
     [not found]       ` <20060714172010.fcc50c0a.akpm@osdl.org>
     [not found]         ` <20060715002623.GE9334@gondor.apana.org.au>
     [not found]           ` <20060714173517.cdd58097.akpm@osdl.org>
2006-07-15  1:06             ` 2.6.18-rc1-mm2 Herbert Xu
2006-07-15  5:40               ` 2.6.18-rc1-mm2 David Miller
2006-07-15  6:04                 ` 2.6.18-rc1-mm2 Dave Jones
2006-07-16  1:19                   ` 2.6.18-rc1-mm2 David Miller
2006-07-15 10:32                 ` 2.6.18-rc1-mm2 Herbert Xu
2006-07-15 10:34                   ` 2.6.18-rc1-mm2 Herbert Xu
2006-07-14  7:33   ` 2.6.18-rc1-mm2 David Miller
2006-07-14  7:00 ` 2.6.18-rc1-mm2 Reuben Farrelly
2006-07-14  8:39 ` [patch -mm] s390: kprobes compile fix Heiko Carstens
2006-07-14 11:30 ` 2.6.18-rc1-mm2 Reuben Farrelly
2006-07-14 15:00   ` 2.6.18-rc1-mm2 Andrew Morton
2006-07-14 11:36 ` 2.6.18-rc1-mm2 Rafael J. Wysocki
2006-07-14 18:00   ` 2.6.18-rc1-mm2 Andrew Morton
2006-07-14 18:36     ` 2.6.18-rc1-mm2 Michal Piotrowski
2006-07-14 20:27       ` 2.6.18-rc1-mm2 Rafael J. Wysocki
2006-07-14 12:23 ` 2.6.18-rc1-mm2 Michal Piotrowski
2006-07-14 12:36 ` 2.6.18-rc1-mm2 Lexington Luthor
2006-07-14 16:30   ` [PATCH] fixed add_bind_files() definition Yoichi Yuasa
2006-07-14 15:48 ` 2.6.18-rc1-mm2 Dave Hansen
2006-07-18 21:49   ` 2.6.18-rc1-mm2 Haavard Skinnemoen
2006-08-04  7:47   ` [RFC] Generic ioremap_page_range Haavard Skinnemoen
2006-08-04 17:18     ` Dave Hansen [this message]
2006-08-04 18:44       ` Håvard Skinnemoen
2006-08-07  7:06         ` Paul Mackerras
2006-08-07  7:21           ` David Miller
2006-08-04 23:40     ` Paul Mackerras
2006-08-05  0:13       ` David Miller
2006-07-14 16:30 ` 2.6.18-rc1-mm2 (bttv: NULL pointer derefernce) Dominik Karall
2006-08-02 16:00   ` 2.6.18-rc1-mm2 and 2.6.18-rc3 " Dominik Karall
2006-08-02 16:49     ` Andrew Morton
2006-08-02 16:57       ` Linus Torvalds
2006-08-02 18:02         ` Mauro Carvalho Chehab
2006-08-02 17:08     ` Bret Towe
2006-07-14 17:57 ` 2.6.18-rc1-mm2 Cédric Augonnet
2006-07-14 18:18   ` 2.6.18-rc1-mm2 Andrew Morton
2006-07-14 18:50     ` 2.6.18-rc1-mm2 Cédric Augonnet
2006-07-14 18:48 ` 2.6.18-rc1-mm2: drivers/char/*synclink* compile errors Adrian Bunk
2006-07-14 21:31   ` David Miller
2006-07-14 19:08 ` 2.6.18-rc1-mm2: drivers/scsi/NCR53C9x.c compile error Adrian Bunk
2006-07-14 19:08   ` Adrian Bunk
2006-07-20 10:17   ` 2.6.18-rc1-mm2: drivers/fc4/fc.c " Adrian Bunk
2006-07-15  0:35 ` [-mm patch] remove net/core/skbuff.c:skb_queue_lock_key Adrian Bunk
2006-07-15  5:35   ` Arjan van de Ven
2006-07-15  0:35 ` [-mm patch] drivers/char/pc8736x_gpio.c: unexport a static struct Adrian Bunk
2006-07-15 14:50   ` Chris Boot
2006-07-15  0:35 ` [RFC: -mm patch] drivers/char/scx200_gpio.c: make code static Adrian Bunk
2006-07-15 14:49   ` Chris Boot
2006-07-15 15:37     ` Adrian Bunk
2006-07-15 17:10       ` Chris Boot
2006-07-15 23:49   ` Jim Cromie
2006-07-15  0:35 ` [-mm patch] drivers/crypto/padlock-sha.c: make 2 functions static Adrian Bunk
2006-07-15  0:39   ` Herbert Xu
2006-07-15  0:35 ` [RFC: -mm patch] drivers/usb/core/driver.c: " Adrian Bunk
2006-07-15 12:50   ` [linux-usb-devel] " Alan Stern
2006-07-15  0:36 ` [RFC: -mm patch] fs/dlm/lock.c: unexport dlm_lvb_operations Adrian Bunk
2006-07-15  0:36   ` [Cluster-devel] " Adrian Bunk
2006-07-19 23:11   ` [Cluster-devel] " Steven Whitehouse
2006-07-19 23:27     ` Steven Whitehouse
2006-07-15  0:37 ` [-mm patch] drivers/char/pc8736x_gpio.c: remove unused static functions Adrian Bunk
2006-07-18 16:07   ` Jim Cromie
2006-07-30 16:49   ` Jim Cromie
2006-07-22  9:49 ` [patch] mdacon: fix __init section warnings Frederik Deweerdt
2006-07-23  0:55 ` 2.6.18-rc1-mm2 Reuben Farrelly
2006-07-24 17:21   ` [patch] inotify: fix deadlock found by lockdep Arjan van de Ven
2006-07-24 19:14     ` Ingo Molnar
2006-07-24 22:08     ` Robert Love

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=1154711905.10109.25.camel@localhost.localdomain \
    --to=haveblue@us.ibm.com \
    --cc=hskinnemoen@atmel.com \
    --cc=linux-arch@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 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.