Received: by 2002:a05:7412:8d06:b0:f9:332d:97f1 with SMTP id bj6csp21736rdb; Mon, 18 Dec 2023 07:56:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IFQY6vQOy0cn1X4r9OITRTzRLUmeMa2HQ8Sww7HZtB19GYbAqdHIikNtEyyfGavhB0Hc5ji X-Received: by 2002:aa7:84da:0:b0:6d5:5c89:a9cb with SMTP id x26-20020aa784da000000b006d55c89a9cbmr872673pfn.16.1702914997428; Mon, 18 Dec 2023 07:56:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702914997; cv=none; d=google.com; s=arc-20160816; b=BZSwy086ifIQiti3f9f34RDGJ/yvyGdRmoHrCNcL7Jeus10bUZxitMNzHxEMuMO7W6 NoChqfKDqpPT6c9jmAAJQV228MoaCJ39RPsdJ6LKBONT3+a2vaCMXOC/z1bA1RQ7eT/L /A0NCpEzkq6nDGofS4LghajvJFzfnt5Zi5ab8RbFNjXda6vaKhhHypJWgvP23JTQALA7 HrHGdhMGvg8wf3VonKRfRDesXzgwsmkrSMMrX6pif+wXXhaRxAp2zPAMQlS8QHIXhs+W oYdsSyqv7hQ1Jn3hj9kKOZFyvGOymuTYk2lf+/ldiNo0ygL1mv27904c4cjWxx4C2gBb Usqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id; bh=Aq6LBAlxISqlZyScBvKU7JSRvNJp71SS+vtH37m1ZZU=; fh=GlLzLBhqF07GE0FJUf82nnkBDPyXS9iIZ0BDzvPX32s=; b=YRg7FislfC8s+9Nx0GrOC27PM5Nn/xtx8a+3qx03ciU0zf73kdtVlf0AfsDxwsKoxs U/HSz8eJryYa2ACAmiWwME1Ie10w8xr17lbGA3fJD6f2QYj34lF4/XB1K/C+xDTo+SpX 5Ph1jiiPs+KX9beEiHnd2e+Gl9HKz6m8qprTkdStBb9Yw7mkUnnRJvB+t4LmQaJVSOsk RVq74vM9y8jgx4eT7bNN8xyQAhnbW8FyUUZ1hPNd19uLSuNe/Az3ezGyDu6d5T0f933b 5fNP85cUC0kC+5yL2XpjZGfzuuy+xZMAuV2U5u91MiiFiXRLTkaWdZHWXzXOmbr+qi9y etwA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3992-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3992-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id f19-20020aa78b13000000b006ce542274e1si4903311pfd.99.2023.12.18.07.56.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 07:56:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3992-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3992-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3992-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id D2F71284528 for ; Mon, 18 Dec 2023 15:56:36 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 385DD3D54A; Mon, 18 Dec 2023 15:56:30 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CFBB03D546 for ; Mon, 18 Dec 2023 15:56:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9FCBA2F4; Mon, 18 Dec 2023 07:57:11 -0800 (PST) Received: from [10.57.75.230] (unknown [10.57.75.230]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 84CD13F5A1; Mon, 18 Dec 2023 07:56:25 -0800 (PST) Message-ID: <5ea33aec-86f8-489c-937b-77a53fca20ce@arm.com> Date: Mon, 18 Dec 2023 15:56:23 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 08/39] mm/memory: page_add_file_rmap() -> folio_add_file_rmap_[pte|pmd]() Content-Language: en-GB To: David Hildenbrand , linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, Andrew Morton , "Matthew Wilcox (Oracle)" , Hugh Dickins , Yin Fengwei , Mike Kravetz , Muchun Song , Peter Xu References: <20231211155652.131054-1-david@redhat.com> <20231211155652.131054-9-david@redhat.com> From: Ryan Roberts In-Reply-To: <20231211155652.131054-9-david@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 11/12/2023 15:56, David Hildenbrand wrote: > Let's convert insert_page_into_pte_locked() and do_set_pmd(). While at it, > perform some folio conversion. > > Reviewed-by: Yin Fengwei > Signed-off-by: David Hildenbrand Reviewed-by: Ryan Roberts > --- > mm/memory.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/mm/memory.c b/mm/memory.c > index 6a5540ba3c65..70754fd65788 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -1859,12 +1859,14 @@ static int validate_page_before_insert(struct page *page) > static int insert_page_into_pte_locked(struct vm_area_struct *vma, pte_t *pte, > unsigned long addr, struct page *page, pgprot_t prot) > { > + struct folio *folio = page_folio(page); > + > if (!pte_none(ptep_get(pte))) > return -EBUSY; > /* Ok, finally just insert the thing.. */ > - get_page(page); > + folio_get(folio); > inc_mm_counter(vma->vm_mm, mm_counter_file(page)); > - page_add_file_rmap(page, vma, false); > + folio_add_file_rmap_pte(folio, page, vma); > set_pte_at(vma->vm_mm, addr, pte, mk_pte(page, prot)); > return 0; > } > @@ -4409,6 +4411,7 @@ static void deposit_prealloc_pte(struct vm_fault *vmf) > > vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page) > { > + struct folio *folio = page_folio(page); > struct vm_area_struct *vma = vmf->vma; > bool write = vmf->flags & FAULT_FLAG_WRITE; > unsigned long haddr = vmf->address & HPAGE_PMD_MASK; > @@ -4418,8 +4421,7 @@ vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page) > if (!thp_vma_suitable_order(vma, haddr, PMD_ORDER)) > return ret; > > - page = compound_head(page); > - if (compound_order(page) != HPAGE_PMD_ORDER) > + if (page != &folio->page || folio_order(folio) != HPAGE_PMD_ORDER) > return ret; > > /* > @@ -4428,7 +4430,7 @@ vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page) > * check. This kind of THP just can be PTE mapped. Access to > * the corrupted subpage should trigger SIGBUS as expected. > */ > - if (unlikely(PageHasHWPoisoned(page))) > + if (unlikely(folio_test_has_hwpoisoned(folio))) > return ret; > > /* > @@ -4452,7 +4454,7 @@ vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page) > entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma); > > add_mm_counter(vma->vm_mm, mm_counter_file(page), HPAGE_PMD_NR); > - page_add_file_rmap(page, vma, true); > + folio_add_file_rmap_pmd(folio, page, vma); > > /* > * deposit and withdraw with pmd lock held