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 06B37C5AD49 for ; Sun, 8 Jun 2025 18:38:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5EEC16B007B; Sun, 8 Jun 2025 14:38:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5A0756B0088; Sun, 8 Jun 2025 14:38:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 469C36B0089; Sun, 8 Jun 2025 14:38:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 1EECA6B007B for ; Sun, 8 Jun 2025 14:38:28 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id B4CB4A03EE for ; Sun, 8 Jun 2025 18:38:27 +0000 (UTC) X-FDA: 83533093854.23.3BABBBC Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf16.hostedemail.com (Postfix) with ESMTP id 86070180007 for ; Sun, 8 Jun 2025 18:38:25 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Lc3qDiYg; spf=pass (imf16.hostedemail.com: domain of npache@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=npache@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749407905; 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=fVPNaS5VAE3yHHygUG3///XjchuLxOQpALrW75eFOBs=; b=U8cMarizY93zmvqiEBpQvL5UiOPQ7FYJmk9YufdZceLM5GRY9lLnfUAgk4t/Y/LEU8gmt6 4XRnYoQJ7IlvnocnyBPACD/Knpt0YmqN/wc8ke9IhEpFbwpniMrX7klMiNwDIgKz9ESicq qDfN2hmwZFiBQrtbkLaOJtYwIvEHPns= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Lc3qDiYg; spf=pass (imf16.hostedemail.com: domain of npache@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=npache@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749407905; a=rsa-sha256; cv=none; b=1VWmg88Wwa8jXvtxw3uoILL+LganbkXKdOdnPS0PLn1FjPeGmXqPFiITNubovSbbNESWfU MjlNw9sWbQbZGDmJLOZT3GYVZV5OkdM1cteIhco1K/hvpnUhxUd/x/grkoBnBT7uSqL/wR 3oKdrKLzT2aqNyhPXjFIZVslIYCbyg0= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1749407904; 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; bh=fVPNaS5VAE3yHHygUG3///XjchuLxOQpALrW75eFOBs=; b=Lc3qDiYgaCFjmAzlEdr3N8dW51ybP1yZWsLVqqacVE/R633FZG0WEvZwt2QGmGO3/JVDZg YOuyMrpAIeDg04FBZcAr78GnglZDnEPw3bc9yEqHbM46btl6GcX5YeDix0pi5GWgw3Iunu LugvTUV1+up4DVgnfzQyIDasBY6KOvs= Received: from mail-yw1-f197.google.com (mail-yw1-f197.google.com [209.85.128.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-490-72dhZm_aNjCXAb8SNTKJvQ-1; Sun, 08 Jun 2025 14:38:23 -0400 X-MC-Unique: 72dhZm_aNjCXAb8SNTKJvQ-1 X-Mimecast-MFC-AGG-ID: 72dhZm_aNjCXAb8SNTKJvQ_1749407903 Received: by mail-yw1-f197.google.com with SMTP id 00721157ae682-70e3acd6353so55261747b3.0 for ; Sun, 08 Jun 2025 11:38:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749407903; x=1750012703; 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=fVPNaS5VAE3yHHygUG3///XjchuLxOQpALrW75eFOBs=; b=JKePmjFAy7CFIbbekkhpd0oNU9IvFPKUPK7nmATkdq46acEYF64yUbKNQsiIWACM7+ pTcI/5rN2B7tU9djRJPFZxg8abuhUrX5aPrCH8Rtiiu0K8cMqhASvLfvejPJcwDgM3rI MN2s+wpNXZ04qgUHGszpPBdLAphRQsJ6jUx5lPaqeWk42Pe5INJPXxVJ0sOFwF9Zi+vR YFB8mRKZ+jOgrQjXR67WWqQMDNG20bcQJlzmEfsW0zuGLMmUmqX4D4OuwpY6LLTo5DL2 4eOLkdolUb9rGJ7CsKzJ6USPQpAShHW2/gC/m9juKW/SewH+Rm/xEJ0HpRx9y3dceztc d/CQ== X-Forwarded-Encrypted: i=1; AJvYcCU4D3d25i7MmZQbf9xVEJjlGBsoLvVQt8v4eOpz+pRsFkYEkPV8z1mLEX3TipW0TiYHz6COOdoOFQ==@kvack.org X-Gm-Message-State: AOJu0Yxlg5c++kKkxr4G3FDlKYcQviJFu9K5LJv8Wa5HHyZDtaVOPhCJ 2ReqDyleNH/ynkjeBap3/AFEBXPy3b6EixOC4sJ/xkgO7e1e5wIA7ofJghsCAahsngrvBV2uRGt OPeDIYussGq324H1T0cYmzGMo6H9JSFcQChaYCIuFKLXwbKf6EP3yfcovCcYgwhrx2cW7y+Bny9 tPaartS9svzPR/UwfuML5djCcfnA4= X-Gm-Gg: ASbGncvdPS6YWfNlGmjqMUAUXP5WlRLC/5+8B5oYO8Q18nbzrZB7Kz61lpmLuZaCQzZ /FO/hG9+WnZ8YtmCvlC327ltu+pKd6e948DfLWS5Z5t919e8adYqzIJtFp02vQokvrs8bP2BKbc irxjEaKg== X-Received: by 2002:a05:690c:998b:b0:70e:73ae:768d with SMTP id 00721157ae682-710f7660c60mr148819717b3.14.1749407903001; Sun, 08 Jun 2025 11:38:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHuPHc429bq/hnlIxPnHLdZTlslObu46Hc4lr1iA3871tAbvtL0uPRHVn18HINC8NF2H7zrGgqHTnzzVwG11Eg= X-Received: by 2002:a05:690c:998b:b0:70e:73ae:768d with SMTP id 00721157ae682-710f7660c60mr148819577b3.14.1749407902703; Sun, 08 Jun 2025 11:38:22 -0700 (PDT) MIME-Version: 1.0 References: <8eefb0809c598fadaa4a022634fba5689a4f3257.1749109709.git.baolin.wang@linux.alibaba.com> In-Reply-To: <8eefb0809c598fadaa4a022634fba5689a4f3257.1749109709.git.baolin.wang@linux.alibaba.com> From: Nico Pache Date: Sun, 8 Jun 2025 12:37:56 -0600 X-Gm-Features: AX0GCFt_EXk5S4LHCfsWbdtypeT52mnYwXqLeNHKIB74ww6gs_33cqhx0LGPq1A Message-ID: Subject: Re: [PATCH v2 1/2] mm: huge_memory: disallow hugepages if the system-wide THP sysfs settings are disabled To: Baolin Wang Cc: akpm@linux-foundation.org, hughd@google.com, david@redhat.com, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, ryan.roberts@arm.com, dev.jain@arm.com, ziy@nvidia.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: L5DQ9Ur9ETYoLEVx6hnPBO9BaerWABydNblcxklaPkw_1749407903 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: 86070180007 X-Rspamd-Server: rspam09 X-Stat-Signature: xdjakw4h6no6nbh739gxzp1uqeydqteg X-HE-Tag: 1749407905-229240 X-HE-Meta: U2FsdGVkX1/H1Y3vAHw4VO1qGNKyhN3NqMsd8VvADJ7t4VBhehr7h87Pjq8Kln+LO2mEx1zRfIpLQe4+DME+GYlVeHvRVxdt6fNmFRSh987DSJ+4zFWTb/Ve4a5Zux8jcfyeLtWOo5bZR/pc9FmkV6tDnqXmyuDEDu0SWLPFquAVykUljjQoL9qMlgHmNvNa4EHABYdPTTmeECKl8x8uDSeJL2l+3kgqMyfcqa5oCbclp/+5FuVbEf9oecXDCWWjUCFv8IJGG8PpyOcSBmxc2jny9828fbM9Y6eD7DNsmSOXFf+9Fu2LgKlXBJwUOZX6fTnWIzuhtPulBM1xix6oGqneNo7DAi2MiUh37dwGEuffnvZ6Npjs7+B5BUtqqZabxNL2jFytjbkXTuqGq+boaktIvhHw+Ht5wy+foU0ZSEholK+NyNGkADLIZFCIt8bDLLK5og/5+wlqLHd5s27yak5aMQYgE91Dps2vgcWHDcrU621DIocxEbfrvIsiScL6e9Nf51sj0luTQmWGPhQFujqyUwJgnenQnxhR7HC20DqlEM17LTfri0n5jtzig/NL7eLi1EfnQylhRakXgdQHjceFaTLQ4MBGR/g25RIJEjLYwCuF6R9TilrmUQy5gb7AxnAAxQSycxT8Nm72vVr7sMRip3ijpcYMbkCWqL1oKD3ITGaJldRnpfbtlGQpbfgYPUQle31bH7V3lrC88Rzy0gUJCeYomFNsy8KrS2Y586OjEwH5P8XeoG4BZt5KzkSldOLWuXcL/TKHfqRZid27ixFfYveHLlg32bft1a71DNq3L6rYvCOOiYkvTCnkBQheZ08oVxKA6TGEpFDp77kmbpfe/afexxFt82k+xLL0rZFvnHNBdOZyxc5xx3yiPBR2vafdcJsCIdSZWlNNY0zf1/wDR3gvHymhZJeLPATA7m3d8O9IXmFbgJspoNczLb6YoaavC7vGEWRkOQ/hGDq Y3Q5XBbp bz4/hpbYVvpvpWEeK2Rr9iyY+XQgAIfQYfSRpOZF2whT2d47ZMAVd5bjnVr2AX3zinVw/fu9boASLywAaik7nj6T3BwtfVvHPqfcsujwytp15dxub8pmbHGXk3bMr4s3JQkz1MsXfrBeD6fbAU0bA03RWdmbzrTxxuAg5Y7Ju5js2mMW6mMqwBrBpW+0JNoPYDqgVRzI5hO5v4T0qHcT04V8zC2Jx1sB5aCLydfTvCRkM+bqisTDJk6Wb3KiZb+1oyFixR4z6s0ypjmoUZiwEsXUPH6y6XBQHCmhXAlvosqGjlaktSeuY/nfP1t4/I0b+KtHGMKQvgqdJzykJQsxHR/rqUUdSHu2eY8aZCdHFXU0j3DPXkPFXgc3dUg== 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 Thu, Jun 5, 2025 at 2:01=E2=80=AFAM Baolin Wang wrote: > > The MADV_COLLAPSE will ignore the system-wide Anon THP sysfs settings, wh= ich > means that even though we have disabled the Anon THP configuration, MADV_= COLLAPSE > will still attempt to collapse into a Anon THP. This violates the rule we= have > agreed upon: never means never. > > Another rule for madvise, referring to David's suggestion: =E2=80=9Callow= ing for collapsing > in a VM without VM_HUGEPAGE in the "madvise" mode would be fine". > > To address this issue, should check whether the Anon THP configuration is= disabled > in thp_vma_allowable_orders(), even when the TVA_ENFORCE_SYSFS flag is se= t. > > In summary, the current strategy is: > > 1. If always & orders =3D=3D 0, and madvise & orders =3D=3D 0, and hugepa= ge_global_enabled() =3D=3D false > (global THP settings are not enabled), it means mTHP of that orders are p= rohibited > from being used, then madvise_collapse() is forbidden for that orders. > > 2. If always & orders =3D=3D 0, and madvise & orders =3D=3D 0, and hugepa= ge_global_enabled() =3D=3D true > (global THP settings are enabled), and inherit & orders =3D=3D 0, it mean= s mTHP of that > orders are still prohibited from being used, thus madvise_collapse() is n= ot allowed > for that orders. > > Reviewed-by: Zi Yan > Signed-off-by: Baolin Wang > --- > include/linux/huge_mm.h | 23 +++++++++++++++++++---- > 1 file changed, 19 insertions(+), 4 deletions(-) > > diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h > index 2f190c90192d..199ddc9f04a1 100644 > --- a/include/linux/huge_mm.h > +++ b/include/linux/huge_mm.h > @@ -287,20 +287,35 @@ unsigned long thp_vma_allowable_orders(struct vm_ar= ea_struct *vma, > unsigned long orders) > { > /* Optimization to check if required orders are enabled early. */ > - if ((tva_flags & TVA_ENFORCE_SYSFS) && vma_is_anonymous(vma)) { > - unsigned long mask =3D READ_ONCE(huge_anon_orders_always)= ; > + if (vma_is_anonymous(vma)) { > + unsigned long always =3D READ_ONCE(huge_anon_orders_alway= s); > + unsigned long madvise =3D READ_ONCE(huge_anon_orders_madv= ise); > + unsigned long inherit =3D READ_ONCE(huge_anon_orders_inhe= rit); > + unsigned long mask =3D always | madvise; > + > + /* > + * If the system-wide THP/mTHP sysfs settings are disable= d, > + * then we should never allow hugepages. > + */ > + if (!(mask & orders) && !(hugepage_global_enabled() && (i= nherit & orders))) > + return 0; Hi Baolin, Thanks for making this change so we enforce the 'never' being never rule. As others have noted, this statement is hard to read-- is there any improvements we can make to the readability as Lorenzo suggested? Either way, I've tested this and the functionality works as intended. Tested-by: Nico Pache -- Nico > + > + if (!(tva_flags & TVA_ENFORCE_SYSFS)) > + goto skip; > > + mask =3D always; > if (vm_flags & VM_HUGEPAGE) > - mask |=3D READ_ONCE(huge_anon_orders_madvise); > + mask |=3D madvise; > if (hugepage_global_always() || > ((vm_flags & VM_HUGEPAGE) && hugepage_global_enabled(= ))) > - mask |=3D READ_ONCE(huge_anon_orders_inherit); > + mask |=3D inherit; > > orders &=3D mask; > if (!orders) > return 0; > } > > +skip: > return __thp_vma_allowable_orders(vma, vm_flags, tva_flags, order= s); > } > > -- > 2.43.5 >