From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id DFE84CD1296 for ; Wed, 3 Apr 2024 17:18:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4B5C26B009B; Wed, 3 Apr 2024 13:18:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 462A26B009A; Wed, 3 Apr 2024 13:18:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 271A26B009D; Wed, 3 Apr 2024 13:18:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id F1EE76B009A for ; Wed, 3 Apr 2024 13:18:42 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 9EE83804ED for ; Wed, 3 Apr 2024 17:18:42 +0000 (UTC) X-FDA: 81968880084.13.971F528 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf12.hostedemail.com (Postfix) with ESMTP id 0630140013 for ; Wed, 3 Apr 2024 17:18:40 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=NUlsT+40; spf=none (imf12.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712164721; a=rsa-sha256; cv=none; b=wsWbmxM//hbGIRTFFRU3kbiYlkh/YkSdtIgNbzvJbG/Ov55PyTziWAJXaihEq7qKtUWgpc DStiS5C2vY4q0XZDfERv9HVqLanSm5GPtgC6svx5yqSrv5B7vG4Fhu2dt7wPAyFYTgpMCw yebBcOYmYvm2v4oEnXrnNfnin96TKNc= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=NUlsT+40; spf=none (imf12.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712164721; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=5KBtkk4C2+I/o/hutHRiC/1J57LW7EKPaByhsL0golM=; b=HRYW08z8ZWpOYavo6Zb2qNkbH+ShVxrIlOrmxqNFv8r+oJZhd26jqH+/fZ3312secnmBwg Ar4GwRieFbxj/M2bXCFP69IaBfurEw/yEfu/zUpozM1m6OxfKy3EnzjmCEEkh4R5xLNKh6 3gzKM6DNrmtO2wYC94fNW89VOzSU+F8= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=5KBtkk4C2+I/o/hutHRiC/1J57LW7EKPaByhsL0golM=; b=NUlsT+40l7HiXtADmpUTWeaX81 +DieXbymEwvrPee2WghryCMwA0Wadmim2Md6kDqIcs6ePpzvuBbYb+/21/IEwmC4STnLSuRXSCNnV 9i3MfuUG5tTrDEclTSBgFqq0wQ3v3mkryU1oonAusU3J6BxLdnmraBqQ82k+ZlGoxA6381RM/+MIL q4jv4zJ5JPOW2gS88h5wg4GymUzzygU/50zsfgxZ6aNoq4w64U6I0kJp46vzunc71zy7Zwvf1KTvr DumcksijvHFdI5l/KtvlKLtOxdLlpdYXQNLPKRDFbDM0sUohJN99LrM5ZEqnVcDa34tZZz98AsTeF 5B//n8tA==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rs4Fz-0000000648s-2lrz; Wed, 03 Apr 2024 17:18:39 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org Subject: [PATCH 4/7] khugepaged: Pass a folio to __collapse_huge_page_copy() Date: Wed, 3 Apr 2024 18:18:33 +0100 Message-ID: <20240403171838.1445826-5-willy@infradead.org> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240403171838.1445826-1-willy@infradead.org> References: <20240403171838.1445826-1-willy@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 0630140013 X-Stat-Signature: ho6wydsddei3icyw8h4myxueyu3xfqhy X-Rspam-User: X-HE-Tag: 1712164720-527214 X-HE-Meta: U2FsdGVkX1+93yCu1DlR/fqZ30ZBOvgur+Vwa7qvzxMITV9oCkWIckAqT0YMSixX/gqT2magyB3G5eR878DM5lFLJz5lglFlk++Cu7HEc1ZscTs9J77tKz+AGm5MGOEydvAW/F7EEMfxVKj10LqccXmTV3GMdKc3g31WfAemLyRTenOis6tMq98fHD5GkiVTTkfmWTZp7PbTDQObIU7TwzCb7/URfLhsVZgKA6ZLs6yLuqa0EJE5u8AJUIEtdzaLVTY+B94MLxUi9kcGfqJrhkMcKCgM4dLnb3BL8th3b4zyrsuOqE9oQByNi5eTStYblAKJf5BMApuZ5qV8f3TSIQrUcpO/7t3KDCMwii+wx+ZDhhjueF5GHpzXGCTKzCOzM3PTVvXybsjiYW07mbkFl8fXC5fyOLkJB8/paQSw6png1DT4uC+w2ySMFN0pr/qDTS5ZQ0dSEnEQih2qjKBAQQqKrpAAWMDlFzYvOx9QvIxoM4taSdF3pQqolWcDsN3xtnavysdyjJMOFtKwr18J/1L7Fp+NHgDGNtjosuWzgpQ/IPZ5rvzekmw8DLntrNcvhgNw4reTHnZjfDqoJsc/R3WMn2qwxykRfuiCHoaB22K+tnlM95zEwvQW4Qt1lrGAhO66STusvV0vvLITzywj4tOSdQmbjtbPeVkfcse5isJqQP+s2PH+oW88UnARAK0f7ECJTh11aZqDI9ca/kdqdCzuF9iLKiPAxyjhVQtT6FcYgAxBTukT1yHZJ+saS0ijAnell7ThoR42iHMPouc+jQviOwnubAWmvfyDUaV63LDaXxO9XAMFPDqHDfqtJ5tjZFYlrRxEYhgIFn2oKKbxViK5cbMdFX5+KxSEly3lsLutvNF50RYh7+3L+I4e6hudsKpVSM89pl3mKcS8oo1X5F7ER+/owKl8LFQtxXkJWEeJ3v67zwQ0o5ZcutyVKaiKrUYySEToo8r66QBAX/1 gWTZ2Akk C+3UIvA9dytolekFRnCkzR3PQdM1ndc0NPlZ8abup9rqh4zVg0Qavvc+NTDV/kLt/n+EUQbTj0LtIkB2j7mGrkFyFAdkUdLOZsJ0zwFF60o4Sn5jwDr9MvGpdJuUwW+sb2N8jfXILFEmEaN2bPbGaqhPFK2fQfof0N2rgJ1wvbFPEV2O6bEueHeHHVoLyrK+9SLpc3Kyy7ikhPKfPIrQYmNwo90aj5PGAtzD8 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Simplify the body of __collapse_huge_page_copy() while I'm looking at it. Signed-off-by: Matthew Wilcox (Oracle) --- mm/khugepaged.c | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 1c99d18602e5..71a4119ce3a8 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -767,7 +767,7 @@ static void __collapse_huge_page_copy_failed(pte_t *pte, * Returns SCAN_SUCCEED if copying succeeds, otherwise returns SCAN_COPY_MC. * * @pte: starting of the PTEs to copy from - * @page: the new hugepage to copy contents to + * @folio: the new hugepage to copy contents to * @pmd: pointer to the new hugepage's PMD * @orig_pmd: the original raw pages' PMD * @vma: the original raw pages' virtual memory area @@ -775,33 +775,29 @@ static void __collapse_huge_page_copy_failed(pte_t *pte, * @ptl: lock on raw pages' PTEs * @compound_pagelist: list that stores compound pages */ -static int __collapse_huge_page_copy(pte_t *pte, - struct page *page, - pmd_t *pmd, - pmd_t orig_pmd, - struct vm_area_struct *vma, - unsigned long address, - spinlock_t *ptl, - struct list_head *compound_pagelist) +static int __collapse_huge_page_copy(pte_t *pte, struct folio *folio, + pmd_t *pmd, pmd_t orig_pmd, struct vm_area_struct *vma, + unsigned long address, spinlock_t *ptl, + struct list_head *compound_pagelist) { - struct page *src_page; - pte_t *_pte; - pte_t pteval; - unsigned long _address; + unsigned int i; int result = SCAN_SUCCEED; /* * Copying pages' contents is subject to memory poison at any iteration. */ - for (_pte = pte, _address = address; _pte < pte + HPAGE_PMD_NR; - _pte++, page++, _address += PAGE_SIZE) { - pteval = ptep_get(_pte); + for (i = 0; i < HPAGE_PMD_NR; i++) { + pte_t pteval = ptep_get(pte + i); + struct page *page = folio_page(folio, i); + unsigned long src_addr = address + i * PAGE_SIZE; + struct page *src_page; + if (pte_none(pteval) || is_zero_pfn(pte_pfn(pteval))) { - clear_user_highpage(page, _address); + clear_user_highpage(page, src_addr); continue; } src_page = pte_page(pteval); - if (copy_mc_user_highpage(page, src_page, _address, vma) > 0) { + if (copy_mc_user_highpage(page, src_page, src_addr, vma) > 0) { result = SCAN_COPY_MC; break; } @@ -1196,7 +1192,7 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address, */ anon_vma_unlock_write(vma->anon_vma); - result = __collapse_huge_page_copy(pte, &folio->page, pmd, _pmd, + result = __collapse_huge_page_copy(pte, folio, pmd, _pmd, vma, address, pte_ptl, &compound_pagelist); pte_unmap(pte); -- 2.43.0