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 A3A2BC369AB for ; Fri, 18 Apr 2025 07:27:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E2E8828015B; Fri, 18 Apr 2025 03:27:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DDBB7280005; Fri, 18 Apr 2025 03:27:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C549A28015B; Fri, 18 Apr 2025 03:27:12 -0400 (EDT) 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 A26B3280005 for ; Fri, 18 Apr 2025 03:27:12 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 034ED5FA6D for ; Fri, 18 Apr 2025 07:27:12 +0000 (UTC) X-FDA: 83346333546.26.D406053 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) by imf04.hostedemail.com (Postfix) with ESMTP id 1CB8540002 for ; Fri, 18 Apr 2025 07:27:10 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=QnnoJ0fA; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf04.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.41 as permitted sender) smtp.mailfrom=ioworker0@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744961231; 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=Ur1I8SSe3sqk/ILCSVotezrbGQVvGr3AU3XeIQQrGcA=; b=N9egNbyb1am+hrI280ZJi4rCpyrwYVBWxp/hP/34QF4yG8REiAZ128btaalJo5h37XCj6y U6cCQZnaWTf7+rhKxSLem0A57rjrGvPgGPSPg0ZkqkxhQaahXT600kq9z3vKZehb9BpvGT LLlaIqLGr9RPqJ3Fcja5QfULKa5IEoE= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=QnnoJ0fA; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf04.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.41 as permitted sender) smtp.mailfrom=ioworker0@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744961231; a=rsa-sha256; cv=none; b=6PwoIA3jWVBrw010x6G0VsAr+k/8k0YECztbOPZ7fP4xz7RO6gwtunLl71gw7Lsdagl3ue M8VI9ECU0NB6Xj4ceGp7nECUU/MQd71kzItNiy7Lbt32NAT6NP4659uBgxAGE8H64Qx1h8 RFFNobkDuqOJBeuuOQ8Y0lIBHtlXbLE= Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-5e614da8615so3275403a12.1 for ; Fri, 18 Apr 2025 00:27:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744961229; x=1745566029; darn=kvack.org; 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=Ur1I8SSe3sqk/ILCSVotezrbGQVvGr3AU3XeIQQrGcA=; b=QnnoJ0fAqO+OvQBQ2j1AIY63qSvnZ4WAo4Aqe4gevPrQI8d9eQStQXzP0nidMWMhX+ GBBs1y76Gi3VRjBswIloYX/hxlk42LFnBVW3xGuntWwxcjxiGTYi9oCi8Dv3MscAYFvN 3ZvM0yNDFFNlSmScz0wTSuMyVajqNQKr3IJTAt2VsdSdtvqBEIahDOCoLSrg0EHMt/oR lRCp0AuYmbPHm/ZMfGwyqCBACX+y2HTJ1mpYzAV4RUYTDC+Nn6u7FlQSe75R4TrZDRVF Q3pfvBgU3mzRvkphLGk4NfGi5Z4bjwy7dJ76zjQqGhsSvXKzjfqfRQeUoPd0k/fo53K/ Kz9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744961229; x=1745566029; 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=Ur1I8SSe3sqk/ILCSVotezrbGQVvGr3AU3XeIQQrGcA=; b=EX7J9tw64YrTCINajX5axfaH6fx+8qiC2xhj7uwQm6QA8cBukhitr5HPZh5zituxwq aJXccqgUZ2s4esbyAOwWz+fujc/QVD0IFE6TRneLvI2TN3lS6357hXoP5oK7jaQVoQKB Gu8ryxahCRSwZEbh0LbUyBInj4aXDVKRXSqTW0WCYWAVBpv0R0+2GR3VHUwPkdjzRlfP lctpIylarkh99Z3NTnhHSVaog4QxFi5R9LgHWPtMNDVRfeQA7UEqc67SLDgufMWHsCxB Lb3xQTZcZQwX690qxe5/hUfM1fD4JdWlGrxCgJnKSuyjp9tpARFxUfx+l64384I3BjTZ fx9w== X-Forwarded-Encrypted: i=1; AJvYcCWvDZ/f0+zx044lNGdhuf50I2THF+BXuvtut0Z439utOiIPSd/yZg+NAbcuZEhk8X5nuGWa27DSCg==@kvack.org X-Gm-Message-State: AOJu0YwLc3r6zdkT1R841BnyzHiGnp2aukb9QLhnsPR4rbD3ONvTdl1B GceRN7AxeNMN73TeKfPAY3K6tBlqjawPMSmEBEJ8iBqr8pMg94VfGi0yFY6013QUijMvMp3AXK9 zJgHYkMeZ6mrOn848KvN+TUG11UA= X-Gm-Gg: ASbGncsHfcMjWvtMVcREEr04J8DNN4O1rGPdtkfaZGIx2J3rIc5+/9zfNNz0QDv0Mdr B78iCab6lP63GKPaG3RB0hlwvwkhqT/VxwnsdjydMHGmFI8Jo8LM5VAH1zwXXh2lUFckASewboC EVOeJZrpdVV2vP6LOy7LtoXAx5 X-Google-Smtp-Source: AGHT+IFypqS8ZLgIGdco7GWLrZEhryDxXpYox3JOsmUe5Fj2OMmtvGFHZPrtTGgWs7KGsalOPjaVbfsiaX1POHbpzQQ= X-Received: by 2002:a05:6402:1ed1:b0:5ec:6feb:5742 with SMTP id 4fb4d7f45d1cf-5f628593f03mr1230917a12.16.1744961229221; Fri, 18 Apr 2025 00:27:09 -0700 (PDT) MIME-Version: 1.0 References: <20250417124908.58543-1-ioworker0@gmail.com> <20250417150237.ba3bbb3f55f992c692932841@linux-foundation.org> In-Reply-To: <20250417150237.ba3bbb3f55f992c692932841@linux-foundation.org> From: Lance Yang Date: Fri, 18 Apr 2025 15:26:32 +0800 X-Gm-Features: ATxdqUGK3j6TDCMeHYmQT5Dh8-Y6ClSXGCwhqTJFo19RKCQSHL4h3SrivClMaNQ Message-ID: Subject: Re: [PATCH 1/1] mm/rmap: add CONFIG_MM_ID guard for folio_test_large_maybe_mapped_shared() To: Andrew Morton Cc: david@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mingzhe Yang Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: hpbnzghs4ozzoewjrjbfqsfiyem5if3x X-Rspamd-Queue-Id: 1CB8540002 X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1744961230-65549 X-HE-Meta: U2FsdGVkX18iMnLxm5ef2NUXjt40CcGwBRQ1jKlaGz3RzKRuETCUMTuqFIw/tw9xK96Di4kAaASDhxRpkSjHqNUICyjyRwhfA3BvRMhc1qdDIrRGyVdf6msJDm8GBw7PZaO/QBu2H058NshdTTKinKxjvsmjGNIE9UBwCD/Yx+WwLyUCO3uMqA0zthh5St4tza2Re3zOVgAZ9gWXJH16v6M7Y2q625/89inyEPDjkO0Exfrddr0ByUoGJ49fHho2QmBnp0MdBAs4us6i/GPJo0HWxJl81/jhAIOyhZr9QYsnuG6LylpdeZOs0pP4uALjCJ7VP2Twf0+16uY6jwILOS5SMnN1emYnI+H1zWAd/Qr3AWVR0DIxDTWdypSaiNDtcZZk4DJmQ16NtBbmpgrKXKs/9+YFejXED4ZbJQS47JLIXbYyZldSH9YLj4fntpYdOPkqOPAygantud1yHB9Uzf5eP88kT969iGU+YPJic/PyBAZqHbFMbPpm07L8BqNdWBtgRtJeHf4XCYXUld1cyzz8VwVvXebgWmybMu+nJUnt5YkBDRSkghDhQA+Zu0qJJbF5I3uiVK9isS1f/L+iFGyjbJpztaa3eN8NoCyt+cuUojoAmwdB6D54PsjdpMwddbGm8EoY8pKDakcXeQMuKGQC3IYIGD0UCOzEdvyhYK6QvgKZaPeW+jNTpAj7J3hpVlL1C5s0kP2GynPkBFQSsn3R5nGlwBHgKiugxHKJtcgZ65pxyHJVU03DWPEqSYJ83/bfKiUu7j+9dE5yRWCmdx18Ww5ZhGQnfkrz/J/rIUWXxkJ8aAoAfmO+nmm+wS6Zk0Wye1GTs2UK7JEgECe6/9sRBKSIukwhZaSwzzbAneDIa4ff4/eqMw9aqetgplFI5FyC1m1kfAJ3+EjA5uVysnsASTD6X2X1po+N4jUhaOwb2LVRWvx7xObjWka5XS4raqpJV0ZE3QhpMyqEuyy 1e6xAibx CRIn1rCmRhHOlq4Yc+C5/efps+Q3WTRGxJYg3vV9ddhTu7uWPFzdl995HzCM4wnHuj1VIjx8zMdRkUORw+VPH9D9vVjfIckwmJuIt7bmQMmWOWuuT6scxYYobot+wtnF+9LuufkHgUajrXqR07fDqdaStu62OJ3EZfamkLI6edGD9+soQHSbC/SUiynXe53YycNLU7X0/xSHUQuSofUz8kYZK6IIXuAPpOArY1GVt+HEo6CuSaNgs1OybyT1jX6eoHGHvDWszV8MCYNu37NDCzSLvaT8l2g8Jbd1ADAkJ3pTR4LLRwZ4XdmU+lo+X7EPeD5mbc64GqsFieTbsFbbfzzbFRqwY/I5i8s+WMRz0QsZeaZaH5EZbtXgSUih2wuFPEtaL5EZkdoVoTTEMTsZ13Q4yyuQaYekRA1h/h7zmCVGwMsWZVlNCFQd4Gw7a/xnNuddhkIOr1gJg2xPDzevJ8ckpfvdTRKuOB/KDodkphMSONH8= 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: Hi Andrew, Thanks for taking the time to review! On Fri, Apr 18, 2025 at 6:02=E2=80=AFAM Andrew Morton wrote: > > On Thu, 17 Apr 2025 20:49:08 +0800 Lance Yang wrote= : > > > Add a compile-time check to make sure folio_test_large_maybe_mapped_sha= red() > > is only used with CONFIG_MM_ID enabled, as it directly accesses the _mm= _ids > > field that only works under CONFIG_MM_ID. > > > > ... > > > > --- a/include/linux/page-flags.h > > +++ b/include/linux/page-flags.h > > @@ -1232,6 +1232,8 @@ static inline int folio_has_private(const struct = folio *folio) > > > > static inline bool folio_test_large_maybe_mapped_shared(const struct f= olio *folio) > > { > > + /* This function should never be called without CONFIG_MM_ID enab= led. */ > > + BUILD_BUG_ON(!IS_ENABLED(CONFIG_MM_ID)); > > return test_bit(FOLIO_MM_IDS_SHARED_BITNUM, &folio->_mm_ids); > > } > > #undef PF_ANY > > I don't get it. Sounds like we're adding a compile-time check to check > for a compilation error which would have happened anyway. > > If folio_test_large_maybe_mapped_shared() is only used with > CONFIG_MM_ID enabled, then do > > #ifdef CONFIG_MM_ID > static inline bool folio_test_large_maybe_mapped_shared(...) > { > } > #endif > > ? Hmm... we considered using '#ifdef CONFIG_MM_ID' for folio_test_large_maybe_mapped_shared(), but since this function should never be called without CONFIG_MM_ID enabled, compile-time errors might be the way to go -- and a compile-time check here does the trick ;) > > Or, as "_mm_ids field only works under CONFIG_MM_ID", make it > not-even-present when !CONFIG_MM_ID? > > --- a/include/linux/mm_types.h~a > +++ a/include/linux/mm_types.h > @@ -438,7 +438,9 @@ struct folio { > mm_id_mapcount_t _mm_id_mapcount[= 2]; > union { > mm_id_t _mm_id[2]; > +#ifdef CONFIG_MM_ID > unsigned long _mm_ids; > +#endif > }; > /* private: the union with struct page is transitional */ > }; > _ > > or > > --- a/include/linux/mm_types.h~a > +++ a/include/linux/mm_types.h > @@ -436,10 +436,12 @@ struct folio { > atomic_t _pincount; > #endif /* CONFIG_64BIT */ > mm_id_mapcount_t _mm_id_mapcount[= 2]; > +#ifdef CONFIG_MM_ID > union { > mm_id_t _mm_id[2]; > unsigned long _mm_ids; > }; > +#endif > /* private: the union with struct page is transitional */ > }; > unsigned long _usable_1[4]; > _ > > > > I dunno, it sounds like something hasn't been fully thought through > here. It's hard to say because the changelog is unclear. Perhaps > start out by fully describing what problem the patch is addressing? > In patch #14[1], we rely on IS_ENABLED(CONFIG_MM_ID), so we need: 1) Some dummy functions 2) The _mm_ids field to remain present even when !CONFIG_MM_ID This patch is intended to ensure that incorrect calls to folio_test_large_maybe_mapped_shared() are caught at compile-time. [1] https://lore.kernel.org/linux-mm/20250303163014.1128035-15-david@redhat= .com/ Thanks, Lance