Message ID | 20180713063702.54628-11-frankja@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/arch/s390/mm/gmap.c b/arch/s390/mm/gmap.c index cc63e269168e..8b1a293b00d3 100644 --- a/arch/s390/mm/gmap.c +++ b/arch/s390/mm/gmap.c @@ -707,6 +707,12 @@ void gmap_discard(struct gmap *gmap, unsigned long from, unsigned long to) vmaddr |= gaddr & ~PMD_MASK; /* Find vma in the parent mm */ vma = find_vma(gmap->mm, vmaddr); + /* + * We do not discard pages that are backed by + * hugetlbfs, so we don't have to refault them. + */ + if (vma && is_vm_hugetlb_page(vma)) + continue; size = min(to - gaddr, PMD_SIZE - (gaddr & ~PMD_MASK)); zap_page_range(vma, vmaddr, size); }