• Dan Williams's avatar
    memremap: fix highmem support · 182475b7
    Dan Williams authored
    Currently memremap checks if the range is "System RAM" and returns the
    kernel linear address.  This is broken for highmem platforms where a
    range may be "System RAM", but is not part of the kernel linear mapping.
    Fallback to ioremap_cache() in these cases, to let the arch code attempt
    to handle it.
    
    Note that ARM ioremap will WARN when attempting to remap ram, and in
    that case the caller needs to be fixed.  For this reason, existing
    ioremap_cache() usages for ARM are already trained to avoid attempts to
    remap ram.
    
    The impact of this bug is low for now since the pmem driver is the only
    user of memremap(), but this is important to fix before more conversions
    to memremap arrive in 4.4.
    
    Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reported-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Acked-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    182475b7
memremap.c 5.38 KB