From patchwork Thu Feb 29 21:20:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13577663 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 691BCC54798 for ; Thu, 29 Feb 2024 21:20:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F0E386B009B; Thu, 29 Feb 2024 16:20:57 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E95176B009C; Thu, 29 Feb 2024 16:20:57 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D36296B009D; Thu, 29 Feb 2024 16:20:57 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id C470A6B009B for ; Thu, 29 Feb 2024 16:20:57 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 99F0D16041E for ; Thu, 29 Feb 2024 21:20:57 +0000 (UTC) X-FDA: 81846111354.02.E52D78B Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf03.hostedemail.com (Postfix) with ESMTP id EF61820018 for ; Thu, 29 Feb 2024 21:20:55 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="EZ/zKWIO"; dmarc=none; spf=none (imf03.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709241656; 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=WIIjR8YSK2/M2cI4aB2urA8EdxfJX9fwxdkntR2rEZU=; b=kSyllKzz0X2YRPscyME2i6w7gfntp7PtE+KaQpjVJEbaLZ0GYImM+Txzzvho+aXECcMFKC FQwjQDNOo2/4OkOwWC8pFO6n4efD0gZbMU0OLlfZgmUwND3VqxSPD1eIdNcK6m0Qcl61pD px8ntjLTnlbIf75OXqMZoqicym9AuCc= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="EZ/zKWIO"; dmarc=none; spf=none (imf03.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709241656; a=rsa-sha256; cv=none; b=t94YTlrVtIr3NbA32cgQfoE8MesrZEc/GrDwijWrkkjbe+6+dzK8ju7/eApcTH2NO9/xoM k45455egIITRB2aqPScrzKbpceOaVFbB40Oo10emRZzsgCw8fZvC0Vvv7JTLdL9yf+7Xl2 kvR+QwshVpq/uVBdO+32sS7mcYBDGFo= 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=WIIjR8YSK2/M2cI4aB2urA8EdxfJX9fwxdkntR2rEZU=; b=EZ/zKWIOh4/xGYNZlKkjT7JbJO i8OP/jCLyI+yVfmLvomh7ClTpg/DcaeX9ZCReD/BdLjh7HdxChTZzlBc1CxgTzyKZqXEGH+H/EqBZ c7XMLVTSWTQ7CXPetdNfNX40Lv7QykherbVGdpD+GMDKjUa3ICOaeeqjP+qkFIGCdy/zud1b+X61o 81INd7s9BtyIXOWVZhqjtNFdJhBDxOze0J+qvzwv5ihU2rrIS1bNuwro5MEVyapgv9AeMXmKcSib+ 820+qFbXI+v+54U/ylp5MCm7mVULkDfIHgEqHTZzOTe/o8OCwPNxnoTXcmA5eXrRFiPe6hWHhGFNQ +xoSneCw==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfnpV-0000000949V-2SPR; Thu, 29 Feb 2024 21:20:37 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Miaohe Lin , Naoya Horiguchi , Dan Williams Subject: [PATCH 1/8] mm/memory-failure: Remove fsdax_pgoff argument from __add_to_kill Date: Thu, 29 Feb 2024 21:20:27 +0000 Message-ID: <20240229212036.2160900-2-willy@infradead.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240229212036.2160900-1-willy@infradead.org> References: <20240229212036.2160900-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: EF61820018 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: nddy9zha5x491qa4kga8ydawe5r4ofbm X-HE-Tag: 1709241655-215281 X-HE-Meta: U2FsdGVkX1+fx1bwMebk9Sc/W2POm+FAAVNinmE97AlEpxi5LkpSJmSvLUOEpU01PDEY0GjqAO4JuK+OJ2SEJuyg2h3b9HGc4Qv9qZNM8NUZ4wMlf3rqqpmt9eFcZXlere8staRoyJ3jIoup5gQWhG8homk1aeZSrqUgo0H4zCG3f5wTfPWfoiqOXepQ7LJ9IB3bQtzWF1io+K5JHy/9DtMK9cyuvJrjjzlFvibTTcVi5WE/B4cu8X9SL7wXp9vRMT2P8jd5OJhQLRFQsB8VCcqQyNJTqtnUTkNBP0VLlgTCU23bKcuCp/hJuD3f7tkJNm0of5bO85IWYUOal/oUajXHqkstVoh2hQpTp10c1cStvlXJTDMHj0bUB3WNGgDRGjkmjgE95CStEHdzBd+pxuf7t85b2ZuLOBQGT0AGZj8x3lXkzHx4NhvALg/a9gAtGFxNUvC0ofSMD5nE0LfUaC/GVgIpCW67sOl4S+5cXzLXJtUZKZQ62u9BULidPjlSPohKuW6ocIZVoUnirjrPCApgohuLAflXK+TZh/31nnITBaiLiEI3xu0R/MDR+NrrNQyhoxgWaVXM9+Xz0m49d91XFfaZ10doNf9bVehNz94TIZJJaRCvQzfN31qBkTzpwfi9lV78Tw1IDSGus54gpaW1hMRYyJwm7eHJ9Tx3EViZ1mp1zN4U4Ju5l3uOHxzBSL+044EaQn99MLoVfchIuVedgWDlvgOZlihDozhB6eE1ol+urdWXCjBDprdan9L+L5UyjmjmReYHzwcE2WJ+d/1FyV3GnLHegTPCyljfSWyQrxnoQAGdbKh078QpFoV67wmUDTFmPJWWxcdOnQn+9CLpvdmvdYBXOWO6arDXxfMIA/soSb5GI/3BjrBig5SliWLyKT56mXCUJY4BMMI0RqIMdzwlJZ0Ha8hyIUm3KIfjZdXGOF+kOAyyfF4kfy0NEPOr7kvs5za/TlNMX4v YI6Fat6Y SQuPayDlDR1ac9QEb7BN0FaQNSwd9C5bATVrd5RJAFa6w+Tw6uSkBOtde/bzEvbG+5HDPQtaVzhue8yTViY4PXZ8loPmHUybHBY7+EZ1zlg5orQnfZqCXIe0Qblpnab/ImQxCNom7dfIT7uPmJ6CUzJYrXgEcyyj6ooAEaA+bZckpNRH86WaUu+zgDxPsRtq6UJW2Gej0GHgre6mntZzReUusKWsMKgKzKA9wiIObykJXni0tO2v8MYaoFQ== 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: Unify the KSM and DAX codepaths by calculating the addr in add_to_kill_fsdax() instead of telling __add_to_kill() to calculate it. Signed-off-by: Matthew Wilcox (Oracle) Cc: Dan Williams Acked-by: Miaohe Lin Reviewed-by: Jane Chu Reviewed-by: Dan Williams --- mm/memory-failure.c | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 9349948f1abf..9356227a50bb 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -416,21 +416,13 @@ static unsigned long dev_pagemap_mapping_shift(struct vm_area_struct *vma, * not much we can do. We just print a message and ignore otherwise. */ -#define FSDAX_INVALID_PGOFF ULONG_MAX - /* * Schedule a process for later kill. * Uses GFP_ATOMIC allocations to avoid potential recursions in the VM. - * - * Note: @fsdax_pgoff is used only when @p is a fsdax page and a - * filesystem with a memory failure handler has claimed the - * memory_failure event. In all other cases, page->index and - * page->mapping are sufficient for mapping the page back to its - * corresponding user virtual address. */ static void __add_to_kill(struct task_struct *tsk, struct page *p, struct vm_area_struct *vma, struct list_head *to_kill, - unsigned long ksm_addr, pgoff_t fsdax_pgoff) + unsigned long addr) { struct to_kill *tk; @@ -440,12 +432,10 @@ static void __add_to_kill(struct task_struct *tsk, struct page *p, return; } - tk->addr = ksm_addr ? ksm_addr : page_address_in_vma(p, vma); - if (is_zone_device_page(p)) { - if (fsdax_pgoff != FSDAX_INVALID_PGOFF) - tk->addr = vma_pgoff_address(fsdax_pgoff, 1, vma); + tk->addr = addr ? addr : page_address_in_vma(p, vma); + if (is_zone_device_page(p)) tk->size_shift = dev_pagemap_mapping_shift(vma, tk->addr); - } else + else tk->size_shift = page_shift(compound_head(p)); /* @@ -475,7 +465,7 @@ static void add_to_kill_anon_file(struct task_struct *tsk, struct page *p, struct vm_area_struct *vma, struct list_head *to_kill) { - __add_to_kill(tsk, p, vma, to_kill, 0, FSDAX_INVALID_PGOFF); + __add_to_kill(tsk, p, vma, to_kill, 0); } #ifdef CONFIG_KSM @@ -493,10 +483,10 @@ static bool task_in_to_kill_list(struct list_head *to_kill, } void add_to_kill_ksm(struct task_struct *tsk, struct page *p, struct vm_area_struct *vma, struct list_head *to_kill, - unsigned long ksm_addr) + unsigned long addr) { if (!task_in_to_kill_list(to_kill, tsk)) - __add_to_kill(tsk, p, vma, to_kill, ksm_addr, FSDAX_INVALID_PGOFF); + __add_to_kill(tsk, p, vma, to_kill, addr); } #endif /* @@ -670,7 +660,8 @@ static void add_to_kill_fsdax(struct task_struct *tsk, struct page *p, struct vm_area_struct *vma, struct list_head *to_kill, pgoff_t pgoff) { - __add_to_kill(tsk, p, vma, to_kill, 0, pgoff); + unsigned long addr = vma_pgoff_address(pgoff, 1, vma); + __add_to_kill(tsk, p, vma, to_kill, addr); } /* From patchwork Thu Feb 29 21:20:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13577661 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 60A53C54798 for ; Thu, 29 Feb 2024 21:20:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AB05C6B0098; Thu, 29 Feb 2024 16:20:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9DACD6B0099; Thu, 29 Feb 2024 16:20:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 87AF66B009B; Thu, 29 Feb 2024 16:20:51 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7A7686B0098 for ; Thu, 29 Feb 2024 16:20:51 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 5A66A403E0 for ; Thu, 29 Feb 2024 21:20:51 +0000 (UTC) X-FDA: 81846111102.01.0080F88 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf24.hostedemail.com (Postfix) with ESMTP id DD744180026 for ; Thu, 29 Feb 2024 21:20:49 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=PjmFL1Pf; spf=none (imf24.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=1709241650; 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=rya1zlsULsETzm/GlmljPwgeJ3mzf+dS6TYF2G2lgAo=; b=CnPp06Aw9RccvLuA2PZFx9upRc5L9biyl787weWIIrQ/wrDe5wDqLyV26HzKcDhpWHF10f pzVE3XT+1mgwPHIBFdy/xmjPspoKZAIocymkNhQXz2CXs2QJqRt+NoFK6WVO64EBGVaTCr U4pIsTm7uDn0g4YFJv40iT7OL2RNVi4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709241650; a=rsa-sha256; cv=none; b=0oBy3GwPOS/WVoVYwG7LyQ7tKzi4OLxAa3+PsFC2MBxkZsI09jo3xqcgjKBbVSRsqr1y3L MLTz/dor/vSlcF2BS/rokqMQeDcs1amh4RZ6/SelFzzayxB/SqS1RwS2g4REgOUbxPYLsY Rh8BfPZeF5UJAHCzvXOP3ZngZlDWISY= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=PjmFL1Pf; spf=none (imf24.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none 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=rya1zlsULsETzm/GlmljPwgeJ3mzf+dS6TYF2G2lgAo=; b=PjmFL1PfcYX4M83CrIJVZ32W1Z ql9mm3beilHg9iG7pANyDoH2hkJOcVxeVt8OcVi6RAzCKL72RlkwMjT3O+jUCj5ZOTKnJU6jSUhw4 MjzlHh+ngmiuB0TMpYlrGAuK16QqKNL7j4Je6mwpOhih1yUwZzNqw1ShwN14zd4+h5SmtuK2h5xvm DP/5OhRQGC37T1hyBNOG67UPR8W1TUFRBUkxQkFO80WNKhCrbBfkJb7kkNE38kD2VzUhNqkUcq9sV WNQZ7VC5J+5oLYDYTIF022zx6noKCohDbpe+lA3ncYGs1gDwXLi5bxRL2evYpFWrq439k4q0Js3ip ABlOYrjQ==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfnpV-0000000949Y-2own; Thu, 29 Feb 2024 21:20:37 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Miaohe Lin , Naoya Horiguchi , Longlong Xia Subject: [PATCH 2/8] mm/memory-failure: Pass addr to __add_to_kill() Date: Thu, 29 Feb 2024 21:20:28 +0000 Message-ID: <20240229212036.2160900-3-willy@infradead.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240229212036.2160900-1-willy@infradead.org> References: <20240229212036.2160900-1-willy@infradead.org> MIME-Version: 1.0 X-Stat-Signature: nrpp1g3pdza68hg84u7prxa7xkdc3km7 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: DD744180026 X-Rspam-User: X-HE-Tag: 1709241649-426116 X-HE-Meta: U2FsdGVkX1/YqZDochCMXF6VH7l2upyYRJ7eaTNvFHi8lAZdNub+TZdgsAVwd9RQr7knOTS/puIxz891h/++EVLjODXE6rdDU65QN+G+x8oVqEbCalUOaLjPu4Rs8gk0PKD9tNT2/EgsTtzyb5rFT8QTb0KAaMu2aQ6dTMus/nbPvs2+ezqesYr3WDjY7uYxv2FKCSKX5uI49Qd8IWKQaYX0I6dx/Dbg9AfqbbNMZ5pp4W1pioOQhEpy6yQpHi3+B+7b2UTtjHvU0yN/xTJmVr3MCVeHP9lpE/TemUObWUmKdT6E3ff1jfsa/P+8Ejt5eMGhig814RzKy52pm3pJIv0xJJoV2TFyGv34N4ZK4um0X7QwGDm/wnUsqJua49jeawvA4PBTPKXvViIckUKBUPRoV9KXFq0oXC40aM4qGzUewyQxdO6nfVBEYJk3NofqgEKXjWlaAyvSfKtnclOj+xFcEFJWGiOEEiFysdzm+frlRhN482sT7GuOjKBHClNthEqTNhaDRRhvmVHJRmXjFnWhhiEfw2AVmcFHTpfJfBNzJ8cdk/lM1YJNU2OphHhmpX9TnEulPsIvO/Ceh+/fzDc/rSfyg3hsLlQFxL9hjq2u3OnXkcphqhcW7WowwErJxQKe1HLswM7JVbzWH+HulYd6k0sCaqw7foQm3S6aHhlTWmwE0FsdxeG6NVzMQdr+GCHeH/pDiqzhF9K9AE2D1FkeqIzSAxQL+sLvzDXb7EUnuVAPRy9tQYmi1dCS9qt2dcu04nFt9e5deSbsWDRQXTkYSk0sOiQOg/kOXXEnpS5MmMThfjpA5KuSHIAH+eCMW+DEVvrM+7A4uDqeAtt48MXXzwltYdHYeAJ7mXtwCFJCzyeJ523B1q1DL+rohs6ZghPw2ojm+CZXv/XUIYm0CzwwrWUS6WRV 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: Handle anon/file folios the same way as KSM & DAX folios by passing in the address. Signed-off-by: Matthew Wilcox (Oracle) Cc: Longlong Xia Acked-by: Miaohe Lin --- mm/memory-failure.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 9356227a50bb..7f8473c08ae3 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -432,7 +432,7 @@ static void __add_to_kill(struct task_struct *tsk, struct page *p, return; } - tk->addr = addr ? addr : page_address_in_vma(p, vma); + tk->addr = addr; if (is_zone_device_page(p)) tk->size_shift = dev_pagemap_mapping_shift(vma, tk->addr); else @@ -465,7 +465,8 @@ static void add_to_kill_anon_file(struct task_struct *tsk, struct page *p, struct vm_area_struct *vma, struct list_head *to_kill) { - __add_to_kill(tsk, p, vma, to_kill, 0); + unsigned long addr = page_address_in_vma(p, vma); + __add_to_kill(tsk, p, vma, to_kill, addr); } #ifdef CONFIG_KSM @@ -481,6 +482,7 @@ static bool task_in_to_kill_list(struct list_head *to_kill, return false; } + void add_to_kill_ksm(struct task_struct *tsk, struct page *p, struct vm_area_struct *vma, struct list_head *to_kill, unsigned long addr) From patchwork Thu Feb 29 21:20:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13577659 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 3132EC48BF6 for ; Thu, 29 Feb 2024 21:20:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B62B86B008C; Thu, 29 Feb 2024 16:20:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B12E46B0093; Thu, 29 Feb 2024 16:20:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9D9A26B0095; Thu, 29 Feb 2024 16:20:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 8C7336B008C for ; Thu, 29 Feb 2024 16:20:45 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 2E1FC1A1334 for ; Thu, 29 Feb 2024 21:20:45 +0000 (UTC) X-FDA: 81846110850.20.A1C7EE2 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf25.hostedemail.com (Postfix) with ESMTP id 4CCF8A0019 for ; Thu, 29 Feb 2024 21:20:43 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=huq3fmeQ; spf=none (imf25.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=1709241643; 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=V871v9cpaT/ZiLQVfOfBMAPSUFcA86Nc3lP+LQjntow=; b=OkR0+LTx9fAcbSdbSP3QI5FhtZNzRP5clPOwrQOKEPIpH7mS+RHU9NXnSHViIjuuc8MBhL nVPsg/XLJSTsw2OEeOZIAG/S+GtMG55PjPLX7YktDEoS+gfO45HsAb1pV4e1WOG+RcbchU +DtN1izMc1e9M7DsMntLdy3p5s2Rux0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709241643; a=rsa-sha256; cv=none; b=Uxbir6hjCTR9VkggPvBIpB8InzgXRygoKnrK0zPm76/jlQEP5wkKb1CEWCw7njn1IwMg6w NdhX0kT9QLsNtil6BYQCns6QnD/7jUcoO+UcfqRDIBxvhb9M5J+soeNxkpIRCi+eeaESfV 1bTyp7jjDsY85qqWaz3/lBTuNFDHZuE= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=huq3fmeQ; spf=none (imf25.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none 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=V871v9cpaT/ZiLQVfOfBMAPSUFcA86Nc3lP+LQjntow=; b=huq3fmeQGBhvDDIpssUY1ObY+y uZBiSjvEci25W+X7Z931HtrE1QepnbDXjHmrQ6y9wUpQIZp0/8JpAw1RfSJmilhIxqD93r9qnJENe egAvVUVJ5xYw/PjsYae7BqtVsJI2qir0TkkWdFNG4ZFb58Gf6nklvd8QtQ/uXPj6xAWLvqbHvS9AO uGF7zxU8HlWxxZSFLVoZ78R18gxFafFXlgTqJhO1ERnBAJFwRgrJzaUN6ePOlEnTuxZMlh5bEUz9k qXQRcOatQmLgYM0rsbeyN1tiCgr0vJi6QOrHWSgk9q/dzt8G1waWkdgFQ1/FiAIgeOUacol634U1U AlAYehaw==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfnpV-0000000949a-351I; Thu, 29 Feb 2024 21:20:37 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Miaohe Lin , Naoya Horiguchi Subject: [PATCH 3/8] mm: Return the address from page_mapped_in_vma() Date: Thu, 29 Feb 2024 21:20:29 +0000 Message-ID: <20240229212036.2160900-4-willy@infradead.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240229212036.2160900-1-willy@infradead.org> References: <20240229212036.2160900-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 4CCF8A0019 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: g93dictsxa7gezioefzacbk7fkg8aknh X-HE-Tag: 1709241643-211965 X-HE-Meta: U2FsdGVkX1+YSIbHiDGNnkBR7NzDfjy7NLyoR4Ia5HfHhWhC8l6eOQPmch2SKtuXePPwPxR0pu+VXVry32BYwJM/EqQaVEEktWNyIl5P8F3OJDAr3cV5/NZhlceN7CcE7Zz5CyyiHsLbNc0e9di+57EamXzSqyf9lw9ltez5XNd2K7NCjkwcomz9g6tvyqTRSl3ldk2L7FsK3U8Fq5NFVl58ChtKLrLprQ3mUQF8Ynff1GcUSLMnNDC5x7pNihhqKjG3a1XEaU1GtMW3TKabpqtaFShCE3PJoaXX0bdZazvcDTWUGrIOG96LZx5l+ZjvlCUwEHzw+nxYhQt6bIuY6Q5t8P39Iv4xiY6H6OY17AeeGmtbPB7UkIdZhU2ndGeGEYPpY1bnS/hq/ukhxAiqfNbjea02l2P3Is85HPKrn1SyNicuGwjw30TntakaZQdicXn6kw4EPLSsPKVFYtdJyruiQLLGcFB2sLajOgEJYPlBC2A6fCLPLwDyC1yc/An50/I0MJ8VvJEnc2jFrMtSL4uSOs913Ns1PH8bwMCZhdSr5ZaYJo9I49eg9dCd4M9tYQK4XIIm+xkQ7rlqjpwWZKePy3l1MsRGh/vhJYFCJL9NJbtT5CYwStzgNHT38rKVo8vwHKiweofjZ6D+i4SsSiEIp2wx4fwM28AWX8PZJwFrEOqlBWAC8nzZwfi0pnE2MjbwFIpdecp5KiWf4/C0HlyIq4p7FpdIUuHpsK7405likJ/kt57AEwVvfBXt4nVZezezrfGu9HNwrFJ+0DiGcJnIe4RDMV7WG0yoVHNZKUD2fTpmVzkXuDezQl9Sc2gL1IL/Ja87lqolBQ7b/SM3pNlLfN2u4V9LZXqoIkpNNAXvaZO6pn3+K6q7ou/OdQ818FEHWu+i6sU4rxwa8R2g2PvaX+Jh62Qu 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: The only user of this function calls page_address_in_vma() immediately after page_mapped_in_vma() calculates it and uses it to return true/false. Return the address instead, allowing memory-failure to skip the call to page_address_in_vma(). Signed-off-by: Matthew Wilcox (Oracle) Acked-by: Miaohe Lin --- include/linux/rmap.h | 2 +- mm/memory-failure.c | 22 ++++++++++++++-------- mm/page_vma_mapped.c | 14 +++++++------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/include/linux/rmap.h b/include/linux/rmap.h index b7944a833668..ba027a4d9abf 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h @@ -698,7 +698,7 @@ int pfn_mkclean_range(unsigned long pfn, unsigned long nr_pages, pgoff_t pgoff, void remove_migration_ptes(struct folio *src, struct folio *dst, bool locked); -int page_mapped_in_vma(struct page *page, struct vm_area_struct *vma); +unsigned long page_mapped_in_vma(struct page *page, struct vm_area_struct *vma); /* * rmap_walk_control: To control rmap traversing for specific needs diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 7f8473c08ae3..40a8964954e5 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -462,10 +462,11 @@ static void __add_to_kill(struct task_struct *tsk, struct page *p, } static void add_to_kill_anon_file(struct task_struct *tsk, struct page *p, - struct vm_area_struct *vma, - struct list_head *to_kill) + struct vm_area_struct *vma, struct list_head *to_kill, + unsigned long addr) { - unsigned long addr = page_address_in_vma(p, vma); + if (addr == -EFAULT) + return; __add_to_kill(tsk, p, vma, to_kill, addr); } @@ -609,12 +610,13 @@ static void collect_procs_anon(struct folio *folio, struct page *page, continue; anon_vma_interval_tree_foreach(vmac, &av->rb_root, pgoff, pgoff) { + unsigned long addr; + vma = vmac->vma; if (vma->vm_mm != t->mm) continue; - if (!page_mapped_in_vma(page, vma)) - continue; - add_to_kill_anon_file(t, page, vma, to_kill); + addr = page_mapped_in_vma(page, vma); + add_to_kill_anon_file(t, page, vma, to_kill, addr); } } rcu_read_unlock(); @@ -642,6 +644,8 @@ static void collect_procs_file(struct folio *folio, struct page *page, continue; vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff) { + unsigned long addr; + /* * Send early kill signal to tasks where a vma covers * the page but the corrupted page is not necessarily @@ -649,8 +653,10 @@ static void collect_procs_file(struct folio *folio, struct page *page, * Assume applications who requested early kill want * to be informed of all such data corruptions. */ - if (vma->vm_mm == t->mm) - add_to_kill_anon_file(t, page, vma, to_kill); + if (vma->vm_mm != t->mm) + continue; + addr = page_address_in_vma(page, vma); + add_to_kill_anon_file(t, page, vma, to_kill, addr); } } rcu_read_unlock(); diff --git a/mm/page_vma_mapped.c b/mm/page_vma_mapped.c index 74d2de15fb5e..e9e208b4ac4b 100644 --- a/mm/page_vma_mapped.c +++ b/mm/page_vma_mapped.c @@ -319,11 +319,11 @@ bool page_vma_mapped_walk(struct page_vma_mapped_walk *pvmw) * @page: the page to test * @vma: the VMA to test * - * Returns 1 if the page is mapped into the page tables of the VMA, 0 - * if the page is not mapped into the page tables of this VMA. Only - * valid for normal file or anonymous VMAs. + * Return: If the page is mapped into the page tables of the VMA, the + * address that the page is mapped at. -EFAULT if the page is not mapped. + * Only valid for normal file or anonymous VMAs. */ -int page_mapped_in_vma(struct page *page, struct vm_area_struct *vma) +unsigned long page_mapped_in_vma(struct page *page, struct vm_area_struct *vma) { struct page_vma_mapped_walk pvmw = { .pfn = page_to_pfn(page), @@ -334,9 +334,9 @@ int page_mapped_in_vma(struct page *page, struct vm_area_struct *vma) pvmw.address = vma_address(page, vma); if (pvmw.address == -EFAULT) - return 0; + return -EFAULT; if (!page_vma_mapped_walk(&pvmw)) - return 0; + return -EFAULT; page_vma_mapped_walk_done(&pvmw); - return 1; + return pvmw.address; } From patchwork Thu Feb 29 21:20:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13577664 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 71C1FC54798 for ; Thu, 29 Feb 2024 21:21:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 042076B009C; Thu, 29 Feb 2024 16:21:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E6EE26B009D; Thu, 29 Feb 2024 16:21:00 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D0EDD6B009E; Thu, 29 Feb 2024 16:21:00 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id C382B6B009C for ; Thu, 29 Feb 2024 16:21:00 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 97A16141285 for ; Thu, 29 Feb 2024 21:21:00 +0000 (UTC) X-FDA: 81846111480.15.6089642 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf19.hostedemail.com (Postfix) with ESMTP id E47001A001B for ; Thu, 29 Feb 2024 21:20:58 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=uGoFEluU; spf=none (imf19.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=1709241659; 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=vw3wE6Ne/OUfTw5/V3p5xx1+DBqftImM3ID9MVhOemc=; b=Wd5ZIsQ/1VGa6vcaaQtsmfDjro2S87P91iv7SNVYmWq+ds2M2t6JzllDq+uzh2HmH38gZl LA2GWWfCD8PA/6GUyNDAn2sek9Rl6blaaWyA4I05eiz8ehL1WwAbj/yFGjuRTywgc5uEjQ lpUVfNaxdNjDK6ATxkB9WNliHRlZN70= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709241659; a=rsa-sha256; cv=none; b=lQ/rQfMp82fEPu8F9sdvCg3ujlwRxRpZsM1dWVPcUsujUHsT6s3a7tzjI+77wHQazgJf2z cJ7p8sMEEu/Q6XzETIF+wQKiH6UUxvzwL4TZ6GT/b3WQ6kXzBPf/k6NacPdzcOWiPKFaWF 2sRHaU0NElZB1O5/L/aaZ6JP4Rszk0Q= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=uGoFEluU; spf=none (imf19.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none 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=vw3wE6Ne/OUfTw5/V3p5xx1+DBqftImM3ID9MVhOemc=; b=uGoFEluUN9J5VmgILrdjzISqg0 p88xenlnW0ppgVT66V3aUIRcBzy2iHxSI+LwkFP1IN8YFhTAhvmkCTfD0iRjPbhn/KPQRmDJtTi78 4fkuGmU1gtYudh+i66vR5KWpooaSd72VlhcL+1K/HeSGJIWPX3RO5OqCI+g2Fw65ndVVMzBfdFjdR /mA9H6WbW1DF+CC72g9JnwaUN/wMU7D/aBgxKO/uLRvwJP/sQIM5755nI0AJpN6iMnU8thR9fPUfh wCZj285bEoipEcM80uTMl2wRsI53HPkAgy+I5kTpGZsnuhj46H1p3Yswj+edO+8a/6pHqTnQVQtCI NELqTp0Q==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfnpV-0000000949c-3M0v; Thu, 29 Feb 2024 21:20:37 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Miaohe Lin , Naoya Horiguchi Subject: [PATCH 4/8] mm/memory-failure: Convert shake_page() to shake_folio() Date: Thu, 29 Feb 2024 21:20:30 +0000 Message-ID: <20240229212036.2160900-5-willy@infradead.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240229212036.2160900-1-willy@infradead.org> References: <20240229212036.2160900-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: E47001A001B X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: wipsshiygyfhnna3qwwipp14yymi183y X-HE-Tag: 1709241658-719332 X-HE-Meta: U2FsdGVkX1+8CB1kjQBIJwaAv4AVHHAm2co9bpgNeei2A35ppk9ISce7FTKCfjcMTbW/n5HuwP75Ng3YC22gglKlqnbhIgOHI4PeMv0CkJPfT+NGZNRaHyexoqvfzuwVLtxJA6SFIWCvbYTXCUFgBKwg7UdesxQMBm/J8gHMvocqpeOWcmZJ5ny9B2d2Bpmuq29pLs9T+I7LCv12Yy+IQsO8uwpCYPxokj0IAZZfWG36nCHCxMN98TQ/2B24fSd271AWZ36r/UflrunQmLjovMdUxvjF9ke1Oo8pKclRaj0dUa3p1wIuwTY0rxr0tAYyXC1Rl6LwMQhXYweuGz4vHuygwhf2Ds20gBTxUrqqEhihJ6H96V2iCgSXN1+iowpAACDmJQuduyBTaBaxLtvssJpgj2uvoVRMShelvQJpRPFYhlPtT4pWFJ/ZOwoBWntognZLURN9JOJuDgZbJNOItxR1e5UGY1YdDc4bWbkvnf3sdrEg29/ZvdFcLCoFaqhPwCIY3q4dB1B7+w/FqkSs/YrYVgcTv5buvEtsHeiHlE9w3A8aVqBRelg0C1MMFSEbS4itS+UFALgZabbi8NQCj7WrIaBi8uY+l00eK+grNNK2QQaYNp5WZ7OunzaVtyVgft0fESi5He6zhQRBMCprA4NYr/zciPzku4z9WurqXUx4bqFZwmhcwgdlkzeHSmcic75jopUdCkfEpb/rd0Hxsmib5tWZxw7XUrzl3AT4f3v6l5+q4F2+9D1/OEAn5qlfVTRi74jvbLC5USINyUy5s/Cl2kdDaAFq3y2FmxeMV2j3VO7fv/+6TwuTR28PiWGjrQzNbeAX+qykDQ4EWtj9VA9Ml8wmaLFKcIYaD7wP97Ue5MJ5tICuaN5J6XCnzDAEI5ujM2TofcdJzgqZ0wK8ETttIaf+1t4YsMXcHFm4X5GR+aoQBRcETXArVSkRojvYFxBJcnHivapVceODIyg D57kKvrl NBLgKAxjZ6tHrG8OWl6m9zj/PzEH7eUArZeE7uQkDX347NGBS83aWxT3fEoZhEcare9cKTJoRyH/lHqOvYDF6iZDLWeYFH0AXvmQR3SMLxY1UG8MDGBs7Lqe1rgBsVNKraTkAsqCsQhRiOjchymPbASJvuWlTuoBs/AldGH4L+d850GzJKDQsleF6U4r4Cwl1qtzS7unh2qL/rBzzNT6KErpL0Osz+v5q98Ii 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: Removes two calls to compound_head(). Move the prototype to internal.h; we definitely don't want code outside mm using it. Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/mm.h | 1 - mm/hwpoison-inject.c | 11 ++++++----- mm/internal.h | 1 + mm/memory-failure.c | 15 ++++++++++----- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 03e4841673d7..184f57cdab60 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3962,7 +3962,6 @@ int mf_dax_kill_procs(struct address_space *mapping, pgoff_t index, extern int memory_failure(unsigned long pfn, int flags); extern void memory_failure_queue_kick(int cpu); extern int unpoison_memory(unsigned long pfn); -extern void shake_page(struct page *p); extern atomic_long_t num_poisoned_pages __read_mostly; extern int soft_offline_page(unsigned long pfn, int flags); #ifdef CONFIG_MEMORY_FAILURE diff --git a/mm/hwpoison-inject.c b/mm/hwpoison-inject.c index d0548e382b6b..c9d653f51e45 100644 --- a/mm/hwpoison-inject.c +++ b/mm/hwpoison-inject.c @@ -15,7 +15,7 @@ static int hwpoison_inject(void *data, u64 val) { unsigned long pfn = val; struct page *p; - struct page *hpage; + struct folio *folio; int err; if (!capable(CAP_SYS_ADMIN)) @@ -25,16 +25,17 @@ static int hwpoison_inject(void *data, u64 val) return -ENXIO; p = pfn_to_page(pfn); - hpage = compound_head(p); + folio = page_folio(p); if (!hwpoison_filter_enable) goto inject; - shake_page(hpage); + shake_folio(folio); /* * This implies unable to support non-LRU pages except free page. */ - if (!PageLRU(hpage) && !PageHuge(p) && !is_free_buddy_page(p)) + if (!folio_test_lru(folio) && !folio_test_hugetlb(folio) && + !is_free_buddy_page(p)) return 0; /* @@ -42,7 +43,7 @@ static int hwpoison_inject(void *data, u64 val) * the targeted owner (or on a free page). * memory_failure() will redo the check reliably inside page lock. */ - err = hwpoison_filter(hpage); + err = hwpoison_filter(&folio->page); if (err) return 0; diff --git a/mm/internal.h b/mm/internal.h index 13f4d6ccccdf..b900730f43c0 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -855,6 +855,7 @@ static inline int find_next_best_node(int node, nodemask_t *used_node_mask) /* * mm/memory-failure.c */ +void shake_folio(struct folio *folio); extern int hwpoison_filter(struct page *p); extern u32 hwpoison_filter_dev_major; diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 40a8964954e5..27dc21063552 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -358,20 +358,25 @@ static int kill_proc(struct to_kill *tk, unsigned long pfn, int flags) * Unknown page type encountered. Try to check whether it can turn PageLRU by * lru_add_drain_all. */ -void shake_page(struct page *p) +void shake_folio(struct folio *folio) { - if (PageHuge(p)) + if (folio_test_hugetlb(folio)) return; /* * TODO: Could shrink slab caches here if a lightweight range-based * shrinker will be available. */ - if (PageSlab(p)) + if (folio_test_slab(folio)) return; lru_add_drain_all(); } -EXPORT_SYMBOL_GPL(shake_page); +EXPORT_SYMBOL_GPL(shake_folio); + +static void shake_page(struct page *page) +{ + shake_folio(page_folio(page)); +} static unsigned long dev_pagemap_mapping_shift(struct vm_area_struct *vma, unsigned long address) @@ -1639,7 +1644,7 @@ static bool hwpoison_user_mappings(struct page *p, unsigned long pfn, * shake_page() again to ensure that it's flushed. */ if (mlocked) - shake_page(hpage); + shake_folio(folio); /* * Now that the dirty bit has been propagated to the From patchwork Thu Feb 29 21:20:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13577660 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 5FFA2C54E49 for ; Thu, 29 Feb 2024 21:20:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E4A7E6B0095; Thu, 29 Feb 2024 16:20:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DFBCF6B0098; Thu, 29 Feb 2024 16:20:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CC30C6B0099; Thu, 29 Feb 2024 16:20:49 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id BBFA66B0095 for ; Thu, 29 Feb 2024 16:20:49 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 7516E1C0DAA for ; Thu, 29 Feb 2024 21:20:49 +0000 (UTC) X-FDA: 81846111018.16.64E488A Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf01.hostedemail.com (Postfix) with ESMTP id 0721440013 for ; Thu, 29 Feb 2024 21:20:47 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=nNjEnO+Y; spf=none (imf01.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=1709241648; 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=d6YAOLRyze9pUqr090tM/X/89q/P+WFOvNXqhLU+P3o=; b=pC8zAVXFgjvvDsf8yKGuZ8COi7I2XJfVvI7M1EAaq4//K/H2XJ9teFWnq0bMv1nRLsfwUz aIGvLcStTq0NBYMjBCLNAQPnz67qSLHjrgOIfBgtgWf2ZmPbbejWlS9nSAJZPABIyYJWgs CvjBkkL86RmrMx6vgSLT/A7ZOV4m2UA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709241648; a=rsa-sha256; cv=none; b=VlQsWuPwG49BHfQOzUcppn5Y+o+5u2x8Gq5NZ4ZJYT67g5xY+PFz6hCx5Ux1w+IDOnNa5d ncAAEkzGjQrSFQuutz+Li0HcqKsbo2/GzZntEgOIYo2koFgF25Cs44lD/RBYEsB70eJcHd DTToqqcmUk0pjE7EUwe6ybBwNUucI5A= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=nNjEnO+Y; spf=none (imf01.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none 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=d6YAOLRyze9pUqr090tM/X/89q/P+WFOvNXqhLU+P3o=; b=nNjEnO+YHuauGk9NPE5Gb0fHOa herRFZqoVfF4omiT0dMm/jBoS0s6kNnBWk5D1ttW+2QVBVtaeKnZuJ1m/Fjdlc7Q5OETIpPyVW2n5 JIO06nAMQvgNM3Gcfm1Sj7gTzVlFfvtLLyDXeE28Og+jkz77yDrbYJvDcRuOdKh/I5OHIliX1cRM/ rVP4vFiGWNdKVfZZz8qmu+VlAktVNloWim/+ThrGbhZ1ahbvR5iqHSUwBbf5LhN8r942CSUQk+bYe 4EF06oFq72/AtdWBMm+tKB96zVf+ABzwSOzvxIeywk+F/mtvHjEIdy/Ozy+14UQilp4+h3Os1HbNV EVyGaDLA==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfnpV-0000000949e-3dPr; Thu, 29 Feb 2024 21:20:37 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Miaohe Lin , Naoya Horiguchi Subject: [PATCH 5/8] mm: Convert hugetlb_page_mapping_lock_write to folio Date: Thu, 29 Feb 2024 21:20:31 +0000 Message-ID: <20240229212036.2160900-6-willy@infradead.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240229212036.2160900-1-willy@infradead.org> References: <20240229212036.2160900-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 0721440013 X-Rspam-User: X-Stat-Signature: dib4z5ta9afs5cf9ayz7ynrxxu4bd5ta X-Rspamd-Server: rspam03 X-HE-Tag: 1709241647-117914 X-HE-Meta: U2FsdGVkX19p+ala2//yFpNDADA/PSU1AQ4T45du+6bG37iP+GzgAZtL47WvQNqsD16Vy27/WGoQjrd8vlmvWjApQQp1ezKbMKGEO9aPP48e5wqto5KqlcpCZKjJaoN5DX1pDDVEi1ZFFeg8NP4QaTZ9R0hqnUX/KpVxn5HkDslFXkMuzid00dLdVsX8Z9re3aSd/TXWTNvadkrcR+Qn8lYNBGjipQ1F0i6pDtk10vG2Y1jo44UrWlxyOhRLRmeVaAACaGoGLeSuIb2YFSfcmbljrN0LbdudtFITy+GDbWYHhJjykIssSBZfut4oaGSwxewAmVgK7wSyPlq4BRaQOrfdtEeTiV7eTlP6DjWB0BDmBgsEz076o0Tb58BOocWV1KSChnfcFgSf1xng59reFAU4EuERVGIhPJ6jdLltm7fbk0e7eAjoxFqNPi9i0Xf73k2MutV2uUhuQNciiJAkxBaBfMiHFPyqAxbrryUINbx3yz2vxxCSTpglLsDmqGSjIPXzGUZbjZvwaw7hfkV/03l3xgrdzyXOnxKnDFZvJyFsTTqkAt7nHenZWFeAHuMUCxwzrH7Hx/uZPqLtx/Q4NwpNnsrlNLamglcQy4h530CYq9OI43nHdYqe20btJks13D1AqRxpggxyFKagX0wzs17NIlRH7CPa7vuTghtcHLZiclt5kOSQJB9DbLYERGhOnM7SfzTUgy54znJKJWaGbjGiAsWJCF4NuNFzMyvkD61uuGjLTXnp7Rb9eHDHdNIGfRqYd1AvYGR91qu1rPcPXQ6+oEGQKhyUnnEDh+L9k5G5mG2foDiyRvD0Wgm4V2lHbLht9G0Mr3/+X2VJsc3zSxYbdCA5ieCpH732IcBVcG8Ax2FDcPHfx6Ceg7IWsZlB1LkbZQJWhLA/aSaoVijyCHYQh/zg+1gp 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: The page is only used to get the mapping, so the folio will do just as well. Both callers already have a folio available, so this saves a call to compound_head(). Signed-off-by: Matthew Wilcox (Oracle) Acked-by: Miaohe Lin --- include/linux/hugetlb.h | 6 +++--- mm/hugetlb.c | 6 +++--- mm/memory-failure.c | 2 +- mm/migrate.c | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 77b30a8c6076..acb1096ecdaa 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -175,7 +175,7 @@ u32 hugetlb_fault_mutex_hash(struct address_space *mapping, pgoff_t idx); pte_t *huge_pmd_share(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, pud_t *pud); -struct address_space *hugetlb_page_mapping_lock_write(struct page *hpage); +struct address_space *hugetlb_folio_mapping_lock_write(struct folio *folio); extern int sysctl_hugetlb_shm_group; extern struct list_head huge_boot_pages[MAX_NUMNODES]; @@ -298,8 +298,8 @@ static inline unsigned long hugetlb_total_pages(void) return 0; } -static inline struct address_space *hugetlb_page_mapping_lock_write( - struct page *hpage) +static inline struct address_space *hugetlb_folio_mapping_lock_write( + struct folio *folio) { return NULL; } diff --git a/mm/hugetlb.c b/mm/hugetlb.c index bb17e5c22759..0e464a8f1aa9 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2178,13 +2178,13 @@ EXPORT_SYMBOL_GPL(PageHuge); /* * Find and lock address space (mapping) in write mode. * - * Upon entry, the page is locked which means that page_mapping() is + * Upon entry, the folio is locked which means that folio_mapping() is * stable. Due to locking order, we can only trylock_write. If we can * not get the lock, simply return NULL to caller. */ -struct address_space *hugetlb_page_mapping_lock_write(struct page *hpage) +struct address_space *hugetlb_folio_mapping_lock_write(struct folio *folio) { - struct address_space *mapping = page_mapping(hpage); + struct address_space *mapping = folio_mapping(folio); if (!mapping) return mapping; diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 27dc21063552..fe4959e994d0 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1624,7 +1624,7 @@ static bool hwpoison_user_mappings(struct page *p, unsigned long pfn, * TTU_RMAP_LOCKED to indicate we have taken the lock * at this higher level. */ - mapping = hugetlb_page_mapping_lock_write(hpage); + mapping = hugetlb_folio_mapping_lock_write(folio); if (mapping) { try_to_unmap(folio, ttu|TTU_RMAP_LOCKED); i_mmap_unlock_write(mapping); diff --git a/mm/migrate.c b/mm/migrate.c index 73a052a382f1..0aef867d600b 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -1425,7 +1425,7 @@ static int unmap_and_move_huge_page(new_folio_t get_new_folio, * semaphore in write mode here and set TTU_RMAP_LOCKED * to let lower levels know we have taken the lock. */ - mapping = hugetlb_page_mapping_lock_write(&src->page); + mapping = hugetlb_folio_mapping_lock_write(src); if (unlikely(!mapping)) goto unlock_put_anon; From patchwork Thu Feb 29 21:20:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13577662 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 4FF15C54798 for ; Thu, 29 Feb 2024 21:20:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D87E26B0099; Thu, 29 Feb 2024 16:20:54 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D10826B009B; Thu, 29 Feb 2024 16:20:54 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BB0796B009C; Thu, 29 Feb 2024 16:20:54 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id A317D6B0099 for ; Thu, 29 Feb 2024 16:20:54 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 74DEF403E0 for ; Thu, 29 Feb 2024 21:20:54 +0000 (UTC) X-FDA: 81846111228.02.33268A7 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf30.hostedemail.com (Postfix) with ESMTP id D7EEE8000E for ; Thu, 29 Feb 2024 21:20:52 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=kUTN5A2g; spf=none (imf30.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=1709241653; 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=7K7R34AzynDik/x15OMejoZCMXKzS4+bK4IM3eHNHto=; b=KCoAmUh8Sy+/wpNb3RYrN8S1YMYD7qM9Pmg+N/hMDXuuqKpFnPwsRW5DVpzCnXCygjiL3r OaH5IPjCVRvEe4Up4Fm1AlCCBfGVYE7/qh84A5KQOyZuzCph0DuLVdlh492aZyF7bq0giK TQn8634/WZ5Uril8NJmRewGRACMtneA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709241653; a=rsa-sha256; cv=none; b=qfiQAmtSvnT6xDLUptsq07c1OLFmdI4tZxIx/t/qfF7suQfVEmZrPpaYQ3037qd3LrOE9M Fu7+Neq0g5fJSeI4nsTsBwC6cDwiEeXNGDO16kaZDJd1jssRvn9fpbTQEXQhxWGMvNp0TN L2UsrX2ggZW/uv+jhmi6Pv8xWqF/0a4= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=kUTN5A2g; spf=none (imf30.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none 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=7K7R34AzynDik/x15OMejoZCMXKzS4+bK4IM3eHNHto=; b=kUTN5A2g8s7z43+33YIZAeIFwo reKWV+BkjPLOcJL1kYk+G7Y3721poRlQm4ATybo5DnSv4Q/tGHVp8ehglKJIlYKXJUcoaCtfNJXb5 +e9eIpjR1YX8j85Bcb94GBRMoQczEkmwNjyIQl2CNfmmMk6yxwYvag+bHOx7V7XVxwFEaBCYn61rM nJYNsQkZlRv09wyw7TGdPPp9KgrkiBd94dMGibMjtdwPR2Zid2zz49W8xDv3sP2bNnYjUwjlHxyEv FoiejWSUS3s5FlrqpGboNsD3KcrKMhuuCIEoZqzcJY/KQc7Yhx15xXlTewiT9KzqfTk1V2Tdu8AMI me/CiPdQ==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfnpV-0000000949g-3wsf; Thu, 29 Feb 2024 21:20:37 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Miaohe Lin , Naoya Horiguchi Subject: [PATCH 6/8] mm/memory-failure: Convert memory_failure() to use a folio Date: Thu, 29 Feb 2024 21:20:32 +0000 Message-ID: <20240229212036.2160900-7-willy@infradead.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240229212036.2160900-1-willy@infradead.org> References: <20240229212036.2160900-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: D7EEE8000E X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: xhk89bpznne7gzrd79dkhky1yzde4343 X-HE-Tag: 1709241652-676661 X-HE-Meta: U2FsdGVkX1+4mwXkYSB/Y9yR9HR1xJIZRAHu++lxfLgEQUBjOqis5XVUmpXuVVz8a3Zgqgl9KG20U8DtBRJ2fg3MWAsr9i463IsFdLtG55ma7q8W6uR7e5WGeB3abcOH7lpRnEBPIsj9w5DJDa5p7dLjw587fan88Sv4aeyXbTd9tbEd1RE4DOXdJqwdm9HSVsEsXUSjk7Qc7RmfdIQ1+gJDU/bNtO7aXFrdRvLRM2ak6itsV4DggFJcRmBmgaN0f2/jCTzEBmXzzh81l1fCHz0SNX41ahgtr+vXV+ng68NMYSK8QLNZl4bQJCkeJGeRxkMTHMRyACQRVMBUr+l03NFeW0G9Of06uxhFqm25nITgPze+t/xUmBlRotrdokveSUDQke9y1vPGgioXIjWuGL/NBRIHiZUvx0xAWu9xWUaQ9jI5q5SP6OGVlIgKOJfQ3AQh1fjHMlo752eF/EEUDR5awRYVOk0Kk6tIR2TQjk+kHIa60pXa8YWkoAvhSggs7gFcVMNffrjceOuTE3FawB1D3nAUZAeIXF5ZgfJvxEa1a1Ic64Hc2qnQs43EPgPM9xdHGWuFLH/w0qrU7FRe18RO8oWyqP7ZNiatdGn8l6q5S2X2dW7fxrpWLaw7TaiDE7iAwb1krPZbbSWFPURhs3+LAPwE7XPJAWNCJrHQN116FZT+6E34a5g7dCT/3CWxF9mj0BZH2wCoIsbqDvJQwCtbXvcUd7s7g1fWbuwyVHjfj7McdpwAcDxt7+RwknK5ELSXLqWUG/P5hOXsXZLlPcDCPueHiqqJneXRx2d1bjDND1PKpbnsTnT/8NabZ2qzY4wZreAtoPqsPn03mSFPE5OZkHANHuW12LYVYa/WcNANF72lnvEEzCXU6Wd36MAI/TSCBYGoRhdgv3FlqHgF7Vl5qCYkt47DejlVq7LwTKShqlfYdw2hc96iWH1PFAjx+lFhbVULHZV2/bbJXjb Z8RrVMCs V6U0gfIhgIoXPlgIURg2k7CAiA7dYkouvNilFpH3YQRICIi03aZNPwt8ym+tjX4TyRN1LPEAii/18dRW5QwqfvE1yRKHC4xx8JyBhPhLmlNfHoQpFRrFhTZprtu4otmg2ti3s+9ziT24e2D3ULXCgUVPuLEhODRvDqHV3kC6QPt1/ISQHyVr9qAqzF8LEcfYtSBTMoM6xzs7KKDWu6hRidd0trcauFmTtnrGcbeMjvzp11yW4fb+FLkRZndd3dLnl23vFRJ9FoAaQbwHB3avhCC3AOg== 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: Saves dozens of calls to compound_head(). Signed-off-by: Matthew Wilcox (Oracle) --- mm/memory-failure.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index fe4959e994d0..74e87a0a792c 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -2189,7 +2189,7 @@ static int memory_failure_dev_pagemap(unsigned long pfn, int flags, int memory_failure(unsigned long pfn, int flags) { struct page *p; - struct page *hpage; + struct folio *folio; struct dev_pagemap *pgmap; int res = 0; unsigned long page_flags; @@ -2277,8 +2277,8 @@ int memory_failure(unsigned long pfn, int flags) } } - hpage = compound_head(p); - if (PageTransHuge(hpage)) { + folio = page_folio(p); + if (folio_test_large(folio)) { /* * The flag must be set after the refcount is bumped * otherwise it may race with THP split. @@ -2292,12 +2292,13 @@ int memory_failure(unsigned long pfn, int flags) * or unhandlable page. The refcount is bumped iff the * page is a valid handlable page. */ - SetPageHasHWPoisoned(hpage); + folio_set_has_hwpoisoned(folio); if (try_to_split_thp_page(p) < 0) { res = action_result(pfn, MF_MSG_UNSPLIT_THP, MF_IGNORED); goto unlock_mutex; } VM_BUG_ON_PAGE(!page_count(p), p); + folio = page_folio(p); } /* @@ -2308,9 +2309,9 @@ int memory_failure(unsigned long pfn, int flags) * The check (unnecessarily) ignores LRU pages being isolated and * walked by the page reclaim code, however that's not a big loss. */ - shake_page(p); + shake_folio(folio); - lock_page(p); + folio_lock(folio); /* * We're only intended to deal with the non-Compound page here. @@ -2318,11 +2319,11 @@ int memory_failure(unsigned long pfn, int flags) * race window. If this happens, we could try again to hopefully * handle the page next round. */ - if (PageCompound(p)) { + if (folio_test_large(folio)) { if (retry) { ClearPageHWPoison(p); - unlock_page(p); - put_page(p); + folio_unlock(folio); + folio_put(folio); flags &= ~MF_COUNT_INCREASED; retry = false; goto try_again; @@ -2338,29 +2339,29 @@ int memory_failure(unsigned long pfn, int flags) * folio_remove_rmap_*() in try_to_unmap_one(). So to determine page * status correctly, we save a copy of the page flags at this time. */ - page_flags = p->flags; + page_flags = folio->flags; if (hwpoison_filter(p)) { ClearPageHWPoison(p); - unlock_page(p); - put_page(p); + folio_unlock(folio); + folio_put(folio); res = -EOPNOTSUPP; goto unlock_mutex; } /* - * __munlock_folio() may clear a writeback page's LRU flag without - * page_lock. We need wait writeback completion for this page or it - * may trigger vfs BUG while evict inode. + * __munlock_folio() may clear a writeback folio's LRU flag without + * the folio lock. We need to wait for writeback completion for this + * folio or it may trigger a vfs BUG while evicting inode. */ - if (!PageLRU(p) && !PageWriteback(p)) + if (!folio_test_lru(folio) && !folio_test_writeback(folio)) goto identify_page_state; /* * It's very difficult to mess with pages currently under IO * and in many cases impossible, so we just avoid it here. */ - wait_on_page_writeback(p); + folio_wait_writeback(folio); /* * Now take care of user space mappings. @@ -2374,7 +2375,8 @@ int memory_failure(unsigned long pfn, int flags) /* * Torn down by someone else? */ - if (PageLRU(p) && !PageSwapCache(p) && p->mapping == NULL) { + if (folio_test_lru(folio) && !folio_test_swapcache(folio) && + folio->mapping == NULL) { res = action_result(pfn, MF_MSG_TRUNCATED_LRU, MF_IGNORED); goto unlock_page; } @@ -2384,7 +2386,7 @@ int memory_failure(unsigned long pfn, int flags) mutex_unlock(&mf_mutex); return res; unlock_page: - unlock_page(p); + folio_unlock(folio); unlock_mutex: mutex_unlock(&mf_mutex); return res; From patchwork Thu Feb 29 21:20:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13577665 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 5F0E1C54798 for ; Thu, 29 Feb 2024 21:21:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E994F6B009D; Thu, 29 Feb 2024 16:21:03 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E49AB6B009E; Thu, 29 Feb 2024 16:21:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CC4796B009F; Thu, 29 Feb 2024 16:21:03 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id BEC626B009D for ; Thu, 29 Feb 2024 16:21:03 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 95619C1288 for ; Thu, 29 Feb 2024 21:21:03 +0000 (UTC) X-FDA: 81846111606.21.7883678 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf18.hostedemail.com (Postfix) with ESMTP id EDC671C0012 for ; Thu, 29 Feb 2024 21:21:01 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=MSjTbsdl; dmarc=none; spf=none (imf18.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709241662; 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=/i71mU/Nb6V1/CjZzsouaX83RdxNI3t6oNpGN2+bQb4=; b=Pq0sdgftD6Q81xJ7SbmHKpxyvKZ6rO0F+ZLuvWC4qO/mccn4yA81zuiHmS8FHXrPjVkiZf 7EVhk3/5KJcMvqbDTVNvoACWGT4zHSfq35XTX+C912YWhM0Gvro1gVKSIHurY5P+kiVpCC rKb2phe7Bh4tF8fa1xNvfxFMy8BSbtI= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=MSjTbsdl; dmarc=none; spf=none (imf18.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709241662; a=rsa-sha256; cv=none; b=bJ2iHdfMQ/LnD2GssospmxWTbj4qCmTBfsZnx16skSCI7R1AFR680WavBf2c6eIxtkG2Zn bdlHH0NOezYFsVC0pFoCysHE1bFArXxRDUzFSA6idPy7Get6Dw+4c+GmJpdjFHqfvjhfUm woBpN0vC+uJp/2vFn3tia0jYKKA8qfQ= 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=/i71mU/Nb6V1/CjZzsouaX83RdxNI3t6oNpGN2+bQb4=; b=MSjTbsdlr7itHtwt4nNYs7P+8a Thur/GPX90wKNCZ2Adr2PAyESlBuegZhRHzEhSB/Mz6JnriuBCM/EmTRB2aqPrKJ2n0jD2oauVfXb Cm868XtxNk9OfpleZWJh3pUBLjetug1/LuWsCRTP/kc8qH4lF63XSEm69IaQVRmj2IoOMw7Q/jHZt vFv/nmEBbRtFU6KEr9VClFOQboFuieg5kOnFd22FtutnqVzkjKjNm8eirWUkHakFX1axnHQK3qBQ2 5/dnQMmdlAraaqnTfR3tuVsDjF3Av6IBz1tOL/wtxVui1Ut90NkTwkGJZJ35t/eGQixFBEzZ0piIw QWODfbQA==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfnpW-0000000949i-06Ms; Thu, 29 Feb 2024 21:20:38 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Miaohe Lin , Naoya Horiguchi Subject: [PATCH 7/8] mm/memory-failure: Convert hwpoison_user_mappings to take a folio Date: Thu, 29 Feb 2024 21:20:33 +0000 Message-ID: <20240229212036.2160900-8-willy@infradead.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240229212036.2160900-1-willy@infradead.org> References: <20240229212036.2160900-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: EDC671C0012 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: uyn86xc5wd9rea6ybf1omn6s3dj1q63u X-HE-Tag: 1709241661-323851 X-HE-Meta: U2FsdGVkX18lip4f11tkwMsDYQvqPcKbqo/DbX9lU7E8W0cm6REOOFGsNdgPnF8mdTkhqndepaSIzSc9ozXbreT/IJRrakAPPb0He+70/0J1F7gYjSKt59T8uBBdBJ5/trnJwutt6WHfa5joWbMjNrclijmuTDrAJrQdSka7AYp/l6jkzqQPuG/LrUusqtjR+g9RFq140TLkVXfMlVkIs8fPfqhFDdtB6cQ+5hmozKtDWoHIacpMIwUHCrb9YTrKEhwpxmlX+nbPqvn+dXGYPRdUMUovkh9qAUUVXfv8eXSnhJ0lQ5dnjeqB++cVf90YQEIyt9I+njw8npRuT/LGDu1U/hsIzcAG6IzJ2TH7xKpQ/8J3Dw3vAQPBiVJD+iCq185+03OUK68IrbiEbeTZ0Rge1aosGF4xdET6GTSwWd0VLQ9geiuPqNcgCPqs4Zj/L2mMY4u1evgoHmPf2U9ufeO+vVs0H3x/NlTh1xUEjTxVfeobU/WaspdG6t7XjclBJfuDfaq2LWbmLAQJlpvGaVdJeofZSkAVg4BYuJhXHqoyOmt+wX7Ytl6ymCIk3SiMpaQqYyu15+az2fsrQL0Anpv+ELHU19snWKFhj6VuXFc5kX2oWg9Dj5xWKGhVVfuYvONmoBa7u2R7SmhiYUjEVWuL38jHF38Ezu1S2pBPVNUJNz7VYpQ388iKhLysQ/vlO1VgSj9XZ8mnWsjP87qb17UUf1NgJFr7feqCINzP/8X/JgCBAez1QLnDHA6PkUwHKR7fM4mPuylsUcknXMjkgeoL3NxJGNO+dJ/y3GVTwHDrkrVBQ47cf19Xe2/IzbU8GsYacLsncd+knhAzyjCI5xuosyF6FKZDZvcFaK1PxreL+iHe0n3iQ4on5B0cYAlRhwSwz2QmIrTjxIYWGxZxvW7FguxBkX+5o7hT04ni1C1Rn9DRhL56w++nur3aR883IaLzEgvKveY4BS//XA3 w0bKfTGJ Y8nAYPpqnBCSeK55JM3KTdDdvOSs5slxkeAA17wERoL2bn9aobiAVkaXSHFptEFwm/pH5k8DP6kmiDi2JBwRrN4N+arn4DqMWkbfTZaS+n44TIfAgEJI4hPxH+SHd3cWqUiXQS0W6GbRqO83nFC/PbJ5wg5nBSR+4acyF 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: Pass the folio from the callers, and use it throughout instead of hpage. Saves dozens of calls to compound_head(). Acked-by: Miaohe Lin --- mm/memory-failure.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 74e87a0a792c..56bc83372e30 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1559,24 +1559,24 @@ static int get_hwpoison_page(struct page *p, unsigned long flags) * Do all that is necessary to remove user space mappings. Unmap * the pages and send SIGBUS to the processes if the data was dirty. */ -static bool hwpoison_user_mappings(struct page *p, unsigned long pfn, - int flags, struct page *hpage) +static bool hwpoison_user_mappings(struct folio *folio, struct page *p, + unsigned long pfn, int flags) { - struct folio *folio = page_folio(hpage); enum ttu_flags ttu = TTU_IGNORE_MLOCK | TTU_SYNC | TTU_HWPOISON; struct address_space *mapping; LIST_HEAD(tokill); bool unmap_success; int forcekill; - bool mlocked = PageMlocked(hpage); + bool mlocked = folio_test_mlocked(folio); /* * Here we are interested only in user-mapped pages, so skip any * other types of pages. */ - if (PageReserved(p) || PageSlab(p) || PageTable(p) || PageOffline(p)) + if (folio_test_reserved(folio) || folio_test_slab(folio) || + folio_test_pgtable(folio) || folio_test_offline(folio)) return true; - if (!(PageLRU(hpage) || PageHuge(p))) + if (!(folio_test_lru(folio) || folio_test_hugetlb(folio))) return true; /* @@ -1586,7 +1586,7 @@ static bool hwpoison_user_mappings(struct page *p, unsigned long pfn, if (!page_mapped(p)) return true; - if (PageSwapCache(p)) { + if (folio_test_swapcache(folio)) { pr_err("%#lx: keeping poisoned page in swap cache\n", pfn); ttu &= ~TTU_HWPOISON; } @@ -1597,11 +1597,11 @@ static bool hwpoison_user_mappings(struct page *p, unsigned long pfn, * XXX: the dirty test could be racy: set_page_dirty() may not always * be called inside page lock (it's recommended but not enforced). */ - mapping = page_mapping(hpage); - if (!(flags & MF_MUST_KILL) && !PageDirty(hpage) && mapping && + mapping = folio_mapping(folio); + if (!(flags & MF_MUST_KILL) && !folio_test_dirty(folio) && mapping && mapping_can_writeback(mapping)) { - if (page_mkclean(hpage)) { - SetPageDirty(hpage); + if (folio_mkclean(folio)) { + folio_set_dirty(folio); } else { ttu &= ~TTU_HWPOISON; pr_info("%#lx: corrupted page was clean: dropped without side effects\n", @@ -1616,7 +1616,7 @@ static bool hwpoison_user_mappings(struct page *p, unsigned long pfn, */ collect_procs(folio, p, &tokill, flags & MF_ACTION_REQUIRED); - if (PageHuge(hpage) && !PageAnon(hpage)) { + if (folio_test_hugetlb(folio) && !folio_test_anon(folio)) { /* * For hugetlb pages in shared mappings, try_to_unmap * could potentially call huge_pmd_unshare. Because of @@ -1656,7 +1656,7 @@ static bool hwpoison_user_mappings(struct page *p, unsigned long pfn, * use a more force-full uncatchable kill to prevent * any accesses to the poisoned memory. */ - forcekill = PageDirty(hpage) || (flags & MF_MUST_KILL) || + forcekill = folio_test_dirty(folio) || (flags & MF_MUST_KILL) || !unmap_success; kill_procs(&tokill, forcekill, !unmap_success, pfn, flags); @@ -2100,7 +2100,7 @@ static int try_memory_failure_hugetlb(unsigned long pfn, int flags, int *hugetlb page_flags = folio->flags; - if (!hwpoison_user_mappings(p, pfn, flags, &folio->page)) { + if (!hwpoison_user_mappings(folio, p, pfn, flags)) { folio_unlock(folio); return action_result(pfn, MF_MSG_UNMAP_FAILED, MF_IGNORED); } @@ -2367,7 +2367,7 @@ int memory_failure(unsigned long pfn, int flags) * Now take care of user space mappings. * Abort on fail: __filemap_remove_folio() assumes unmapped page. */ - if (!hwpoison_user_mappings(p, pfn, flags, p)) { + if (!hwpoison_user_mappings(folio, p, pfn, flags)) { res = action_result(pfn, MF_MSG_UNMAP_FAILED, MF_IGNORED); goto unlock_page; } From patchwork Thu Feb 29 21:20:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13577658 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 47E87C54798 for ; Thu, 29 Feb 2024 21:20:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 918D36B0093; Thu, 29 Feb 2024 16:20:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8C9BC6B0095; Thu, 29 Feb 2024 16:20:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 727996B0098; Thu, 29 Feb 2024 16:20:46 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 640286B0093 for ; Thu, 29 Feb 2024 16:20:46 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 19DFF803CF for ; Thu, 29 Feb 2024 21:20:46 +0000 (UTC) X-FDA: 81846110892.18.3F7C8DA Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf08.hostedemail.com (Postfix) with ESMTP id 2962A160008 for ; Thu, 29 Feb 2024 21:20:43 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=EBRWMakJ; spf=none (imf08.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=1709241644; 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=Ewd6xNhf+Jrao4VIXUIIVkDPwVs2qsihgrFOo74uzaw=; b=iwn/PSYI76svCSycR3PVkrGiEg7DEThkrFxtm4odxq6mg4fRisVAfpHYuKdHctPTXQZtPO uu+g3FIpUNjQEn3RHRwlsM7FN5k5BnvLZKN+hGk/nueqLiUln6XVKjTB9XWz0EUsjtQFJJ Yzvykv2PxqnZR3fUXtlXz2Hh079//AQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709241644; a=rsa-sha256; cv=none; b=yETPaYf1SLcld4qiRwsvCLgvczkkVtI/fItM8xomvMnls2/u3N2SLlY1EW0GVozi8ItGCU KnZlgzc++tLGzoc0AcJJJSdb5MiVkcBP/AY8JDNV4fc8RjIwmXaEo41vtv8uXnKhJlTvxk 0d/TUPO0Gc9g01jSvNppzH87iZDGhG8= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=EBRWMakJ; spf=none (imf08.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none 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=Ewd6xNhf+Jrao4VIXUIIVkDPwVs2qsihgrFOo74uzaw=; b=EBRWMakJCYoGJJz708QMR4JpJ9 Iyw4ABtfHKI9mTB75zTknn+9VrZy/WueLbUwGEUppXNbDTDRsfjpA5GujSVM0g3AIDWM8GLSXXUWJ 98PKHp2RyYYN7FD/b8b02hec8fJVv0JUT/q3kJ45ZbLrbzm0Twd85nGQTX+dqoPIb58bzE0bsIXPM 2yyjlwyTTBUitx/AmFaHWq7SfsOzfDKG4zY8pIGXKoIZFANgUg2hVXdBD8C1Dp4zU0fUcHI+W451q BvfJQoA9cTolvF9BTlftCrp7mEVbcxubWRvdHyE5xDX0R/+vM3zuMB7AMhx/+VWENlqa7oFHS/kFE x4C7jVMw==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfnpW-0000000949k-0O3i; Thu, 29 Feb 2024 21:20:38 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Miaohe Lin , Naoya Horiguchi Subject: [PATCH 8/8] mm/memory-failure: Add some folio conversions to unpoison_memory Date: Thu, 29 Feb 2024 21:20:34 +0000 Message-ID: <20240229212036.2160900-9-willy@infradead.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240229212036.2160900-1-willy@infradead.org> References: <20240229212036.2160900-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 2962A160008 X-Rspam-User: X-Stat-Signature: 9unwrbwzzdj4ebqec7xykw1fp8c8nboh X-Rspamd-Server: rspam03 X-HE-Tag: 1709241643-817914 X-HE-Meta: U2FsdGVkX1/ZgeQt7KLagw4vjWQfn4kLnjxI9kkVuYcy7wMZvUYUevGOgQK7zBwAQ6+mKdI0rj7Hmx+ngvgVyCdhUKmTyIt0iLn2UAsN8+ccX7SQWCyc6DaMq0nDDajoYUVyzeqLCjOrar53ufqrP3GQEqZCbfN3m8ArlklYJ93nAtkkZJhvX12CZKSSRf6nvAI5hq1Ro5cWu8FZYQeD8/XJsC1vKE7Ox2AtSXNSOVClZtfW6uFtR+7R9CCosSch4uVgUh3bmKTJb29sne9fGZ/b33rG2eBYPPtzl1zN+N2ECIDc4Wn6IYKZJdhzEXvF1ovwTgQVMq9guSL+0PwAnLTTzHXdYQnZT5alxuWJ7i4xe46iFjmPmsqqIs7ls3DO+xycdjQSJJG3v2J9/FwQSBFqxWyA/VYPdVDw95H78xFzTDMN9EN/kgx0N0MhG/msc3hQ6Db6mLqqh98wDAKGSn78+l7TygK4T4R4beqI5/u79m+S0H264R/5jxHa9t1CcbWsIBx3PI0I7Q0PWEINMaxIcmx7B/13pyiPKfNdsQ9kBPWnEU2vqV/O+ZLESB3OI0YpKm1S11sRpbJpbPvkpEGaAIxC461S/ZdijSN+U379w7/L2hqYKDtuypX3DxpZ/6Vjl7o2WDFu+xjrLOWaly148MxDQbGa3HK7YoUN2GI8M4xriLTt6UuBJbirxTtwJiHmuq9v5bTT/+9G0j+3Ke++JamI/ATcP13h3JqiJzhTjzI2dc6kZ+At5yz34oK58+eWKNfN1oRN3gUvCY8Br/xVk21KqiIvgHYssCIxQm6hTUrpPbTiRddjNlBpc5c8czuw4YHB/WNnYMKf0EzZJ0NxRK/16pUE4XgKJeuG9+Bp0hkjhcd/2uiFpBONJBoqGYIbnCSebmLhRkQd/9nYAIvsZ1jsJi52 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: Some of these folio APIs didn't exist when the unpoison_memory() conversion was done originally. Signed-off-by: Matthew Wilcox (Oracle) Acked-by: Miaohe Lin --- mm/memory-failure.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 56bc83372e30..0806edb48b61 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -2556,8 +2556,8 @@ int unpoison_memory(unsigned long pfn) goto unlock_mutex; } - if (folio_test_slab(folio) || PageTable(&folio->page) || - folio_test_reserved(folio) || PageOffline(&folio->page)) + if (folio_test_slab(folio) || folio_test_pgtable(folio) || + folio_test_reserved(folio) || folio_test_offline(folio)) goto unlock_mutex; /* @@ -2578,7 +2578,7 @@ int unpoison_memory(unsigned long pfn) ghp = get_hwpoison_page(p, MF_UNPOISON); if (!ghp) { - if (PageHuge(p)) { + if (folio_test_hugetlb(folio)) { huge = true; count = folio_free_raw_hwp(folio, false); if (count == 0) @@ -2594,7 +2594,7 @@ int unpoison_memory(unsigned long pfn) pfn, &unpoison_rs); } } else { - if (PageHuge(p)) { + if (folio_test_hugetlb(folio)) { huge = true; count = folio_free_raw_hwp(folio, false); if (count == 0) {