> +# ifndef ARCH_NEEDS_KMAP_HIGH_GET
> +static inline void *arch_kmap_temporary_high_get(struct page *page)
> +{
> +     return NULL;
> +}
> +# endif

Turn this into a macro and use #ifndef on the symbol name?

> +static inline void __kunmap_atomic(void *addr)
> +{
> +     kumap_atomic_indexed(addr);
> +}
> +
> +
> +#endif /* CONFIG_KMAP_ATOMIC_GENERIC */

Stange double empty line above the endif.

> -#define kunmap_atomic(addr)                                     \
> -do {                                                            \
> -     BUILD_BUG_ON(__same_type((addr), struct page *));       \
> -     kunmap_atomic_high(addr);                                  \
> -     pagefault_enable();                                     \
> -     preempt_enable();                                       \
> -} while (0)
> -
> +#define kunmap_atomic(addr)                                          \
> +     do {                                                            \
> +             BUILD_BUG_ON(__same_type((addr), struct page *));       \
> +             __kunmap_atomic(addr);                                  \
> +             preempt_enable();                                       \
> +     } while (0)

Why the strange re-indent to a form that is much less common and less
readable?

> +void *kmap_atomic_pfn_prot(unsigned long pfn, pgprot_t prot)
> +{
> +     pagefault_disable();
> +     return __kmap_atomic_pfn_prot(pfn, prot);
> +}
> +EXPORT_SYMBOL(kmap_atomic_pfn_prot);

The existing kmap_atomic_pfn & co implementation is EXPORT_SYMBOL_GPL,
and this stuff should preferably stay that way.

Reply via email to