From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753508AbaJVOBP (ORCPT ); Wed, 22 Oct 2014 10:01:15 -0400 Received: from mx1.redhat.com ([209.132.183.28]:30730 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753088AbaJVOBH (ORCPT ); Wed, 22 Oct 2014 10:01:07 -0400 Message-ID: <5447B859.4040001@redhat.com> Date: Wed, 22 Oct 2014 15:59:53 +0200 From: Paolo Bonzini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: Dominik Dingel , Andrew Morton , linux-mm@kvack.org, Mel Gorman , Michal Hocko , Dave Hansen , Rik van Riel CC: Andrea Arcangeli , Andy Lutomirski , "Aneesh Kumar K.V" , Bob Liu , Christian Borntraeger , Cornelia Huck , Gleb Natapov , Heiko Carstens , "H. Peter Anvin" , Hugh Dickins , Ingo Molnar , Jianyu Zhan , Johannes Weiner , "Kirill A. Shutemov" , kvm@vger.kernel.org, linux390@de.ibm.com, linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, Martin Schwidefsky , Peter Zijlstra , Sasha Levin Subject: Re: [PATCH 2/4] mm: introduce mm_forbids_zeropage function References: <1413976170-42501-1-git-send-email-dingel@linux.vnet.ibm.com> <1413976170-42501-3-git-send-email-dingel@linux.vnet.ibm.com> In-Reply-To: <1413976170-42501-3-git-send-email-dingel@linux.vnet.ibm.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Reviewed-by: Paolo Bonzini On 10/22/2014 01:09 PM, Dominik Dingel wrote: > Add a new function stub to allow architectures to disable for > an mm_structthe backing of non-present, anonymous pages with > read-only empty zero pages. > > Signed-off-by: Dominik Dingel > --- > include/linux/mm.h | 4 ++++ > mm/huge_memory.c | 2 +- > mm/memory.c | 2 +- > 3 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index cd33ae2..0a2022e 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -56,6 +56,10 @@ extern int sysctl_legacy_va_layout; > #define __pa_symbol(x) __pa(RELOC_HIDE((unsigned long)(x), 0)) > #endif > > +#ifndef mm_forbids_zeropage > +#define mm_forbids_zeropage(X) (0) > +#endif > + > extern unsigned long sysctl_user_reserve_kbytes; > extern unsigned long sysctl_admin_reserve_kbytes; > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index de98415..357a381 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -805,7 +805,7 @@ int do_huge_pmd_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, > return VM_FAULT_OOM; > if (unlikely(khugepaged_enter(vma, vma->vm_flags))) > return VM_FAULT_OOM; > - if (!(flags & FAULT_FLAG_WRITE) && > + if (!(flags & FAULT_FLAG_WRITE) && !mm_forbids_zeropage(mm) && > transparent_hugepage_use_zero_page()) { > spinlock_t *ptl; > pgtable_t pgtable; > diff --git a/mm/memory.c b/mm/memory.c > index 64f82aa..f275a9d 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -2640,7 +2640,7 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, > return VM_FAULT_SIGBUS; > > /* Use the zero-page for reads */ > - if (!(flags & FAULT_FLAG_WRITE)) { > + if (!(flags & FAULT_FLAG_WRITE) && !mm_forbids_zeropage(mm)) { > entry = pte_mkspecial(pfn_pte(my_zero_pfn(address), > vma->vm_page_prot)); > page_table = pte_offset_map_lock(mm, pmd, address, &ptl); >