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 AFE3DC48BF6 for ; Mon, 4 Mar 2024 19:19:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3E9F86B0080; Mon, 4 Mar 2024 14:19:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 39A936B0082; Mon, 4 Mar 2024 14:19:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2622A6B008C; Mon, 4 Mar 2024 14:19:52 -0500 (EST) 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 1121A6B0080 for ; Mon, 4 Mar 2024 14:19:52 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 9E0C240B12 for ; Mon, 4 Mar 2024 19:19:51 +0000 (UTC) X-FDA: 81860321382.30.670E013 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) by imf23.hostedemail.com (Postfix) with ESMTP id 0375C14000A for ; Mon, 4 Mar 2024 19:19:48 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=WIHluk5U; spf=pass (imf23.hostedemail.com: domain of shy828301@gmail.com designates 209.85.216.47 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709579989; 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=cOL5eXS8fhneyiGm7Lj/Y8co01uumJzK7Rolpr/ZRco=; b=AQhOX2cKz0/CUcqu36qvPHnC7k0Yke7FojqmWEItwgzMiG3k/zRg6gClqFXmM9lhlWlrAp ZbORTstULir7fbpMPaCuNsr2CJe96Slpy6UbbD4NrCildLSsX8K75arxu9PXnHE7DL88Vp 0Ecwz4yedeaoWBpP2YFPxgmPngfaWsA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709579989; a=rsa-sha256; cv=none; b=hTdGp3rWu37aMKvWQfpB/vlOgPIanlziUNCZSGOaAkW5hg9MPBPmme1lRndKVuTKSJgeMt XiRphaiiHCiot8DGv1KhBfjrBBqrEBkoLlgFiDZIbiutjkA6jhrQVH5lBEWIFo9MWzvutn wkx0RPMSLQ5WUqMPdu+FHt9JEK0grg8= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=WIHluk5U; spf=pass (imf23.hostedemail.com: domain of shy828301@gmail.com designates 209.85.216.47 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-2998950e951so2765992a91.2 for ; Mon, 04 Mar 2024 11:19:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709579988; x=1710184788; 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=cOL5eXS8fhneyiGm7Lj/Y8co01uumJzK7Rolpr/ZRco=; b=WIHluk5UpVzFLG/wCl97a0wnvOFKFzNQ6XE2d98mQsWdg9KuvZdmL0a4mqJkvre0zs m4wLV6tbsDNOSewoCK2qRbFBQWMKXzOmho9dzbOH2IMwhZOy4F58Qxq1ssUOhr/miWCa IOMYqnhzDPkC9K0f2AXIYw2bJRETlVeZFIIR2m2ejGLeiuzI+xep05RWDqWpsidrhlwi JV88y2h01lSdBMYwPo1+h+qpwp66CRe1RxhOcUjdn0dbt/AHGHwsHVrHIgDXl5kSnx09 0thnIzcb/opVmhtqO/w+z9Jz59eRCUaoJqkP3YCXu2gJFOKXRLVp3Xij9sNu3KiYnoyR QD3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709579988; x=1710184788; 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=cOL5eXS8fhneyiGm7Lj/Y8co01uumJzK7Rolpr/ZRco=; b=aANxyQiRuBPCsMUUp7UencOE19rAN9EoykMtOVUB/YIfpDW3MG9qOkfF/GR3GGVRKN C6nb0Hc1NA4nvjK7Rm4LDSisen0icysKCg9c9Msb9Ojtr/bEAZqTmjFpew+CmwbxC4Hq PJVhMmRVAxlqmjtOtvyq+FKdfX+ScOAo+utjgGqGJszVSiqHTrwLReSSKcxwrxrN3LTE XOPm3TtPSAv/OQvdpVTcZP8shNNrfzyh/PLtdBTFe7/sxjOeOCKexWvJgOqoLathFA5z 5kS9qL7hd3LHIf0mk5UUnQacHqLyE+3SqJVhqjKwmtYzsvnTiQLrQ3V97NMx2qkvoWaG 0ZWQ== X-Gm-Message-State: AOJu0YyNPFKdqt0zJQ7zDc3BUyHXIUeL2OyqiW4H0ig88Fzpyux0/Wf5 V4mCfQPadCYth2o68KqyviCqspHdjKCZn6OIx5BJQpd3HLqkM3OKe2aQbncg96dzhlYSE3nzefH cC66hY2j+hiNQGBT0RESrRbGM4hE= X-Google-Smtp-Source: AGHT+IHwNrfkp2n/qZAFkCTIKYC/4SyClvzlOfwVORXZ3rr2PcXVRUBBx0z/chGPNof5Sbta7XnWKN3Li4cllETotPk= X-Received: by 2002:a17:90a:d258:b0:299:14c9:94f0 with SMTP id o24-20020a17090ad25800b0029914c994f0mr6878737pjw.11.1709579987667; Mon, 04 Mar 2024 11:19:47 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Yang Shi Date: Mon, 4 Mar 2024 11:19:36 -0800 Message-ID: Subject: Re: Can the huge zero page be partially mapped? To: Matthew Wilcox Cc: linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 0375C14000A X-Rspam-User: X-Stat-Signature: zhhhe7xmuw9ct53oczehu65u6quhy3q7 X-Rspamd-Server: rspam03 X-HE-Tag: 1709579988-171456 X-HE-Meta: U2FsdGVkX1/4Ne8hOvNMWOPyuYXZJZAX93cY/xWLPViwmxLMg8I+JQlUpfkkxtvVk8CRmBZfCKXmrjgjdNmtr4ZLrKMOqD+FkNNUoGZklVlFVAy4wv4M0oXxdHHhag1Zdr+f2X83E7CeigYepklQv6Rv57LlpnEzECYk3yipgfxW88cdHIfTzXyD3ETNgcAskFS9iWWVLdNm+019xVotnBRQLt/Kl7iNflMFi999AG76fRSQ3l7skf9topKCvrsTo2fN3FDwpIgkvbG7qRvl1+4X2vn9GtaOufB6pDFWm5TI4Jv4Tv/ksLqYwBsb2/LGeLZVzUUzqJPXK8f5VU3BIVj/9GzNDV9J4emtDhdmP01fmqlK58n2yz14uiyns4xVOLUn2ZYrlALu5On7sPHA93IMIo+8Pz6s3T99xNEJnqxmPtXwGNhKPh5JrotNqTzZ4xTqjbKCj4eZexa/VQBwxL7QvyrpKYyrjhA5vZ2HVcj9L+dqThN+8+97V5i7bb1aqaenOv7RUm7S3taOJR/jI0i+K0iafwzRTZYnKE3nxj7hnUMRSZEiMNh6EnrYK7e2HQqoU1kW2BnwHAZXGr2SZMSXhvELhBWfCSo+H8KgrdkvveQc61aNyIVxOPPqWn21ntZzLkAMCnYPxHa5vT2Cs6IgXfdmfPdYGHlPuYLhLlzkZA39yzGWyT6tC5KwN2PO/78TVqs9KoI+mWgYo3wL2WK6p/bjOfB3Ik0zqAn54atNBJv+6YXlGyuBYYObIj57ujzlhZ55+qIFV2rqfPcvq/qKLONmO042mz+nRfxmwV2ifVEYGS0eUAMiwEj3LaPJ/+56Da8INwguQN+jF6vf5AIJy0VuFUBRAWjqY6mDz8xEGHQDlk33qrR4ZBEU7CrjLiFaaPNlBjUbO5/fhntjQ7uq/dPkwC7NOc5hmP3X2o4mT2OCdxlZJbFNlBMcfkaC9np2RIXA45n0/1Lj3uM lsXwv34j Qr3D3EJr9jCfQlrKfKfvLcQ+6EVbfbFyHgXFDAk/wdjlnT9iFH9npGviyxY0RKaRbbLJEUehzSKiLLzM= X-Bogosity: Ham, tests=bogofilter, spamicity=0.007988, 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 Mon, Mar 4, 2024 at 8:54=E2=80=AFAM 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) =3D=3D 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 =3D 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. >