This overrides arch_get_addressable_range() on s390 platform and drops now redudant similar check in vmem_add_mapping(). Cc: Heiko Carstens <hca@xxxxxxxxxxxxx> Cc: Vasily Gorbik <gor@xxxxxxxxxxxxx> Cc: David Hildenbrand <david@xxxxxxxxxx> Cc: linux-s390@xxxxxxxxxxxxxxx Cc: linux-kernel@xxxxxxxxxxxxxxx Signed-off-by: Anshuman Khandual <anshuman.khandual@xxxxxxx> --- arch/s390/include/asm/mmu.h | 2 ++ arch/s390/mm/vmem.c | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/arch/s390/include/asm/mmu.h b/arch/s390/include/asm/mmu.h index e12ff0f29d1a..f92d3926b188 100644 --- a/arch/s390/include/asm/mmu.h +++ b/arch/s390/include/asm/mmu.h @@ -55,4 +55,6 @@ static inline int tprot(unsigned long addr) return rc; } +#define arch_get_addressable_range arch_get_addressable_range +struct range arch_get_addressable_range(bool need_mapping); #endif diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c index b239f2ba93b0..e03ad0ed13a7 100644 --- a/arch/s390/mm/vmem.c +++ b/arch/s390/mm/vmem.c @@ -532,14 +532,22 @@ void vmem_remove_mapping(unsigned long start, unsigned long size) mutex_unlock(&vmem_mutex); } +struct range arch_get_addressable_range(bool need_mapping) +{ + struct range memhp_range; + + memhp_range.start = 0; + if (need_mapping) + memhp_range.end = VMEM_MAX_PHYS; + else + memhp_range.end = (1ULL << (MAX_PHYSMEM_BITS + 1)) - 1; + return memhp_range; +} + int vmem_add_mapping(unsigned long start, unsigned long size) { int ret; - if (start + size > VMEM_MAX_PHYS || - start + size < start) - return -ERANGE; - mutex_lock(&vmem_mutex); ret = vmem_add_range(start, size); if (ret) -- 2.20.1