X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fia64%2Fmm%2Fioremap.c;h=643ccc6960ced30c6fdba1e34042d8def73969bd;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=0c08ce10998026f0dbb25b21beccaa1df8e7bac1;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/arch/ia64/mm/ioremap.c b/arch/ia64/mm/ioremap.c index 0c08ce109..643ccc696 100644 --- a/arch/ia64/mm/ioremap.c +++ b/arch/ia64/mm/ioremap.c @@ -11,43 +11,26 @@ #include #include #include -#include static inline void __iomem * __ioremap (unsigned long offset, unsigned long size) { -#ifdef CONFIG_XEN - offset = HYPERVISOR_ioremap(offset, size); -#endif return (void __iomem *) (__IA64_UNCACHED_OFFSET | offset); } void __iomem * ioremap (unsigned long offset, unsigned long size) { - u64 attr; - unsigned long gran_base, gran_size; + if (efi_mem_attribute_range(offset, size, EFI_MEMORY_WB)) + return phys_to_virt(offset); - /* - * For things in kern_memmap, we must use the same attribute - * as the rest of the kernel. For more details, see - * Documentation/ia64/aliasing.txt. - */ - attr = kern_mem_attribute(offset, size); - if (attr & EFI_MEMORY_WB) - return (void __iomem *) phys_to_virt(offset); - else if (attr & EFI_MEMORY_UC) + if (efi_mem_attribute_range(offset, size, EFI_MEMORY_UC)) return __ioremap(offset, size); /* - * Some chipsets don't support UC access to memory. If - * WB is supported for the whole granule, we prefer that. + * Someday this should check ACPI resources so we + * can do the right thing for hot-plugged regions. */ - gran_base = GRANULEROUNDDOWN(offset); - gran_size = GRANULEROUNDUP(offset + size) - gran_base; - if (efi_mem_attribute(gran_base, gran_size) & EFI_MEMORY_WB) - return (void __iomem *) phys_to_virt(offset); - return __ioremap(offset, size); } EXPORT_SYMBOL(ioremap); @@ -55,9 +38,6 @@ EXPORT_SYMBOL(ioremap); void __iomem * ioremap_nocache (unsigned long offset, unsigned long size) { - if (kern_mem_attribute(offset, size) & EFI_MEMORY_WB) - return NULL; - return __ioremap(offset, size); } EXPORT_SYMBOL(ioremap_nocache);