Messages in this thread | | | Subject | Re: [PATCH] Add io-mapping functions to dynamically map large device apertures | From | Keith Packard <> | Date | Fri, 31 Oct 2008 09:59:29 -0700 |
| |
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.
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.
-- keith.packard@intel.com [unhandled content-type:application/pgp-signature] | |