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 D5D74C54E94 for ; Wed, 25 Jan 2023 15:27:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 59ECD6B0071; Wed, 25 Jan 2023 10:27:29 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 54EB46B0072; Wed, 25 Jan 2023 10:27:29 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 416AB6B0073; Wed, 25 Jan 2023 10:27:29 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 2F9B86B0071 for ; Wed, 25 Jan 2023 10:27:29 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id D24FB80239 for ; Wed, 25 Jan 2023 15:27:28 +0000 (UTC) X-FDA: 80393700576.21.B9FCDDF Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by imf03.hostedemail.com (Postfix) with ESMTP id 1203720005 for ; Wed, 25 Jan 2023 15:27:26 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=pX+hbhDn; spf=pass (imf03.hostedemail.com: domain of jthoughton@google.com designates 209.85.128.53 as permitted sender) smtp.mailfrom=jthoughton@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674660447; a=rsa-sha256; cv=none; b=hv4Bf9p2pJW8JtMTdf4CltG8DbfULGhT831V6dLKncRGmO4OChZvep07kaR/l5uZmAtYNj 4f5ytk+gBrFE36u2KQt55sbNSBsK6/EqOgAA6WbfZuID+M2glzcpCMPYfT8afxR0AUtA4C Icd1g4/4lSeoOBqsn/QGqAQ7X0goepI= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=pX+hbhDn; spf=pass (imf03.hostedemail.com: domain of jthoughton@google.com designates 209.85.128.53 as permitted sender) smtp.mailfrom=jthoughton@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674660447; 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=hpdoJyuUZbn45uxBwyzyEnia5V6f38n+qtLVqNJ/X14=; b=QuJu26NwJz5DOZdibHqZKI2oUV/KGm9jS+qZKfvEpwBg3t5ZihC9xl8IJzGHK3LgRxRRlL +RDG7oMVk5rS+Fp7pGR20oLzboVg5DLZNRvFxTAQVm7yQPLAEgaYrDj+G5UH9mGn0PMftX 4bf91cj8u1GNxo12h9FEjEA6ETKIhFs= Received: by mail-wm1-f53.google.com with SMTP id l8so14038642wms.3 for ; Wed, 25 Jan 2023 07:27:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=hpdoJyuUZbn45uxBwyzyEnia5V6f38n+qtLVqNJ/X14=; b=pX+hbhDna67qDBIChqw3EjDTCqflcc/6uM9xkW49Eux1zFDnmtxIx96gLJzzGiamEi Ea6whBDAaKjRJuYM0sSw2ujYC8nMv/tB8awoboYqtiakpsPBPLQkPXh1UUsjIOPtuqXP JS8QujVqetra8KSEdyjSVIUBnDj34zbgHKmu7h0yTAIWJKFe8z2EI4wQCsJP4fAb90MO tARJvSOW58LO/grWn1pE65ocYLWW2iaX+s1aeQnZqeH2YAYGUO8uw0NwAmOnUBJ8IV1U /hl1YOK925vJgrEnRS4dRsVzsxHlqUDCLfgfe410fThNx4A0c4wY/ZOpEBoeBNv+1I+B WGnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=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=hpdoJyuUZbn45uxBwyzyEnia5V6f38n+qtLVqNJ/X14=; b=WiV+d8sBLsGhGj6Cq12V9yb9eP6c3kwjdgyJVzV/k6ZZyV5XptQLmGSNjKQsx7SVmD cL2BWmdXUiM0skDsVSwZqLr8tInsYRnAQkioXuRStP7MM8orQGKKuOTL7D6loZm1450X jSrk2wP74Q3FUcN0BW48HkyJ2/3z0AARhs7tAqR7rUODqLZ/vnM5VBd1U31CMeK+VTl5 AydOeM1HL7uQTZrzWkX2eE75085I81dk+APCDJcvLd3FWuPG89VKQdmKiBjJ9cNzjkHQ xB/xtPrYzB4V60Op6CU/Z3Re190VUnTEO+sR/kVc5tEyq5w8X8HRbe2fzHEspi/hUdBK +dBg== X-Gm-Message-State: AFqh2kqN9/Ig803T5rn3WtcLr2fmHPZdeKwiql658Ise31f0/8aDE9YP eYH/eJhq+/udDNV1HGtO/KkBoYLD5Z9UkPQoXdi9zg== X-Google-Smtp-Source: AMrXdXuGizUUx2e3kIl6QCY+rtcf3RmDdvasykuxW5NqRCPCD7KwT/QnBmMU/IuapzsEoV1DW/qYBkY0bMD2N65lwjM= X-Received: by 2002:a05:600c:3095:b0:3d9:7950:dc5f with SMTP id g21-20020a05600c309500b003d97950dc5fmr1733212wmn.120.1674660445534; Wed, 25 Jan 2023 07:27:25 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: James Houghton Date: Wed, 25 Jan 2023 07:26:49 -0800 Message-ID: Subject: Re: A mapcount riddle To: Mike Kravetz Cc: linux-mm@kvack.org, Naoya Horiguchi , David Rientjes , Michal Hocko , Matthew Wilcox , David Hildenbrand , Peter Xu , Muchun Song Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Queue-Id: 1203720005 X-Rspamd-Server: rspam01 X-Stat-Signature: ztc9wyc3tzxadcgmsmnbxod4xqwpbfmk X-HE-Tag: 1674660446-959201 X-HE-Meta: U2FsdGVkX181kHMt59YpufIKREUCjf5HF0dekb1FMQ7Ohhfn6oO32S8LVTmoCi3C2BLumdA2IHaw6wZ4/7AFnVhrjD0UbeZ7gu41TCJD0VAXr/4x9fIf4S/Z3RgnRAdSwwO3ZtTv69S6e3E2KVslNDV94Zrtsk21fobSZZJGSizQHGP/wzVJwEEScPhlCz6tHnzxF8MkTHXvj8t926h2pH4h2V5HQP/M82R4d+UhExeaGRP2PRci+lxXuAg+6FDj3Qa09bssVEXjnMle3tKQnFdUmOPUmlkhKbqqbHS2P7cV3i6lowJTi6eMT87kmpZID/VnVgNRGp+YwxiVDXPYoc7SKDoGnbrWcu5h8zz74ZbR56GxW69Keegz9LlP7eFK7z2gQn5osN549Yq44rcU93YRymp7a7p0Ze3WbJW90IJDLk5DU4n3K2aTp0gvEUl8ATVZlnJagOsyi0xpTgFSs27FQ6m291eFce+KcQkFOJ6icpveXDIHhTtoHGurINLKNCjaxk6h1OW4xZbyfE65BetPvQNEoUdRAMNdjpQWXyFSyZKQToKV3usmVhjbOCL7bYfo1SKMoHT34+4RjMkomvzNjhUrfIxLQBNBQQI0Jf+7f9d796nQA4QtyIXcoYMEgZbh6g9D8aEHdMlzk5fHuLm+d0v+uNuoqD8PwefN3/5MMB5mn7pYNmsjltHeYbB4IcwRGjU7vsUqlcHvQIMCqCXKMAGkTWUMqxZ/aste0ZTVWtD0/Q55oj18uFYxqOxDnX94rYw6Swq9pVs9a5OxJ45+28j7MJ2TUP5qpMakzqTfkAT1ABjluA245EWji9DpXAM5TXQvyg6GSVjHrJgSvfPsLJ7Id8lc7gQx87peaz2vn788LHQg1we5FddSKlPownADANELBUlDV5GNDk1QBbWPTkz+6pLdWN2UmsevNJNBiEpI5WKQbLhH8McuMuAMVa7+cljjK35F9g32GR1 cZj6AW9n AnmZfIejxAacX3KAkFLxbqNJMCbvJa7qPNKK1zVbosPPI/Lm4h0ZGu1L+EyV0KA4/1J7R+3CqGDfp5eG9zIf8b0SQGZz2dZ5DUDffdF/XNVJMBcNpcjh+cELX1FROVcpDtFIrfnM4D3UecuAfbI8HBGBcOctXjdxi97GGCg1k7Mf4uzn5iRV0kG6pACGhaVRdMkyWzSPmIOumBqwz9AylHQ4GsRyxPVzPkn9h7R+SZS90/Ww= 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: > At first thought this seems bad. However, I believe this has been the > behavior since hugetlb PMD sharing was introduced in 2006 and I am > unaware of any reported issues. I did a audit of code looking at > mapcount. In addition to the above issue with smaps, there appears > to be an issue with 'migrate_pages' where shared pages could be migrated > without appropriate privilege. > > /* With MPOL_MF_MOVE, we migrate only unshared hugepage. */ > if (flags & (MPOL_MF_MOVE_ALL) || > (flags & MPOL_MF_MOVE && page_mapcount(page) == 1)) { > if (isolate_hugetlb(page, qp->pagelist) && > (flags & MPOL_MF_STRICT)) > /* > * Failed to isolate page but allow migrating pages > * which have been queued. > */ > ret = 1; > } This isn't the exact same problem you're fixing Mike, but I want to point out a related problem. This is the generic-mm-equivalent of the hugetlb code above: static int migrate_page_add(struct page *page, struct list_head *pagelist, unsigned long flags) { struct page *head = compound_head(page); /* * Avoid migrating a page that is shared with others. */ if ((flags & MPOL_MF_MOVE_ALL) || page_mapcount(head) == 1) { if (!isolate_lru_page(head)) { list_add_tail(&head->lru, pagelist); mod_node_page_state(page_pgdat(head), NR_ISOLATED_ANON + page_is_file_lru(head), thp_nr_pages(head)); ... } If you have a partially PTE-mapped THP, page_mapcount(head) will not accurately determine if a page is mapped in multiple VMAs or not (it only tells you how many times the head page is mapped). For example... 1) You could have the THP PMD-mapped in one VMA, and then one tail page of the THP can be mapped in another. page_mapcount(head) will be 1. 2) You could have two VMAs map two separate tail pages of the THP, in which case page_mapcount(head) will be 0. I bring this up because we have the same problem with HugeTLB high-granularity mapping. - James