> +#define ioremap_wc(addr, size) ioremap_prot((addr), (size), PROT_NORMAL_NC) > +#define ioremap_np(addr, size) ioremap_prot((addr), (size), PROT_DEVICE_nGnRnE) Please avoid the overly long lines here. Independt of that having a non-trivial body on a separate line tends to generlly be a lot more readable anyway. > +#define ioremap_cache(addr, size) ({ \ > + pfn_is_map_memory(__phys_to_pfn(addr)) ? \ > + (void __iomem *)__phys_to_virt(addr) : ioremap_prot(addr, size, PROT_NORMAL); \ > +}) And this really should be an inline function. > +int iounmap_allowed(void __iomem *addr) > { > /* > * We could get an address outside vmalloc range in case > * of ioremap_cache() reusing a RAM mapping. > */ > + return is_vmalloc_addr(addr) ? 0 : -EINVAL; As the generic ioremap only returns vmalloc addresses, this check really should go into common code.