• Dave Young's avatar
    x86/mm: sparse warning fix for early_memremap · 6b550f6f
    Dave Young authored
    This patch series takes the common bits from the x86 early ioremap
    implementation and creates a generic implementation which may be used by
    other architectures.  The early ioremap interfaces are intended for
    situations where boot code needs to make temporary virtual mappings
    before the normal ioremap interfaces are available.  Typically, this
    means before paging_init() has run.
    
    This patch (of 6):
    
    There's a lot of sparse warnings for code like below: void *a =
    early_memremap(phys_addr, size);
    
    early_memremap intend to map kernel memory with ioremap facility, the
    return pointer should be a kernel ram pointer instead of iomem one.
    
    For making the function clearer and supressing sparse warnings this patch
    do below two things:
    1. cast to (__force void *) for the return value of early_memremap
    2. add early_memunmap function and pass (__force void __iomem *) to iounmap
    
    From Boris:
      "Ingo told me yesterday, it makes sense too.  I'd guess we can try it.
       FWIW, all callers of early_memremap use the memory they get remapped
       as normal memory so we should be safe"
    Signed-off-by: default avatarDave Young <dyoung@redhat.com>
    Signed-off-by: default avatarMark Salter <msalter@redhat.com>
    Acked-by: default avatarH. Peter Anvin <hpa@zytor.com>
    Cc: Borislav Petkov <borislav.petkov@amd.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6b550f6f
ioremap.c 15.2 KB