From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9259AEB64DC for ; Tue, 11 Jul 2023 22:23:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2A6D16B0071; Tue, 11 Jul 2023 18:23:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 255C36B0072; Tue, 11 Jul 2023 18:23:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0F6FC6B0075; Tue, 11 Jul 2023 18:23:08 -0400 (EDT) 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 F12536B0071 for ; Tue, 11 Jul 2023 18:23:07 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id BEDEA1A03C7 for ; Tue, 11 Jul 2023 22:23:07 +0000 (UTC) X-FDA: 81000757614.01.A0F55AF Received: from mail-yw1-f181.google.com (mail-yw1-f181.google.com [209.85.128.181]) by imf17.hostedemail.com (Postfix) with ESMTP id 02FF540002 for ; Tue, 11 Jul 2023 22:23:05 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b="PA+wbm1/"; spf=pass (imf17.hostedemail.com: domain of jiaqiyan@google.com designates 209.85.128.181 as permitted sender) smtp.mailfrom=jiaqiyan@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689114186; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=d/GtFb0EqNYu9Ozo0dSp+bce5y10je/SnpQEJxWby1c=; b=AuxXwA1jgnhAe/9u75VRzfHwBHgzS8HPqUvMeohUDv++Afj7nmhdRWNYXimZYSfYJn2N3g b4r7Fqkm3Foj4eWA1kpU/JPxpP5qQvc1HHq+MafiSF6bg1Je290ZpYpEH6cB5Alvj47Evc /Dd8BKNnRYd/fqLSwHDuG9nx/Wz/0aY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689114186; a=rsa-sha256; cv=none; b=R44hmqDTcflrDJtP5fxVKJ/H2hQOrrSra0jOeqCDzyiiHbWc3/Qws6uX6iP1ryzG5aa553 HBoncLz8RcreKdYf5mKp7GLriAdIep/PS6rF5m4STKzztJKJYS31vO/n7pTjF1eEPMtjyy GQavxJ8E1DbVLkzWvOtxJ8Aw6ffI7co= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b="PA+wbm1/"; spf=pass (imf17.hostedemail.com: domain of jiaqiyan@google.com designates 209.85.128.181 as permitted sender) smtp.mailfrom=jiaqiyan@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-yw1-f181.google.com with SMTP id 00721157ae682-579d5d89b41so71615997b3.2 for ; Tue, 11 Jul 2023 15:23:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1689114185; x=1691706185; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=d/GtFb0EqNYu9Ozo0dSp+bce5y10je/SnpQEJxWby1c=; b=PA+wbm1/vKXTWoURcR4YLVKRbPS4NYL89xg1LcdSjSXGTOIbJsyPT0jnF5DAtptEjs HlUQ2PCyfmiLOAeXyc7/PGo7uTaOQr3Gi85X78rf0hchLpcHH/eOk9MMv2S9adwTtieu xf9fy1r+AYNS/LmNYZyoamQOHp8cItfQ7nmo+F0PLRPPSJBBB3tas3aXYlVwiHLqhAVy 0VT+CRUdGLwJtXbZQ6QCpP0VZtTB6fsru0GYFIAhwXUjYYxOk0GwXVqEdDVmGyjB5cXl g4TADxuLnA4kC+wve/uLFqvdGulI74qIhETkD4T2SBS30WfwyF7QRx23+/i+ySAFYi9v dfXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689114185; x=1691706185; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=d/GtFb0EqNYu9Ozo0dSp+bce5y10je/SnpQEJxWby1c=; b=Rax+uYk/nb+wHMt+/8egj0PQINPQECp/hNBnxehyhEH/LMczk4J3iud7qWzr3rXklO vQk3CGEg3Hr9TLk/85k0V44FYslNyPXUUTOWzVbM/7MtHbw+/gqBrV+GK0umQy95uoGi knrixMQVFnz420v+WrHiAHV9g8uN/Y/s4yTnLCM5AkCnFEMUX3jlpMoIFfI2/jeAW7g5 K7Ws/+Fd9WPVhCXgQ1+11mP3VSXiBkX6ikmT6/hhaPKNOTW0XrUakFdcyJJCWAzUNgQs m37SE7n2g5ybhgzbJ25fsy9RlB9aXqLtV3NtCdisedVWalcfq/9MAApJYucFv7DoOH4d ICKg== X-Gm-Message-State: ABy/qLbxVYXrOF4PnB/bxfTbtC8+Pj2vCj2uhbqRlxnzi8oO+Ht8qk+A obEfWRYY+vtiywnkaOvX433raLOChCOeyGk3yC3ctw== X-Google-Smtp-Source: APBJJlHSGSxkeoM3MDBUA7qbKDAppZt0q6fwagWhE8zrPKtjQWQ5EfKY2no5Q3+nwz29jpL/GgjTtCayWVPy55OSBkw= X-Received: by 2002:a81:6ad6:0:b0:56d:297e:7c8c with SMTP id f205-20020a816ad6000000b0056d297e7c8cmr15936031ywc.8.1689114184945; Tue, 11 Jul 2023 15:23:04 -0700 (PDT) MIME-Version: 1.0 References: <20230707201904.953262-1-jiaqiyan@google.com> <20230707201904.953262-3-jiaqiyan@google.com> <6682284d-7ad3-9b59-687d-899f4d08d911@huawei.com> <20230711180159.GA3887@monkey> In-Reply-To: <20230711180159.GA3887@monkey> From: Jiaqi Yan Date: Tue, 11 Jul 2023 15:22:52 -0700 Message-ID: Subject: Re: [PATCH v3 2/4] mm/hwpoison: check if a subpage of a hugetlb folio is raw HWPOISON To: Mike Kravetz Cc: Miaohe Lin , akpm@linux-foundation.org, naoya.horiguchi@nec.com, songmuchun@bytedance.com, shy828301@gmail.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, duenwen@google.com, axelrasmussen@google.com, jthoughton@google.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: gd1td4a93gakfdjqnn8o5bqypxi4j7yf X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 02FF540002 X-Rspam-User: X-HE-Tag: 1689114185-707262 X-HE-Meta: U2FsdGVkX19tZ1dVzdyVosJ5okHkOsnFCHFerxVeP9hfQrKiWJ6doujCyCqW+pBrqdWTJw7TuucfoKFo/tXgYhmWNA3Oyy0VMIG5cDNqKcYmSrSHg3/BIWb/Hxr15hov7kDVqTdWORrkqxdDRktc7B7Rs4H6fKqH7W9VdL7HIpIkwsbeqX9RGtB2uBc8zMjGroBry6120DqASUaheQG8I37o6dNwZVPVDYMXI7GC+bnjFnwdJga1IT11S9Gb/m26U78cVGEsGrXlS0PVFe1fhLbrv6PIln1HOIBsaNk0XyNI1UfoUBP3i+oauibl6n2yc7ZCzNz+YlYD8yjgxek/lIDKHyGnm4SZxq+poa4KcNiYhHgXUJ31+HJjEnDoetIBcq/3dPIOOAEDQCn+oaqGvhvCpS+mKcDl++BZpGOQn4FEuSYZVL1UBHzsUsz7bxC9H+9JITX+9JdVwgHSXdYQmeht+Xfu5ycudeDEOdp/eytDPcd7q9XnJoSS4zjlzZXU7aZzdxwu5kquC0lVeMus0W0OUaHbf9KO2r4CH3PpKI6uCnYyybyZ6PykUq/pJNeJtRCvlYtL6BKNrmxb/Ax2LhEMNbDas/IsX7Bx2CAei+CMm4lFPMne71uU5MqCFhN9XdGH6X+XCvLtqCReNZOOeWr8YIji7WyvS6aXww/ueJxvKX8DMW9wlolsM/IJTHacT7xBvVmVWm7l9WKwCzz/vFbc1QOyUT1vi7id6HU1Bd/potJA5lDInh6zm2rZxxliH3hKHsvAX09pUZ5b0VWMbIk8gcrd+5NeGhvn1OglgykonZ3cRoeLBY/TUBtOe1Qu5z84t6xWRCS4J1EYdVxYhV03l4sL9Xkp9XMcj49661Ec6OxsFS8sO25kXSPriW47jtE5cF7LB09SqzWqo+SMDoqDdr1vkAGDl/nm6Spx8l1DfcCAU8mwQZWl1HSgSw7dxqhDilXkS7KSbdTO29l LkAqVRCu JO9d9ULYbguC1ijel6QtkhhPbjnaHRP5DZc/JiB2kb6+lmVTOjFScmKdL707Jw0w6COudtn+cEBUYcUYTnl+M30q6Loutx31SNH274psvMgyVyk4QjXzvUP/lanq4mNsxprYu0ylrreBNHaLI+A83dcj8fz5pMYkmIv1BCdjrLREA92xZYEJ0gBcGu9p87dSZVV5QZrUPo4UeJkHJJJ3qWanSud08KQjlhjJC6CbDSjrCISg6r5/ih5EswAymwrXz+yEo+OxfG9RAHRKm4z4o4HEogk0bqt1VS1lxPBZLPY+y0Eo= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000568, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, Jul 11, 2023 at 11:02=E2=80=AFAM Mike Kravetz wrote: > > On 07/11/23 10:05, Jiaqi Yan wrote: > > On Mon, Jul 10, 2023 at 8:16=E2=80=AFAM Jiaqi Yan = wrote: > > > On Fri, Jul 7, 2023 at 7:57=E2=80=AFPM Miaohe Lin wrote: > > > > On 2023/7/8 4:19, Jiaqi Yan wrote: > > > > > > > > > + if (subpage =3D=3D p->page) { > > > > > + ret =3D true; > > > > > + break; > > > > > + } > > > > > + } > > > > > + > > > > > + return ret; > > > > > } > > > > > > > > It seems there's a race between __is_raw_hwp_subpage and unpoison_m= emory: > > > > unpoison_memory __is_raw_hwp_subpage > > > > if (!folio_test_hwpoison(folio)) = -- hwpoison is set > > > > folio_free_raw_hwp llist_for_each_entry_safe raw_hwp= _list > > > > llist_del_all .. > > > > folio_test_clear_hwpoison > > > > > > > > > > Thanks Miaohe for raising this concern. > > > > > > > But __is_raw_hwp_subpage is used in hugetlbfs, unpoison_memory coul= dn't reach here because there's a > > > > folio_mapping =3D=3D NULL check before folio_free_raw_hwp. > > > > > > I agree. But in near future I do want to make __is_raw_hwp_subpage > > > work for shared-mapping hugetlb, so it would be nice to work with > > > unpoison_memory. It doesn't seem to me that holding mf_mutex in > > > __is_raw_hwp_subpage is nice or even absolutely correct. Let me think > > > if I can come up with something in v4. > > > > At my 2nd thought, if __is_raw_hwp_subpage simply takes mf_mutex > > before llist_for_each_entry, it will introduce a deadlock: > > > > unpoison_memory __is_raw_hwp_subpage > > held mf_mutex held hugetlb_lock > > get_hwpoison_hugetlb_folio attempts mf_mutex > > attempts hugetlb lock > > > > Not for this patch series, but for future, is it a good idea to make > > mf_mutex available to hugetlb code? Then enforce the order of locking > > to be mf_mutex first, hugetlb_lock second? I believe this is the > > current locking pattern / order for try_memory_failure_hugetlb. > > I think only holding mf_mutex in __is_raw_hwp_subpage would be sufficient > to prevent races with unpoison_memory. memory failure code needs to take > both mf_mutex and hugetlb_lock. The hugetlb lock is to prevent hugetlb > page state changes. IIUC, __is_raw_hwp_subpage is only taking hugetlb_lo= ck > to prevent races with memory failure code. Thanks Mike, I think mf_mutex is a simple and correct solution. I will drop hugetlb_lock from __is_raw_hwp_subpage in v4. > > Of course, I could be missing something as there are subtle issues with > locking in the memory failure code. > -- > Mike Kravetz