From patchwork Fri Nov 9 06:47:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naoya Horiguchi X-Patchwork-Id: 10675377 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3EE0413BF for ; Fri, 9 Nov 2018 06:47:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2E67B2DD3D for ; Fri, 9 Nov 2018 06:47:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2298C2DD52; Fri, 9 Nov 2018 06:47:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 93DE02DD3D for ; Fri, 9 Nov 2018 06:47:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5BB4E6B06A6; Fri, 9 Nov 2018 01:47:51 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 541366B06A8; Fri, 9 Nov 2018 01:47:51 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3BDD16B06A9; Fri, 9 Nov 2018 01:47:51 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by kanga.kvack.org (Postfix) with ESMTP id E14C06B06A6 for ; Fri, 9 Nov 2018 01:47:50 -0500 (EST) Received: by mail-pf1-f197.google.com with SMTP id f28-v6so782893pfh.6 for ; Thu, 08 Nov 2018 22:47:50 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:sender:from:to:cc:subject:date :message-id:in-reply-to:references; bh=N7S6I8bftQslxdirzJ9Dh7FpKhaSjYR8AwdNzVMTAb8=; b=dD9UsFWxXsnT+knjpYfH5On1XcBuohar1tdpQjGTzev7TgyHjldFe+kTl5aNXVZfRu A1Lx1g8xNfQJMme5NYoIqdW038NVdbCbjAqnUoZLGdg+Q+gpiPy6KQnoTFBVXxji0bGR Kp+3PSWALgB6WbbO5/R4k4TKjlkFysrKRKP7HmBnDMYCrmfG6C0f0YOonTUs3ETESyeE d8Ad/x1gvrK8/N6NxCDh3eMysKSdJGWJRem+Rzo1FZ465tsb5SOMPYvgBZiTRRNrYLlk srs/NQFx0weiSmuYMhVwzEFw7U/UHNHbp7+upE7Jy2hDJPWhCEhyAD5OG03cZhH1jAOq h41g== X-Gm-Message-State: AGRZ1gJUeUDEQ9WjjdPDAx1KfV75XXf0BZK5ooisiKLeTxE1fmCNAVxv P27GV2zKQO3MqnQa73118UCGcEVI4xk64NvV2SZYFI12qyQnRmCqLuxnM3Q5iVHBAprEXmANRRK owsnQqNDLEnZvb2M+XPN+SUu1l0dnqD+P/Taix61kSplQUmzWOynCZ5Wh0f5U9+UeDkO2Tsbwlm kk5O4GMEdIrGNRaN+/3Vl4SbsOyUSUczeze9sw5DWqfw53897a83sgLfLtyXKAcdR1FosLvw05k qnu3o9424ybGY7EkHwLOjHhBbrjz9/Vh46nNRrFQZhBldk3QkYeNt8UAAvF2azU3iped87Fs8rK PxeKUiaH7WinB+/EYTJ1Bhvez+ulcXCZJqmWbsdBd/l9J3+ZIWYn0AQ1Cv1ArbIxWR1PUD9gHA= = X-Received: by 2002:a63:2bc9:: with SMTP id r192mr6543526pgr.172.1541746070594; Thu, 08 Nov 2018 22:47:50 -0800 (PST) X-Received: by 2002:a63:2bc9:: with SMTP id r192mr6543503pgr.172.1541746069655; Thu, 08 Nov 2018 22:47:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541746069; cv=none; d=google.com; s=arc-20160816; b=y0o2By+2cYWOGvdDBEdEhYm0uQT2UJWCKj3EHfa1wmpdkQXiaL4rXIYlIUoa/V4Q3P O/RvzhFGsS7q8C9gY4EMSICbTz4EWOTCY7toJluflKPk1afDRQYFKabOks58esz1ShRo 1G/cZsOCxvaA+p1qa8ATVSjuEtecIN+b6gMxLCXc0iViCbuXNiaz7PXlE6jYFlTys1x8 1MzzjopaXVhzg4wSIkL/hm2iXYakMbO1j/QnCTEVyfowbwFOsAqD5t8ZYrqb8EkYaFWr sqKiSMMl9af4BS/qLEPYr4p1uWtZq9Byt/SrtZR+SvBzmJ54W7LdOf95l4MpLp4S4K23 wTRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=N7S6I8bftQslxdirzJ9Dh7FpKhaSjYR8AwdNzVMTAb8=; b=a/+bkjj17+zwqTzYPAOMDe6fPL4MSLdoXB1OMzTTxInhZbO9UtMquBGgkcIqRP7OKE TZxAU5Kgc5/2tMn+gj7JjB+iZglQwa8EbkQeeVa4HulL+FRaUAwo59pDa7VS2Bh0WGWu RLKjTOfbyvOM26h6QTUgyG/CZkg9K/XbsyxWBlbGI42rjEdbBEMLkje8uVPyPXONtO+t VtS194UqwaEjmCPrG2DrWVAt9IJ36gq8PzekpDSgyd78N0CKoUIuQjpk/j8IjZy1ujHl du6m7GHdlMFsy9l5srA6LClavBIHuXLszbEVMYbc8okYnAzMMdBqRX1NtaSapjS61MVx BySw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Vbtsjxzc; spf=pass (google.com: domain of nao.horiguchi@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=nao.horiguchi@gmail.com Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id q14-v6sor6959767pgv.63.2018.11.08.22.47.49 for (Google Transport Security); Thu, 08 Nov 2018 22:47:49 -0800 (PST) Received-SPF: pass (google.com: domain of nao.horiguchi@gmail.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Vbtsjxzc; spf=pass (google.com: domain of nao.horiguchi@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=nao.horiguchi@gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=N7S6I8bftQslxdirzJ9Dh7FpKhaSjYR8AwdNzVMTAb8=; b=Vbtsjxzc4u+FeISNSR2pYhK61DdEYtKpq4/sBiclUcKp28SAlJ/ebQ3kz6WgJ+sKSK rCwEvFupUmRMKzsfTzv5QEwSqqt/tiqAzHcdRNYObvLle7KPs+ufmMdRz9KcLjTQzLIN 4BLFd49ItwISbR2Ov1n4VRukiCJZMv9CkhA6XEjDiDf6/KV7W4g30HpYD0xRa60G/Lbk Anzp3zCauT2LF2xV9SC0J4il0jh7HkSmo+a57gzmKuLNK/HwMjFLZ9vI9JbApHq+M3Ji +uWTgs/ssSFTjYL7TJtSfRPmB0ddAoRLVcZiH70dgCovCA+EjgpAwNvFgRBEP5X3bz/n DlNA== X-Google-Smtp-Source: AJdET5fHJHDcr0dhGRXWOs+m/7KLTmuB661ydLhlRsy1qSm1ieXKAutd9hhcrekp6ruTbsy3J8cuUQ== X-Received: by 2002:a63:e54d:: with SMTP id z13-v6mr6385719pgj.169.1541746069212; Thu, 08 Nov 2018 22:47:49 -0800 (PST) Received: from www9186uo.sakura.ne.jp (www9186uo.sakura.ne.jp. [153.121.56.200]) by smtp.gmail.com with ESMTPSA id c70-v6sm6808355pfg.97.2018.11.08.22.47.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 22:47:48 -0800 (PST) From: Naoya Horiguchi To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Michal Hocko , Andrew Morton , Mike Kravetz , xishi.qiuxishi@alibaba-inc.com, Laurent Dufour Subject: [RFC][PATCH v1 09/11] mm: hwpoison: apply buddy page handling code to hard-offline Date: Fri, 9 Nov 2018 15:47:13 +0900 Message-Id: <1541746035-13408-10-git-send-email-n-horiguchi@ah.jp.nec.com> X-Mailer: git-send-email 2.7.0 In-Reply-To: <1541746035-13408-1-git-send-email-n-horiguchi@ah.jp.nec.com> References: <1541746035-13408-1-git-send-email-n-horiguchi@ah.jp.nec.com> 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: X-Virus-Scanned: ClamAV using ClamSMTP Hard-offline of free buddy pages can be handled in the same manner as soft-offline. So this patch applies the new semantics to hard-offline to more complete isolation of offlined page. As a result, the successful case is worth MF_RECOVERED instead of MF_DELAYED, so this patch also changes it. Signed-off-by: Naoya Horiguchi --- mm/memory-failure.c | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git v4.19-mmotm-2018-10-30-16-08/mm/memory-failure.c v4.19-mmotm-2018-10-30-16-08_patched/mm/memory-failure.c index ecafd4a..af541141 100644 --- v4.19-mmotm-2018-10-30-16-08/mm/memory-failure.c +++ v4.19-mmotm-2018-10-30-16-08_patched/mm/memory-failure.c @@ -772,6 +772,16 @@ static int me_swapcache_clean(struct page *p, unsigned long pfn) return MF_FAILED; } +static int me_huge_free_page(struct page *p) +{ + int rc = dissolve_free_huge_page(p); + + if (!rc && set_hwpoison_free_buddy_page(p)) + return MF_RECOVERED; + else + return MF_FAILED; +} + /* * Huge pages. Needs work. * Issues: @@ -799,8 +809,7 @@ static int me_huge_page(struct page *p, unsigned long pfn) */ if (PageAnon(hpage)) put_page(hpage); - dissolve_free_huge_page(p); - res = MF_RECOVERED; + res = me_huge_free_page(p); lock_page(hpage); } @@ -1108,8 +1117,11 @@ static int memory_failure_hugetlb(unsigned long pfn, int flags) } } unlock_page(head); - dissolve_free_huge_page(p); - action_result(pfn, MF_MSG_FREE_HUGE, MF_DELAYED); + + res = me_huge_free_page(p); + if (res == MF_FAILED) + num_poisoned_pages_dec(); + action_result(pfn, MF_MSG_FREE_HUGE, res); return 0; } @@ -1270,6 +1282,13 @@ int memory_failure(unsigned long pfn, int flags) p = pfn_to_page(pfn); if (PageHuge(p)) return memory_failure_hugetlb(pfn, flags); + + if (set_hwpoison_free_buddy_page(p)) { + action_result(pfn, MF_MSG_BUDDY, MF_RECOVERED); + num_poisoned_pages_inc(); + return 0; + } + if (TestSetPageHWPoison(p)) { pr_err("Memory failure: %#lx: already hardware poisoned\n", pfn); @@ -1281,8 +1300,7 @@ int memory_failure(unsigned long pfn, int flags) /* * We need/can do nothing about count=0 pages. - * 1) it's a free page, and therefore in safe hand: - * prep_new_page() will be the gate keeper. + * 1) it's a free page, and removed from buddy allocator. * 2) it's part of a non-compound high order page. * Implies some kernel user: cannot stop them from * R/W the page; let's pray that the page has been @@ -1291,8 +1309,8 @@ int memory_failure(unsigned long pfn, int flags) * that may make page_ref_freeze()/page_ref_unfreeze() mismatch. */ if (!get_hwpoison_page(p)) { - if (is_free_buddy_page(p)) { - action_result(pfn, MF_MSG_BUDDY, MF_DELAYED); + if (set_hwpoison_free_buddy_page(p)) { + action_result(pfn, MF_MSG_BUDDY, MF_RECOVERED); return 0; } else { action_result(pfn, MF_MSG_KERNEL_HIGH_ORDER, MF_IGNORED); @@ -1330,8 +1348,8 @@ int memory_failure(unsigned long pfn, int flags) */ shake_page(p, 0); /* shake_page could have turned it free. */ - if (!PageLRU(p) && is_free_buddy_page(p)) { - action_result(pfn, MF_MSG_BUDDY_2ND, MF_DELAYED); + if (!PageLRU(p) && set_hwpoison_free_buddy_page(p)) { + action_result(pfn, MF_MSG_BUDDY_2ND, MF_RECOVERED); return 0; }