Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp397653pxb; Wed, 15 Sep 2021 04:47:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJybgF7e0broV2bYsitgCghgvxlr77e6paxgmU/jxChA9RXs7WZW7log+PY+WuNVLASOyhhX X-Received: by 2002:a05:6e02:1111:: with SMTP id u17mr15668059ilk.262.1631706459899; Wed, 15 Sep 2021 04:47:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631706459; cv=none; d=google.com; s=arc-20160816; b=OoUD+VNS7kF5diTUAZKdLirQDB2FI41Xvv5vkK80B6IsRAIFh9y0kjQP7aas0J57h8 Ijuc1LvCMyQlaudrMPQsB4WSngN7zxZhRBn1smSlAedXSrMx7DQ2ytuugkdVwSPuCrs2 ml9+o4uz6NQLEzHfvezGxUgIFtdVZ/b86rEeRDBVUzwrj+uiRXPDk8KB4rg2VKNNTLzD kpxP/uden5OEZuHk+CKInSwOtLg0xhsv32cTUng5oZot+KxUtnCc0u+4ynb1WchCUHay 8Mf1/CP3hrnZtOpZj1+MhK0lw0JRTNyNshvodmjfj0Ze+itZWpw50lv1yflVL3G+w9hh z1fQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=4uYqvhZeHXv+ssAcqC18NkCUO7S23+uQI3/MrtalBV0=; b=nIlbRCrWt1ez4upTeaj8r5Oth+J2WUbprIaf5tABmgJzIYCGawIpNP2n3xmJZgscci IyB4Fd+nBqC/xp0PYbssjYum+gBwvgRUX0sCe9WUUjnJ7V/jx6khTh3F1MnExCzN47zZ g4BwAQUmMn+SqqRL3FnHsMFYx3uH3r2z1vNAvpI5+oEcY8mr5NuQRWEmVnLkfRvK2ZyW H7TGRt3bq6XrizFTbDp1/aagF43ogYvgx+R42SVh7pTIRmq+HI+C+oqa3E9HNzZYSay0 L29Api9RLcSEuiSTv4DEEkYvipgpBjiCooQaXT9A/eFYhEFe8uHKnvw/J9uREWS0mzlP abow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@shutemov-name.20150623.gappssmtp.com header.s=20150623 header.b=jyiV1pAo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b16si11318455ila.182.2021.09.15.04.47.24; Wed, 15 Sep 2021 04:47:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@shutemov-name.20150623.gappssmtp.com header.s=20150623 header.b=jyiV1pAo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237415AbhIOLrh (ORCPT + 99 others); Wed, 15 Sep 2021 07:47:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49724 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232791AbhIOLrb (ORCPT ); Wed, 15 Sep 2021 07:47:31 -0400 Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2AD1CC061574 for ; Wed, 15 Sep 2021 04:46:12 -0700 (PDT) Received: by mail-lj1-x22a.google.com with SMTP id j12so516187ljg.10 for ; Wed, 15 Sep 2021 04:46:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shutemov-name.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=4uYqvhZeHXv+ssAcqC18NkCUO7S23+uQI3/MrtalBV0=; b=jyiV1pAooDObXMWnm3SrBe9VySDlVMgGIdz0ZOAqYFqHTDbGSqfGlclgEpgSJnLk9Q DFka1G8+6sSoD3HNSqa0AppZDm2J1kkZRyV+Ekj0m8uHjXRySHiMBmH7WY9nhKnUr/VT 35oCwlYebNGuHog/4c3gCuRkJXVh/bIk6Tdk5zhvhNarQQSivcYCtFgJSW/Rz12DW7GL jUh7hMukNOAQHN5HvXwrMx8rRg97dA6+kwG/LTGpn5AomPepMFIPfwm6cWNOVFkW6QI6 7bHQrFQgbUXL52514a9fKrhGs8YBnPNc3rmHQ/wM43OJGLye+GKaW5qLT1AkYcVARpnv qFHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=4uYqvhZeHXv+ssAcqC18NkCUO7S23+uQI3/MrtalBV0=; b=P6GT+i7EmE2UD+VgYSEHaUhMm0ULxhrR4C2KbVSfCOYdQAG6jA/WyL2wszUSRhF7Xj sxxz8jMZcw0pmeyYoKbpfy73UDSdNJDjLIH2Bl9qB2mID2rHahlkfJ/LXn26RFAZs3xg py4/0hvZ91H0ppDNAaG8+2SRnWI5AxjZ4so55K9EEoxBoZwQSMCd2nH6LNpJf9lyVSpA LK9kHI8DK9n73Ud7qgETZMUbTZe26zVas6THpBZw/xkJX5/8J8osLWezW+Ql0rxryTFR z2+wPZ0Da9sJ7jutsiJgmI151SjzCYzxr+ogL/7jiwq2nuMUosF12Nt9Rx1FUIzhpCdD taaA== X-Gm-Message-State: AOAM530qEEG7Y6N2lccReJB+WmIQNCZwcG0ECIjfUC4sV3Xo6iMfTh6g Lm9DqEI3z1DO0fVuduiPzCG4zw== X-Received: by 2002:a2e:a546:: with SMTP id e6mr20030432ljn.117.1631706370471; Wed, 15 Sep 2021 04:46:10 -0700 (PDT) Received: from box.localdomain ([86.57.175.117]) by smtp.gmail.com with ESMTPSA id y14sm107725lfk.237.2021.09.15.04.46.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Sep 2021 04:46:10 -0700 (PDT) Received: by box.localdomain (Postfix, from userid 1000) id 310A7102F4D; Wed, 15 Sep 2021 14:46:13 +0300 (+03) Date: Wed, 15 Sep 2021 14:46:13 +0300 From: "Kirill A. Shutemov" To: Yang Shi Cc: naoya.horiguchi@nec.com, hughd@google.com, kirill.shutemov@linux.intel.com, willy@infradead.org, osalvador@suse.de, akpm@linux-foundation.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/4] mm: filemap: check if any subpage is hwpoisoned for PMD page fault Message-ID: <20210915114613.lo26l64iqjz2qo6a@box.shutemov.name> References: <20210914183718.4236-1-shy828301@gmail.com> <20210914183718.4236-2-shy828301@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210914183718.4236-2-shy828301@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Sep 14, 2021 at 11:37:15AM -0700, Yang Shi wrote: > diff --git a/mm/memory.c b/mm/memory.c > index 25fc46e87214..1765bf72ed16 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -3920,8 +3920,17 @@ vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page) > if (unlikely(!pmd_none(*vmf->pmd))) > goto out; > > - for (i = 0; i < HPAGE_PMD_NR; i++) > + for (i = 0; i < HPAGE_PMD_NR; i++) { > + /* > + * Just backoff if any subpage of a THP is corrupted otherwise > + * the corrupted page may mapped by PMD silently to escape the > + * check. This kind of THP just can be PTE mapped. Access to > + * the corrupted subpage should trigger SIGBUS as expected. > + */ > + if (PageHWPoison(page + i)) > + goto out; > flush_icache_page(vma, page + i); > + } This is somewhat costly. flush_icache_page() is empty on most archs so compiler makes the loop go away before the change. Also page->flags for most of the pages will not necessary be hot. I wounder if we should consider making PG_hwpoison to cover full compound page. On marking page hwpoison we try to split it and mark relevant base page, if split fails -- mark full compound page. As alternative we can have one more flag that indicates that the compound page contains at least one hwpoisoned base page. We should have enough space in the first tail page. -- Kirill A. Shutemov