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 256D2C54E49 for ; Mon, 4 Mar 2024 21:52:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9E1006B0082; Mon, 4 Mar 2024 16:52:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 990FE6B0083; Mon, 4 Mar 2024 16:52:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 831286B0088; Mon, 4 Mar 2024 16:52:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 6F7BD6B0082 for ; Mon, 4 Mar 2024 16:52:52 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 3EF87A0190 for ; Mon, 4 Mar 2024 21:52:52 +0000 (UTC) X-FDA: 81860706984.30.82A674C Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf15.hostedemail.com (Postfix) with ESMTP id 25E8EA0005 for ; Mon, 4 Mar 2024 21:52:49 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Si5wacu2; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf15.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709589170; 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=cKK4WT6MPadyLBc8oPfDMuIeTH61/gWEpljeLLdGUVA=; b=zifLx+b9CiaxliyXDEPS8C2zSgHOK9Wyg00lQWCpSnL19lhaoquCjOi3CXl/HCIKwE724/ FT3bPIOaM52dJr3Ybjg6lEsMfZfuyttROCXjGhLDYgSyoXCrXX4+SAdnYac8r8iTETZ2Vk oJ8vqlH1tlMxEPK3f97BMbh+sITGus8= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Si5wacu2; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf15.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709589170; a=rsa-sha256; cv=none; b=rghIv6TNwHUZ0kKdH4TtdGh+AMqfn8pEQPk9nXR2+kaf6nFcQNeY0ngdCqMkoGKv7AFbzv k8ph0+iv99kJjsKyor9Kf90R7k2ncARWMiJHaUjUoJ5TWtk64imaGVXpktFJ++FckssNsb js+REMG7HbQCCq2cQDOsBn4iZL6KPcs= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1709589169; 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: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=cKK4WT6MPadyLBc8oPfDMuIeTH61/gWEpljeLLdGUVA=; b=Si5wacu2C4pA4lPbn42fG2SxFwK3cglF5KGRfIpnyXkqdRETbxI1DfJyGkOt6Kvhfa/6b6 sk4wgacHB+QHfh1E3twjzvmPS7N3ti1hUVbOq3wF1DF9ea9zpEry9kjhfztR2logjhaSid Kw/HOShv8lJUPAXMlwx1GUEsZvQOBfI= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-654-PqNlQMGiNCqkUQaFv0cakQ-1; Mon, 04 Mar 2024 16:52:48 -0500 X-MC-Unique: PqNlQMGiNCqkUQaFv0cakQ-1 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-412c7ee0a92so20390205e9.0 for ; Mon, 04 Mar 2024 13:52:47 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709589167; x=1710193967; h=content-transfer-encoding:in-reply-to:organization:autocrypt:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=cKK4WT6MPadyLBc8oPfDMuIeTH61/gWEpljeLLdGUVA=; b=QFPZS61qnBExCGWzAOMPKOwAL4ZPaw1TDOhMy8Vb1AOhbfXCWAzEK6m6IqFqG8JgqF vzYOK287OVg+UP4GtO6KcB7prpZ/ZOysj9FLCF5cQlXMohCKrbuw5BHuBQQ0DtoIDt3Z WRGFzBZsryZQ3V8pSTLijEfk42VS5jZwWg63SR/PGI8k4y1cM0pqwVIBMFTSCclLU/cq kwm42Evt1nrOEKx9Oj+2vQK3Uj7jtsbQzha9GRY1VI2JnMKNYxOU0mY7ogxXlVx0zLcn FapwQEie3OUeihkJUnfXEuCtRChwRYw6HMhVuDvwoGpEVpPtPgsL1/d0Tnwp57xKAyEc PKng== X-Gm-Message-State: AOJu0Yx39exlRFpHhd/W4WQklpbh1SaHn8oQq7BluO6daLqFwJFc1e7Z guFoFVfooIrJIBFDNCIPBFfWdD5d6Jbg0QPG1kuac5LqFvm3oMNtUrZm0Pmfm2iy3t/sZOFmFqX 38kBWG8H9tyUMwHy3oyMuDC89+7CBpK2yPbr22yJ5mP5VsneO X-Received: by 2002:a5d:4d87:0:b0:33e:d17:76b with SMTP id b7-20020a5d4d87000000b0033e0d17076bmr7203887wru.7.1709589166924; Mon, 04 Mar 2024 13:52:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IHYSCq79l/jqIer6ch9XlWN0PF2byVXQjYknc8Fg8iLaW8nczk6BPegVRnsTixinPjNZTBDZw== X-Received: by 2002:a5d:4d87:0:b0:33e:d17:76b with SMTP id b7-20020a5d4d87000000b0033e0d17076bmr7203878wru.7.1709589166560; Mon, 04 Mar 2024 13:52:46 -0800 (PST) Received: from ?IPV6:2003:cb:c733:f100:75e7:a0a4:9ac2:1abb? (p200300cbc733f10075e7a0a49ac21abb.dip0.t-ipconnect.de. [2003:cb:c733:f100:75e7:a0a4:9ac2:1abb]) by smtp.gmail.com with ESMTPSA id ba27-20020a0560001c1b00b0033e284b2f1asm7920403wrb.38.2024.03.04.13.52.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 04 Mar 2024 13:52:45 -0800 (PST) Message-ID: <5b421e91-79ed-4be7-bf03-c34ef9a674d0@redhat.com> Date: Mon, 4 Mar 2024 22:52:44 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Can the huge zero page be partially mapped? To: Yang Shi , Matthew Wilcox Cc: linux-mm@kvack.org, David Howells References: From: David Hildenbrand Autocrypt: addr=david@redhat.com; keydata= xsFNBFXLn5EBEAC+zYvAFJxCBY9Tr1xZgcESmxVNI/0ffzE/ZQOiHJl6mGkmA1R7/uUpiCjJ dBrn+lhhOYjjNefFQou6478faXE6o2AhmebqT4KiQoUQFV4R7y1KMEKoSyy8hQaK1umALTdL QZLQMzNE74ap+GDK0wnacPQFpcG1AE9RMq3aeErY5tujekBS32jfC/7AnH7I0v1v1TbbK3Gp XNeiN4QroO+5qaSr0ID2sz5jtBLRb15RMre27E1ImpaIv2Jw8NJgW0k/D1RyKCwaTsgRdwuK Kx/Y91XuSBdz0uOyU/S8kM1+ag0wvsGlpBVxRR/xw/E8M7TEwuCZQArqqTCmkG6HGcXFT0V9 PXFNNgV5jXMQRwU0O/ztJIQqsE5LsUomE//bLwzj9IVsaQpKDqW6TAPjcdBDPLHvriq7kGjt WhVhdl0qEYB8lkBEU7V2Yb+SYhmhpDrti9Fq1EsmhiHSkxJcGREoMK/63r9WLZYI3+4W2rAc UucZa4OT27U5ZISjNg3Ev0rxU5UH2/pT4wJCfxwocmqaRr6UYmrtZmND89X0KigoFD/XSeVv jwBRNjPAubK9/k5NoRrYqztM9W6sJqrH8+UWZ1Idd/DdmogJh0gNC0+N42Za9yBRURfIdKSb B3JfpUqcWwE7vUaYrHG1nw54pLUoPG6sAA7Mehl3nd4pZUALHwARAQABzSREYXZpZCBIaWxk ZW5icmFuZCA8ZGF2aWRAcmVkaGF0LmNvbT7CwZgEEwEIAEICGwMGCwkIBwMCBhUIAgkKCwQW AgMBAh4BAheAAhkBFiEEG9nKrXNcTDpGDfzKTd4Q9wD/g1oFAl8Ox4kFCRKpKXgACgkQTd4Q 9wD/g1oHcA//a6Tj7SBNjFNM1iNhWUo1lxAja0lpSodSnB2g4FCZ4R61SBR4l/psBL73xktp rDHrx4aSpwkRP6Epu6mLvhlfjmkRG4OynJ5HG1gfv7RJJfnUdUM1z5kdS8JBrOhMJS2c/gPf wv1TGRq2XdMPnfY2o0CxRqpcLkx4vBODvJGl2mQyJF/gPepdDfcT8/PY9BJ7FL6Hrq1gnAo4 3Iv9qV0JiT2wmZciNyYQhmA1V6dyTRiQ4YAc31zOo2IM+xisPzeSHgw3ONY/XhYvfZ9r7W1l pNQdc2G+o4Di9NPFHQQhDw3YTRR1opJaTlRDzxYxzU6ZnUUBghxt9cwUWTpfCktkMZiPSDGd KgQBjnweV2jw9UOTxjb4LXqDjmSNkjDdQUOU69jGMUXgihvo4zhYcMX8F5gWdRtMR7DzW/YE BgVcyxNkMIXoY1aYj6npHYiNQesQlqjU6azjbH70/SXKM5tNRplgW8TNprMDuntdvV9wNkFs 9TyM02V5aWxFfI42+aivc4KEw69SE9KXwC7FSf5wXzuTot97N9Phj/Z3+jx443jo2NR34XgF 89cct7wJMjOF7bBefo0fPPZQuIma0Zym71cP61OP/i11ahNye6HGKfxGCOcs5wW9kRQEk8P9 M/k2wt3mt/fCQnuP/mWutNPt95w9wSsUyATLmtNrwccz63XOwU0EVcufkQEQAOfX3n0g0fZz Bgm/S2zF/kxQKCEKP8ID+Vz8sy2GpDvveBq4H2Y34XWsT1zLJdvqPI4af4ZSMxuerWjXbVWb T6d4odQIG0fKx4F8NccDqbgHeZRNajXeeJ3R7gAzvWvQNLz4piHrO/B4tf8svmRBL0ZB5P5A 2uhdwLU3NZuK22zpNn4is87BPWF8HhY0L5fafgDMOqnf4guJVJPYNPhUFzXUbPqOKOkL8ojk CXxkOFHAbjstSK5Ca3fKquY3rdX3DNo+EL7FvAiw1mUtS+5GeYE+RMnDCsVFm/C7kY8c2d0G NWkB9pJM5+mnIoFNxy7YBcldYATVeOHoY4LyaUWNnAvFYWp08dHWfZo9WCiJMuTfgtH9tc75 7QanMVdPt6fDK8UUXIBLQ2TWr/sQKE9xtFuEmoQGlE1l6bGaDnnMLcYu+Asp3kDT0w4zYGsx 5r6XQVRH4+5N6eHZiaeYtFOujp5n+pjBaQK7wUUjDilPQ5QMzIuCL4YjVoylWiBNknvQWBXS lQCWmavOT9sttGQXdPCC5ynI+1ymZC1ORZKANLnRAb0NH/UCzcsstw2TAkFnMEbo9Zu9w7Kv AxBQXWeXhJI9XQssfrf4Gusdqx8nPEpfOqCtbbwJMATbHyqLt7/oz/5deGuwxgb65pWIzufa N7eop7uh+6bezi+rugUI+w6DABEBAAHCwXwEGAEIACYCGwwWIQQb2cqtc1xMOkYN/MpN3hD3 AP+DWgUCXw7HsgUJEqkpoQAKCRBN3hD3AP+DWrrpD/4qS3dyVRxDcDHIlmguXjC1Q5tZTwNB boaBTPHSy/Nksu0eY7x6HfQJ3xajVH32Ms6t1trDQmPx2iP5+7iDsb7OKAb5eOS8h+BEBDeq 3ecsQDv0fFJOA9ag5O3LLNk+3x3q7e0uo06XMaY7UHS341ozXUUI7wC7iKfoUTv03iO9El5f XpNMx/YrIMduZ2+nd9Di7o5+KIwlb2mAB9sTNHdMrXesX8eBL6T9b+MZJk+mZuPxKNVfEQMQ a5SxUEADIPQTPNvBewdeI80yeOCrN+Zzwy/Mrx9EPeu59Y5vSJOx/z6OUImD/GhX7Xvkt3kq Er5KTrJz3++B6SH9pum9PuoE/k+nntJkNMmQpR4MCBaV/J9gIOPGodDKnjdng+mXliF3Ptu6 3oxc2RCyGzTlxyMwuc2U5Q7KtUNTdDe8T0uE+9b8BLMVQDDfJjqY0VVqSUwImzTDLX9S4g/8 kC4HRcclk8hpyhY2jKGluZO0awwTIMgVEzmTyBphDg/Gx7dZU1Xf8HFuE+UZ5UDHDTnwgv7E th6RC9+WrhDNspZ9fJjKWRbveQgUFCpe1sa77LAw+XFrKmBHXp9ZVIe90RMe2tRL06BGiRZr jPrnvUsUUsjRoRNJjKKA/REq+sAnhkNPPZ/NNMjaZ5b8Tovi8C0tmxiCHaQYqj7G2rgnT0kt WNyWQQ== Organization: Red Hat In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 25E8EA0005 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: kbxmzrsd31rzdgserwu4sh9af4qcdy5x X-HE-Tag: 1709589169-57397 X-HE-Meta: U2FsdGVkX1885My0DxZZpeEtuie0F+4dn+Qtfa9zeK3MAF0iobXoXq/RiHptcVm6Oo1lCHmqGbK6xcLoJJKj6rBGbDVhRz++UQ2fEkSA3FNuO760PoB/dIZ5lWuBAn9gZAxih9kNeWUqj7Nxp6gjjnxlxMppILy5DKY7Syk6ebAZ2bqPCwQczQ/u2+tgai92hAnegTo9tlo0bCeXq/j071Dlx8c39cqYLfcbd9/F7O6ex0HIq070VkVlDIXGEng2eXPbClzCsR48/KXWETl6j0fQ9eSh1kuB5ouu7a0mpPdvF+WEdPZx9/k7eUh+e6spjv+DrtEtyOTPQYqSDPlIe2bon+w9xIE356IWCGl3fO+DETov8oXkSHj6b8QkDSfv5s/ftgbWu6ntbHh+aYIc7SLpXWn8x+MHeznxKI8b5pe8gKbh0Vap4srO+qw3aQL9AZlqXDYTvtBqjHDWa6jlr/bWt3VVfSKEjEs5jhubNuD/c5AkB0fs5uX79I+p5PffPZFfoP3LbhCc7jJPUpxGKYCvxTySqRSv1KhcHJBEdl530+VMzc5O11BEpd1mUXrBWYkJl7r5QCIz6UCnOBTBvHgPX6LjS9M4KGbX5QnPu3k7QE9B8ijLTZ9FN3VXqZFFWcV+cXK2EEgXd2vAxZ2olN5AI0zkSkjCWt+NwkkYuloo/gWQrTSglC7kj+KFTHK26NgvdUhpAkMDuFPewXOSWwHQ5i7RGEYqY542uukLuHqOQSq1Rd72mDnqsJt4FJ0TNn3/T/6A0VEoEgaguwQOP7rA0PvHpnOLuaLRUV3VTuSUxd/aazrkBET+8p7KIilCj89UCu53qRZgTqcAUFNnVkhdB6UdJqJab3PdoNvsMUOsPIdcx+yWr1OMGvAw/wGN4h/ZBaGsTZ6kn+4vixvKFgQjYWfECJDzt850bStGnz9siNAa/j6MY7m3hC2BdpbTrFSirhuwrs5wTyj5/wy X9C2t2bZ ix/4v1R/Ao2z2pJp4CtF4QvKVkjho3bsdCXsyN2/eqzK3TQORV4fVS2T/1rmKPAv3dMxtWnlwx28GHhsTYiJP/RovlHJJ614jFXSHDhzcT4o2LygPrRijAq2ezMIaQjEHyBGh2K1SjEkhOjs+GSXE/vay9GpoJCLDsVnwjs1Gcwqqej/5r742CNVIAj1DB8x7Vc5fzfByhKravdQ= 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: On 04.03.24 20:19, Yang Shi wrote: > On Mon, Mar 4, 2024 at 8:54 AM Matthew Wilcox wrote: >> >> I looked at the definition of is_huge_zero_page(): >> >> static inline bool is_huge_zero_page(struct page *page) >> { >> return READ_ONCE(huge_zero_page) == page; >> } >> >> That made me raise my eyebrows a bit because it will return false for >> tail pages of the HZP (that was at least unexpected for me). Then we >> have this beauty: >> >> void free_page_and_swap_cache(struct page *page) >> { >> struct folio *folio = page_folio(page); >> >> free_swap_cache(folio); >> if (!is_huge_zero_page(page)) >> folio_put(folio); >> } >> >> So if we can call free_page_and_swap_cache() with a tail of the HZP >> we can absolutely screw up its refcounting. Now, we have VM_BUGs >> to catch the refcount going below 0, and I haven't seen them being >> hit, so I _presume_ it doesn't happen, but maybe somebody inventive >> could come up with a way of putting a HZP tail into a page table ...? > > The huge zero pmd split is specially handled by > __split_huge_zero_page_pmd(), which actually replaces every subpages > of HZP to zero page. Right. The only thing that can happen is that we GUP a part of the huge zeropage (FOLL_PIN only, FOLL_LONGTERM/FOLL_WRITE would trigger a fault first and map us an anon folio), and unpinning would drop these references. unpin_user_page()->gup_put_folio()->folio_put_refs() would call __folio_put(). Not sure if __folio_put() does the right thing, but I hope so :) Did not look into the details. In folios_put_refs() we do have is_huge_zero_page() special handling, I guess that is for ordinary zap/unmap and likely the right thing to do. Looks a bit inconsistent. (folio_put_refs() vs. folios_put_refs()) Likely, we should also not perform any refcounting on the huge zeropage in GUP, just like we do for the ordinary zeropage nowdays. [ccing Dave] -- Cheers, David / dhildenb