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 CD92DC001B0 for ; Tue, 15 Aug 2023 19:37:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 68D54940029; Tue, 15 Aug 2023 15:37:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5EF418D0001; Tue, 15 Aug 2023 15:37:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4B77B940029; Tue, 15 Aug 2023 15:37:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 3B5398D0001 for ; Tue, 15 Aug 2023 15:37:40 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 120A2A032F for ; Tue, 15 Aug 2023 19:37:40 +0000 (UTC) X-FDA: 81127348680.19.C9488CF Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf11.hostedemail.com (Postfix) with ESMTP id EC26240018 for ; Tue, 15 Aug 2023 19:37:37 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=SZvccotj; spf=pass (imf11.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1692128258; a=rsa-sha256; cv=none; b=Gn4g04wxG41Xl8d277zycUdjtSASwZ7UMZxVx2MYPYhXXg8HykXrKQeIWJukNbGrrry9BR B7Sll82EfUSacbntIrVNbzwLrWllv6EWi5zEUz4unZHEVW9iA0+p24FVRXk+i1R51o3X5b Kym4d8TthOn8p7wauNaUnGu7gxH95dk= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=SZvccotj; spf=pass (imf11.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1692128258; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=4fz+6Me7clA1JL7z++8j9kYvOqyyaBNrhSmXYZ4wwQs=; b=GEt3Rcypfwt4HIg7g+of42D+CnOFCLaUfCwU88GYkCgBUK+xJHZv7MTz/izYq0sDQ8Cr+z 35uFlbpYHwp4UUZwJcvB9UgnFNaW/91fwhmE+/lze+vWDK90Nco7pzEtJAxgaWXPVVqEPA 7cqPm5g3e94ZRFfP0tL6/d+fS1RtaAg= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1692128257; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=4fz+6Me7clA1JL7z++8j9kYvOqyyaBNrhSmXYZ4wwQs=; b=SZvccotjakB4LdM5rT48Ewq1akkOThOqj6IWy4Haai13tJmulJF04EkGbzZun7emFWwSgQ WZBdUCljcN9RwzSFbspV2O+XuCIW6jS/x1WGEm288VmoUsYROIiGjkm/gbIh9/kJPTyB7T AVZfHwHME3efobr55ggsGBR82O/6/X0= Received: from mail-oi1-f200.google.com (mail-oi1-f200.google.com [209.85.167.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-45-7maSCn7UMQ2mdxDr1PraRQ-1; Tue, 15 Aug 2023 15:37:35 -0400 X-MC-Unique: 7maSCn7UMQ2mdxDr1PraRQ-1 Received: by mail-oi1-f200.google.com with SMTP id 5614622812f47-3a74dd0d560so1258118b6e.0 for ; Tue, 15 Aug 2023 12:37:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692128254; x=1692733054; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=4fz+6Me7clA1JL7z++8j9kYvOqyyaBNrhSmXYZ4wwQs=; b=M1g/OlzlZkWYYHbmdnUaPn4eOj9ctr9MEFF7ZS9QUR6k1Vl5gmlH0qXc0MS3EKbaDG uswMot5lvJ6BGepvvyqxG9hCHk71ZXDkMhrM0xc7buIcvfgs5OP4SEiC7+TecoQ4L5ZC qRMbYDA08T4jHO7H8L3zTIsA29g5uLzzstJPlyBjvoXkzsOGC0w52fVwewnlgStgPYpb 6f1N2xiNHjffMzdR5C7am0m5OfkwJ8tPoIUdAppqbvOZx0VsPRuZ1EqiMbSOSQlSnJul hsqJgF6Pvg7Z0Jd3IXvz9uuKhqR/xOULmTC1C1K4ouuQsF5zrxrQB749nVQ2IyxW/yC4 Nm9g== X-Gm-Message-State: AOJu0YyG0RvZyCUnMfdfk49oVT60Lgyyt4C648AQvfrHf7SbuETL6u// Bh1X/G7j6KOqRMuCwX/pIEDphDDHfZBLM3mdRo05224IYk4ponGJXvedLwPFDyfrskjQWAR0rlo KXCwlPJvo8e0= X-Received: by 2002:a05:6808:17a6:b0:3a7:82e8:8fed with SMTP id bg38-20020a05680817a600b003a782e88fedmr13516263oib.1.1692128254692; Tue, 15 Aug 2023 12:37:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEqBaNfXqzNmrGPWBR7QC9dKJXMnxeKT5YSYM81wzDBJfFq878CwVagZlkA2kk6PaRIxCBkvw== X-Received: by 2002:a05:6808:17a6:b0:3a7:82e8:8fed with SMTP id bg38-20020a05680817a600b003a782e88fedmr13516241oib.1.1692128254457; Tue, 15 Aug 2023 12:37:34 -0700 (PDT) Received: from x1n (cpe5c7695f3aee0-cm5c7695f3aede.cpe.net.cable.rogers.com. [99.254.144.39]) by smtp.gmail.com with ESMTPSA id a10-20020a0ce38a000000b00623839cba8csm4350840qvl.44.2023.08.15.12.37.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Aug 2023 12:37:34 -0700 (PDT) Date: Tue, 15 Aug 2023 15:37:21 -0400 From: Peter Xu To: Matthew Wilcox Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mike Kravetz , David Hildenbrand , Andrew Morton , Yu Zhao , Ryan Roberts , Yang Shi , Hugh Dickins , "Kirill A . Shutemov" Subject: Re: [PATCH RFC v2 0/3] mm: Properly document tail pages for a folio Message-ID: References: <20230814184411.330496-1-peterx@redhat.com> MIME-Version: 1.0 In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: EC26240018 X-Stat-Signature: ji1dsnq1xrncxa5154131giobgktiycc X-Rspam-User: X-HE-Tag: 1692128257-239927 X-HE-Meta: U2FsdGVkX1+0ZwVJQpxNbVNZwrfuXjDZp8HzHbLtJ3+UmF+26rbx3JuKnODZW/X1MzNCNnhxNvbmf32qdtfA9h7o5atA8somlnaU4dNdaVyky7dGT7/Ir48c7l/n4E7QntFksIQY3/Nxo4EGqbNAccgr7mB9cHoA0q3auXk90JvUk1QwBPrB9Y5urPsw2rFmrr1p9ajX4tXa5tM/f/eb+IrhXTJWwr9h8eX+mhvE7E6Nn+weCNxLvhn9/1raHMvQN91nhS0z48WAlRUW3EY5Y5DsXw8NH+WsWdXehIiKbotz7Ibj8U29OLWes/X+ALJDbecGGrkhaoh6plH3MUOCp8PlBG4N1glsgJDxKn4+BRWEnwO53vVM6Gix9ncb0b9ycULKKjQV0snQxPxgjXkvxOitm84SO2vCb7a0wOYDFU9f4yBoID99MQ4KaOEU65f5RF8/Odv6dnw5BYofDpzN2A5/PYFdweha4PknQLQ1AbQKS1wGtFjsWh7W/xs6sc5yiEDXcsVg2oGp9AYZ3lKxb1sjB/QYxi5CDO64lcfAxD3huFmxf4kftRqsYuJ/U2qSaV3rKmBecsb4/kua70y3iArMo3kFVUnKAMDfJMNXSZgbdf0FrIlTQFB18152kKH6bzpQjlOBtd7o0Ry4hDdsfzb05cXnLgt3SO8xWwDlnq3h7qohYBE7wpk3aBh+4QNBiWSx4CfYHWOzBRyoq8Grsgx6pfa8VCwDYejC0KZQUMa14cthMq0WRrmOGibGllifHLuZI0dMTT3q5aApTHgseYZGrP5HMajQM+JnETh0/AGfxRZHAHGAXxs8jDhDzJs31B67lVlP3RdmYf/+GoWB13W0iJkD9RZH7R0Qo1D3EIpylG7vmQhLzsnXCD26Ozx5yT5ZS7WCvGNEoNwbHJr6fP7kfbHlkZlSD8cGd9KLmKyBpgkPYU/BI7eATlMdyXfaVSvXzPYhLXIxYIlauCg SaHuQmTf bF9UVER5ooNqHs+ydjHKbvdb+eq/8qjs5hXnZqtWXV2nG56RhByEWlDqjZCHzTlf6XBm3k+ugs0BCBrYga9+YFEiUhYsM5UbHSm92GZ7y7Oam8kta45GrEULKoZ6VZsgZWAC+uItiVLRrgscWF6dtPM4h54UHagEJauS5RXSNXTEsZjcY1cIs+zuucOuwXSaA896fQnJ13HeMWivq/vXQgsyt6LzSF9yTIrEUACYp3We+Syngz16tyFTZnhsO8YtWPTtOo1P95WynXWeND3JPB1dPodSB3W6SJbQwCXBgbR5ImP7Xe1MhwKDACO+Rylnee2bINxAl7oNyNbLNZOs0kqFrSnrI349sFaUenRoX04+3ZW4= 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: On Tue, Aug 15, 2023 at 04:45:52AM +0100, Matthew Wilcox wrote: > I always forget about THP_SWAP using tail->private. That actually needs > to be asserted by the compiler, not just documented. Something along > these lines. > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > index 659c7b84726c..3880b3f2e321 100644 > --- a/include/linux/mm_types.h > +++ b/include/linux/mm_types.h > @@ -340,8 +340,11 @@ struct folio { > atomic_t _pincount; > #ifdef CONFIG_64BIT > unsigned int _folio_nr_pages; > -#endif > + /* 4 byte gap here */ > /* private: the union with struct page is transitional */ > + /* Fix THP_SWAP to not use tail->private */ > + unsigned long _private_1; > +#endif > }; > struct page __page_1; > }; > @@ -362,6 +365,9 @@ struct folio { > /* public: */ > struct list_head _deferred_list; > /* private: the union with struct page is transitional */ > + unsigned long _avail_2a; > + /* Fix THP_SWAP to not use tail->private */ > + unsigned long _private_2a; > }; > struct page __page_2; > }; > @@ -386,12 +392,18 @@ FOLIO_MATCH(memcg_data, memcg_data); > offsetof(struct page, pg) + sizeof(struct page)) > FOLIO_MATCH(flags, _flags_1); > FOLIO_MATCH(compound_head, _head_1); > +#ifdef CONFIG_64BIT > +FOLIO_MATCH(private, _private_1); > +#endif > #undef FOLIO_MATCH > #define FOLIO_MATCH(pg, fl) \ > static_assert(offsetof(struct folio, fl) == \ > offsetof(struct page, pg) + 2 * sizeof(struct page)) > FOLIO_MATCH(flags, _flags_2); > FOLIO_MATCH(compound_head, _head_2); > +FOLIO_MATCH(flags, _flags_2a); > +FOLIO_MATCH(compound_head, _head_2a); > +FOLIO_MATCH(private, _private_2a); > #undef FOLIO_MATCH > > /* > > This is against the patchset I just posted which frees up a word in the > first tail page. Okay, I assume you meant to suggest leverage FOLIO_MATCH(), which I can definitely try. But then I'd hope it covers not only private field but all the fields that the tail pages reuses; the goal is to document everything no matter in what form. I'll see what I can get.. Thanks. -- Peter Xu