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 65A2DEB64DD for ; Mon, 14 Aug 2023 20:22:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BF1E78E0001; Mon, 14 Aug 2023 16:22:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BA21D6B0085; Mon, 14 Aug 2023 16:22:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A1B268E0001; Mon, 14 Aug 2023 16:22:04 -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 908276B0083 for ; Mon, 14 Aug 2023 16:22:04 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 318E9A0C9D for ; Mon, 14 Aug 2023 20:22:04 +0000 (UTC) X-FDA: 81123831768.28.E9DB576 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf10.hostedemail.com (Postfix) with ESMTP id 14381C0012 for ; Mon, 14 Aug 2023 20:22:01 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=b5qvhp6O; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf10.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1692044522; 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=rjIaM5pS4IcfSWwLmVHVLlHG83Gxh90rbrqnmEqqDrE=; b=KqzeomE2A0UePgZpM2Sp5iPs/nU0f4vl/z0jJwVEOIA0n0oHnUTiycFZgSB2qxJThXDV2B 2b/50IR+mS94xKrwTrlB6SEApL/iQEilEYxNMuyDrbzpluG6TIOPIv2t1a+j7letre3YsC XLpnEnWGh++aoH8nF8tEyzORepwujoA= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=b5qvhp6O; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf10.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1692044522; a=rsa-sha256; cv=none; b=K3Q0e4KNOPAZGHESaUmKz4C6t6b++yMFDViF3YI0dAoiWsxwWg3z0QyvHeCUIHGTUiJafT RiXX1hzK3uosPQkset3/1oXjJsw0Oni0zMKDHCxuWPthuGf5lMCS5LeLH7bcrKLO81+SDZ FeJuI3/qq2KSfcyKMIZAp1Ja5YemGHo= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1692044519; 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=rjIaM5pS4IcfSWwLmVHVLlHG83Gxh90rbrqnmEqqDrE=; b=b5qvhp6OM8wdtGGzEle9IdGwCVvwGKh/yjkwrDJAtcVqGCBhYpQv4LpfcIuV7FrJIf+p7g 4qgzwmnxMer805C4Ge5MXpKMT7MqCd1x5W3I2XbjIqTcOR1QY8kVbQhrTCC//xPDkdc4Yx Abf+mt2Tbqf+AQjRdkp46oWkij7Diqc= Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-650-aQKLQ1k1NauqjRUG0cBsNw-1; Mon, 14 Aug 2023 16:21:58 -0400 X-MC-Unique: aQKLQ1k1NauqjRUG0cBsNw-1 Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-40fed04ea2aso14033981cf.0 for ; Mon, 14 Aug 2023 13:21:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692044518; x=1692649318; 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=rjIaM5pS4IcfSWwLmVHVLlHG83Gxh90rbrqnmEqqDrE=; b=IpemxteebsyjJIPwJ3qhByr4DNPMp7r3epl+bGgDtyo0oY+OUlKWOO00cwtWsXFc/+ zJgnKq7DpjKKdoZufvOqOI5sI6LN4HYLLKkmh8RtKiD2eOD2DNFEp4eKLq1QvNV60tNB FFtENZOCBg+dcS+kt1u8J0LAomtKCcUwk1KWR9FlHs9PXcRqOhXspAe+cs/lbrTixw/d XUkPD43ALIVkLfAbd49ayqpO1O7z9UX2RuSATXY531kh1dXQJ5KmyTZ+ZSK2/Gg3VpAT r5I0mDkGpCVufKDXLnwircEDG6QoHxkSd78Q90N+kWD2+XIMmkVIwDqjYkdmEEseby/A rHEg== X-Gm-Message-State: AOJu0Yxt20kX0/iY6oHNGmAbJ8rHAAV/bGql94nPOn9HQXdexuw9sHc0 ZMJ4UUTrc6Zh3sEjQVNWl/p4Kg3FhTvuBfE6b+HEKsvFIU9jtBfSpV2BpViGPbyBK3WsWCMpzKq Vydl1lv+y6M4= X-Received: by 2002:a05:620a:170d:b0:76c:f408:6ba6 with SMTP id az13-20020a05620a170d00b0076cf4086ba6mr14812258qkb.2.1692044518081; Mon, 14 Aug 2023 13:21:58 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFfkOOVytY0aBOxkjY3FcQIE3K9VJXH3LQMj6PIPTCx35Eq3D4/zL+o0y8ptn3FX3A0gAXonA== X-Received: by 2002:a05:620a:170d:b0:76c:f408:6ba6 with SMTP id az13-20020a05620a170d00b0076cf4086ba6mr14812237qkb.2.1692044517797; Mon, 14 Aug 2023 13:21:57 -0700 (PDT) Received: from x1n (cpe5c7695f3aee0-cm5c7695f3aede.cpe.net.cable.rogers.com. [99.254.144.39]) by smtp.gmail.com with ESMTPSA id pa40-20020a05620a832800b0076c97ae43b9sm3248456qkn.66.2023.08.14.13.21.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Aug 2023 13:21:57 -0700 (PDT) Date: Mon, 14 Aug 2023 16:21:55 -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-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 14381C0012 X-Stat-Signature: xd9gsjw7piyf4nqxudrpz7zhx18a9rus X-HE-Tag: 1692044521-395628 X-HE-Meta: U2FsdGVkX19rDrDp946oykhtylmAuLSSV+kiUzvMrbGRkpzCeMkx9lYLxUCZS58l+chlXbijElFk3GqDX85SWaQopvULjPOmkuwGxrcTJG/uP2o/Q8VhB4NONyxhjZOkuFXjlaGYJ15Ioa8yE2El/uRebjZrE5+7v44DnZoBl1Sj8gBu8tQZ5jqZRhiF/DHDrbcQ6JdWt39jm4XMLqgLTjRUuz8Xzf1x31qraUgJvxGVy9paxIzYXzqNT5tVjCabIgkNZuWXMKdLpXU4KdlLFw9s/W80Z6EkYWocJUPcocVXWhw6WHRn+pBB+CnteIuvTiL+k6YjLSJp8KqT6Za/Cav57jsEx6xRKTf/uuBQyY7mZkhGcY48+Ml2+VXdY9RUyxpprl4Z2iCDXR5zAJU2jmfu7UM6fR58mD9PzzWPtw3aprxg1q/2B96mOVBAOT+DV9QjZy4Y7WfC03dYCTrkpxLf4ucg/PQWRng535PZv2KqHMdsQl6GdcJWdwMZhZsFto4kF0lByAnkVYSJj4YrlJk13ZFcTV45c+yqPl6vam56HQYu1e/d2QBGD+GR0Qvp12ruR1G/5esLKx3c4L7dq4Rb+UilrfE4/WEteh4+Fe5CXYLiE4HsKZbN3+645+eKeleqRMeXYX6a3dMz1gmchgG8UhMkHsbACkhCDjeCsjE5q4N8ZoK/0Kja/0t2oZ1fbP0kJQlnJQoC160yEc7ocGHorXoyxOjAQ2i8K8IiNYaNN9TzRRAoAUWRRpf27kWdxG4jt03VL/9k8MRKTsAk9UL4amXXT6arfFj5la2aHx29wFAe5uL/7V6lUXpZpdltTidJUTN/p1WfNQ9zapJmdN3mJlHq94++wSiI4cx5G3FBWH0zX66JbIaqTXLTWVyiP4UaQnmiOCEkQNIr8rwiXVf1uz9P3KIMWTEt2YKbKP1/yCoZ4j6ZzdWdxqoWqbUIgph8YNHNGzYTrmUYBEI h9Iq6WmF CAkZJnd+EqpgY3e07c3Milap80KoOR1JJB8ObkXx8kvzRKcydDlr7jodsVvtTx7Pv/ms+HnUFe33Xa2VQBkZ3wIqEh6FW5VqArPwG30W9WayuXkG0ikhDQpypf1CsosY3OwXbbupyGqKw2lQYVK2fTMCJEi4l4i7l9t+efI9G6UnlnH6G2oJQZ5IzXcz1V1JPNXzdJnUZ5OmkpbHu2wBZq88X2NRhx/I/pvxoqzAhpi0AFIcmhyVpFk7lgzWlZ4kPVbw8uBnREBl6rvYURDrSdxa9gptBmWgvLkAXADZbZ3NMH1+ir5oXZhy0qlP6zPATLV/HcuZTkg6xZVqZdgO62SWEdjr/RXCh+UL7hovdp2dlKbE= 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 Mon, Aug 14, 2023 at 08:58:44PM +0100, Matthew Wilcox wrote: > On Mon, Aug 14, 2023 at 02:44:08PM -0400, Peter Xu wrote: > > Look, this is all still too complicated. And you're trying to make > something better that I'm trying to make disappear. I'd really rather > you spent your time worrying about making userfaultfd use folios > than faffing with this. I saw that internally some of uffd already start to use folio, while I don't think the syscall part needs changing yet - the ranged API should work for folio when it comes, and other than that folio should be hidden and transparent, afaiu. Do you mean when large folios can land on anon/shmem we can start to allocate large folios there for uffd operations? Or something else? > > How about this? I still prefer my version, sorry. But I agree this is better than nothing to guide what's free to use - it's really not obvious to me, and I suppose true to most people. Besides.. > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > index 5e74ce4a28cd..873285bb5d45 100644 > --- a/include/linux/mm_types.h > +++ b/include/linux/mm_types.h > @@ -334,11 +334,14 @@ struct folio { > /* public: */ > unsigned char _folio_dtor; > unsigned char _folio_order; > + /* two bytes available here */ > atomic_t _entire_mapcount; > atomic_t _nr_pages_mapped; > atomic_t _pincount; > + /* no more space on 32-bt */ > #ifdef CONFIG_64BIT > unsigned int _folio_nr_pages; > + /* twelve bytes available on 64-bit */ > #endif > /* private: the union with struct page is transitional */ > }; > @@ -360,6 +363,7 @@ struct folio { > unsigned long _head_2a; > /* public: */ > struct list_head _deferred_list; > + /* three more words available here */ .. not really three more words here but 2 for 32 bits and 1 for 64 bits. In my patch 3 I used "8 bytes free" so it's applicable to both. I can figure it out in ten seconds now with my documents.. * |--------+-------------+-------------------| * | index | 32 bits | 64 bits | * |--------+-------------+-------------------| * | 0 | flags | flags | * | 1 | head | head | * | 2 | FREE | FREE | * | 3 | FREE [1] | FREE [1] | * | 4 | FREE | FREE | * | 5 | FREE | private [2] | * | 6 | mapcnt | mapcnt+refcnt [3] | * | 7 | refcnt [3] | | * |--------+-------------+-------------------| Then... /* public: WORD 2-3 */ struct list_head _deferred_list; <----- so after this we have WORDs 4/5 free on 32bits and 4 only on 64 bits, because WORD 5 is used on 64bits ... but I won't be able to if without these documents. I hope it justifies that it's still worthwhile. Thanks, -- Peter Xu