lkml.org 
[lkml]   [2008]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] Add io-mapping functions to dynamically map large device apertures

* Keith Packard <keithp@keithp.com> wrote:

> On Fri, 2008-10-31 at 10:21 +0100, Ingo Molnar wrote:
>
> > it's ugly and inflexible to put x86 dependencies into generic headers.
> > (even though with a high likelyhood 32-bit x86 will be the only arch
> > to ever implement the iomap_atomic() APIs)
> >
> > Instead please add a HAVE_ATOMIC_IOMAP define to arch/x86/Kconfig:
> >
> > config HAVE_ATOMIC_IOMAP
> > def_bool y
> > depends on X86_32
> >
> > ... and use #ifndef HAVE_ATOMIC_IOMAP in include/linux/io-mapping.h
> > instead of #ifdef CONFIG_X86_64.
>
> Just to clarify the issue here: there are two separate
> implementations of the io_mapping API -- one for 'large address
> space' machines where ioremap_wc can handle the typical graphics
> aperture within the kernel virtual map, and the other using
> iomap_atomic_prot_pfn for machines with puny address spaces.
>
> All large address space machines can provide the io_mapping API
> without any archtecture-specific support. For efficient 32-bit
> io_mapping support, we require the new iomap_atomic_prot_pfn
> function.
>
> So, it seems like what I want to do is use the large address space
> code on any machine which supports it, and then use the
> iomap_atomic_prot_pfn version for small address space machines which
> have the iomap_atomic_prot_pfn function.

Correct.

> What I think you're suggesting is to just assume that machines
> without iomap_atomic_prot_pfn have address spaces large enough to
> support the ioremap_wc path. The alternative is to create a third
> (slow) path (which I did before the iomap_atomic_prot_pfn API was
> introduced) that uses ioremap_wc at run time for small address space
> machines without iomap_atomic_prot_pfn.
>
> Let me know which you'd prefer and I'll get a patch out ASAP.

Please lets keep it simple: i.e. always use ioremap_wc() when there's
no iomap_atomic_prot_pfn() 32-bit API provided.

( and by all means ioremap_wc() will just work fine on most 32-bit
architectures out of box: they dont go about trying to map hundreds
of megabytes of graphics aperture. If they nevertheless need it,
they can implement iomap_atomic_prot_pfn() to add support. )

Ingo


\
 
 \ /
  Last update: 2008-11-03 09:39    [W:0.111 / U:0.216 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site