From patchwork Fri Apr 12 19:34:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13628294 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 40B05C4345F for ; Fri, 12 Apr 2024 19:51:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8988D6B0095; Fri, 12 Apr 2024 15:51:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 84A156B0096; Fri, 12 Apr 2024 15:51:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 711206B0098; Fri, 12 Apr 2024 15:51:50 -0400 (EDT) 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 4BB306B0095 for ; Fri, 12 Apr 2024 15:51:50 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 07296A0FC1 for ; Fri, 12 Apr 2024 19:51:50 +0000 (UTC) X-FDA: 82001925180.28.15E5BE7 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf25.hostedemail.com (Postfix) with ESMTP id 60AC0A0018 for ; Fri, 12 Apr 2024 19:51:48 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=d57JR1KZ; dmarc=none; 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 ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712951508; 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=LFIGzt+jg2jlYQXhbYFL9JXXNKyVh12kURc8dYVHo3A=; b=2bKAez+ISBPR6/HrvpT2i9eTZygQXndNMgNNaup+4MS4k6MWBx5ImIQxUtyXa7VMS2gAYs zRMOVKM6oYGiR0dehxcX/YNB6IeY7r6WW7UaZhi2irrpuTROS8Q2xnV9hsObkd+Lh5m6RZ eoH69etU5qEcCntC+X6+vK8/csnrzUw= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=d57JR1KZ; dmarc=none; 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 ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712951508; a=rsa-sha256; cv=none; b=70uqlQ2VhDO1Z0fpqEMCpIDphYhqS8F+HUjjIOVjv38iUwyWrvxF5toKl5PgHwSCiK5wSz wCVDRi2tfXL3vjMoI5Ku0SVcV8hnNcPaC+KLnmYY0SkgmcQq296YEwm0Eq9Kji4LHCNnZK xqvF1BYJp+5Y2HRdlemiDQ7mz0fVD0I= 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=LFIGzt+jg2jlYQXhbYFL9JXXNKyVh12kURc8dYVHo3A=; b=d57JR1KZlfrWzKyllgEXk2CIl8 h3/JSdD46rtTWZXEcFnQfwxFoWEr510YxFcFBfWXxRaW2BACp/HSyP6sWnML4KTS2K7P9ipxdblhL nt1275I7IlBoDWKYTQM/04CZJj8G/MegvOUbCr6wnpFxpkqKDCXxTTOBavyjJsLtDvlNqE9xrlbfw cZwIS7ti+MytxW/AHRujHc+CCRUhUX3aYMTVX/zlnsVOiwt5Mxf0tne4KXd7UxGdsICuVTvTV1Mfz Qefb6Ie0iJHlCP8f6p32cg67DYK87Xlnd0CrzyT+xsWLAy6mShzxAeWPw/C8Kkc1lYqFj1x0T/UdW ZAfE3HZA==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rvMg3-00000009t9e-2OnC; Fri, 12 Apr 2024 19:35:11 +0000 From: "Matthew Wilcox (Oracle)" To: Miaohe Lin Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Jane Chu , Dan Williams , Oscar Salvador Subject: [PATCH v3 01/11] mm/memory-failure: Remove fsdax_pgoff argument from __add_to_kill Date: Fri, 12 Apr 2024 20:34:58 +0100 Message-ID: <20240412193510.2356957-2-willy@infradead.org> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240412193510.2356957-1-willy@infradead.org> References: <20240412193510.2356957-1-willy@infradead.org> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: oyrx9ckf33upqn59dubkfh5amyzbk1jq X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 60AC0A0018 X-HE-Tag: 1712951508-934815 X-HE-Meta: U2FsdGVkX1+rnf0gAygDK7vRIPsNoh7/c+/RMZZsooRUaTRSMupJBpnWTo04/xLh3tNWiTPKfi915jT4t0hBo40TVNWgwl4RCcUV28ZiMK9vfvBD7GqWBMPPPElYs6et/sGqFyre+uDFbVHZzc38H31Ts40jI/1ly30oe7tnRMdUhKAJ+ao29uZRV4MpyfROqO1FTv7KROhwJ609Yp+ukDaZDsSYpM0PR+53af5vuYvxQhcFP/TVGllnaRnVqyQIkRhTbSAGlhIkYd/+WQZ44C35EJreHU2oxXgCf9+0Mi8F+egxm6FTB6Vd3reLX4QcQ7Gkx5iZi2kSFjKsVD/MV+VPIJbiu05do6dEeYwU/L+nMUBeN1LFHqVud4WW528/eGqMGlv+SIqRRUyAMdPh52mZXlXbmRXGJ9cf3qfLW96cwF8KD+K5xV1Mw2WQmWfJh6pjkDM4lKdfDw21uxt5MMybqIlYunESAHPMIQEFM9lPLYGe6nhuv1YLWceKhc38WnU99tFoBOSVepBwBLwlhbJkAhyqe2SJx8+/qbqC5QX3NmgzN5VOx+aWtuZFvBrfvaTRB+RF+1MQTMc2Z+Ym9lJcXx0t6dAn5Qc5/ZsYntpJL1diaEUB/klr4En+e+oIIMafbdAULBWETzQgoH9sd1qc8GT25WeJYgImDhNK7LFhCbVfNORdDgHfYLpV+FcwhSu8jgRJ4tJngsxM/2+jCVP6xXfDITgcBGNVRi1MhvE1cBLvPaokG2tg4SCeLizF2+OS7cE2Xd/a70/ZOH3Snr0lKHTJD0aPLB1t2QXRZmk46L6NFwUwhbsBArrp2ULYPzvgqOq9lrgLP0oE2CNnEzagQA0UiZBqF286jVxrH0d1dEmRYNpBVpHSLNKM+VrPFfpQ+tgay+lEe0Ufn+3zvEoeIiaCC8BfIUZkDqPJdzQeRDQk4C1/bETYv1XC1FqhPnBpslfWlGriChuQ2U+ UX06WHWM yFgGY/K43hcyxhE931fbA+a4gmer8xcV4tDhHMsjmf/YHsaBp31WX2E6y2xSNfBkB3HgF9/j0SzmbYZwlCy3ChxC3dKhXbwDU0/+5DTD1K0DnMVkvMmnOrTKdNDjXzYWG3D9pUOD0gXNbCOeurRcEAaY/mDI15hboTH4p6OjAa9p/Zg6oD7d49lY+1qTIC7NFOh49VOCaaZShlR1qK1ZPuFn0jYIenUPdut8CDMBvs7svv5aIA1xbqA1Np5lostW0JP/A3OZrYnfmEkKPKBztgFCQxJW3uWvLyIcW4ciCfy/Ydh8= 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. Acked-by: Miaohe Lin Reviewed-by: Jane Chu Reviewed-by: Dan Williams Reviewed-by: Oscar Salvador Signed-off-by: Matthew Wilcox (Oracle) --- 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 ee2f4b8905ef..8adf233837bf 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -421,21 +421,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; @@ -445,12 +437,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_address(vma, fsdax_pgoff, 1); + 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)); /* @@ -480,7 +470,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 @@ -498,10 +488,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 /* @@ -675,7 +665,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_address(vma, pgoff, 1); + __add_to_kill(tsk, p, vma, to_kill, addr); } /*