From nobody Wed Dec 17 11:33:46 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BCD18C07545 for ; Wed, 25 Oct 2023 20:12:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234201AbjJYUMt (ORCPT ); Wed, 25 Oct 2023 16:12:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43806 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229441AbjJYUMs (ORCPT ); Wed, 25 Oct 2023 16:12:48 -0400 Received: from mail-ot1-x342.google.com (mail-ot1-x342.google.com [IPv6:2607:f8b0:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 41CB4136 for ; Wed, 25 Oct 2023 13:12:44 -0700 (PDT) Received: by mail-ot1-x342.google.com with SMTP id 46e09a7af769-6ce2eaf7c2bso102534a34.0 for ; Wed, 25 Oct 2023 13:12:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698264763; x=1698869563; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=IfZqbBPDt9YW5gpQ19AuecfZ/UwVOFBirFqhS2+TgdY=; b=mWpQV9rjTO/NFg3bfZLDHhfRlOMp7IoJDqC3oGJWjvgQslWggpcFnI6VshoxDAt8Pr xPaBRygO4/lno1w/2TtOxiZufcm9G8He3LY/Znenfus/EWzsuQUZ7MXZAa/F7Muu26ph YlJUCNEutaYVIFSklXiG5N1jaKBsJB8Pv/lVCIst2upRZ4+Yg7OZOGeBtwCz4yAuxMYJ D/7Acb/2Evmv1gSfI+ODIrhRUtFQl9/tsf1czcgfs9Wia+4sA6pMb+Uw3YSlrItgnjRk EIbCx1NavKlG5XW9a4d7oUGY4iJl5y9Kw2XMDb7apfjIRZq/LkJRRIfLymI8ztmLAHpe UO5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698264763; x=1698869563; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=IfZqbBPDt9YW5gpQ19AuecfZ/UwVOFBirFqhS2+TgdY=; b=lDiXSXzogZ3tAZ7CMnQ556iAugEeV+h+vknKUDOOETufXJxffpmOKOIThCvFD46sSu 9ojemm1xDyKPNFSkeFz+Z2LMNakPQ4j+t6CZJeLKB9wcxim6LjLYwHTxIaHR36aohtdf y93daJgqNEr26GQPD7nBaNv7y7bvHePQHuqIs0ZbDjwP5J4rpc11GtuxjYD2oeltkmBy x723RY97PK8PSZUsUTRQk1C3rxn/wM4Dm/y/TJbHYoAl0uoBoffa7rUyJTlxqZCKyNll SVWZslR7kmvWD4n1F5CpGbou6XPL0AmGVpuZ3e6D4NjaDwgQHfr08boqMcX5le8qC40V CWqQ== X-Gm-Message-State: AOJu0YxwO+wHAj1v8dVjF2PZccocy+TiS1A2KzmUtxhuGXtTZGj8SrDN 4E7Bm4EBMdzOkBIDz9vsbA== X-Google-Smtp-Source: AGHT+IHKO2keZsxnyC2gRGZxJPxOiMMDcNjtUVnne3MFD7NareZ1ReXAfwCnFkLgIvbmb3KMwQk7Dw== X-Received: by 2002:a9d:6d91:0:b0:6bd:b0c9:a8d with SMTP id x17-20020a9d6d91000000b006bdb0c90a8dmr17046190otp.25.1698264763510; Wed, 25 Oct 2023 13:12:43 -0700 (PDT) Received: from fedora.mshome.net (pool-173-79-56-208.washdc.fios.verizon.net. [173.79.56.208]) by smtp.gmail.com with ESMTPSA id t62-20020a818341000000b005a7bbd713ddsm5274739ywf.108.2023.10.25.13.12.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Oct 2023 13:12:43 -0700 (PDT) From: Gregory Price X-Google-Original-From: Gregory Price To: linux-mm@kvack.org Cc: akpm@linux-foundation.org, willy@infradead.org, david@redhat.com, vbabka@suse.cz, naoya.horiguchi@linux.dev, linux-kernel@vger.kernel.org, Gregory Price Subject: [PATCH] kpageflags: respect folio head-page flag placement Date: Wed, 25 Oct 2023 16:12:37 -0400 Message-Id: <20231025201237.948993-1-gregory.price@memverge.com> X-Mailer: git-send-email 2.39.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" kpageflags reads page-flags directly from the page, even when the respective flag is only updated on the headpage of a folio. Update bitchecks to use PAGEFLAG() interfaces to check folio for the referenced, dirty, lru, active, and unevictable bits. Signed-off-by: Gregory Price --- fs/proc/page.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/fs/proc/page.c b/fs/proc/page.c index 195b077c0fac..958fb2311108 100644 --- a/fs/proc/page.c +++ b/fs/proc/page.c @@ -188,20 +188,31 @@ u64 stable_page_flags(struct page *page) u |=3D 1 << KPF_SLAB; =20 u |=3D kpf_copy_bit(k, KPF_ERROR, PG_error); - u |=3D kpf_copy_bit(k, KPF_DIRTY, PG_dirty); + + if (PageDirty(page)) + u |=3D 1 << KPF_DIRTY; + u |=3D kpf_copy_bit(k, KPF_UPTODATE, PG_uptodate); u |=3D kpf_copy_bit(k, KPF_WRITEBACK, PG_writeback); =20 - u |=3D kpf_copy_bit(k, KPF_LRU, PG_lru); - u |=3D kpf_copy_bit(k, KPF_REFERENCED, PG_referenced); - u |=3D kpf_copy_bit(k, KPF_ACTIVE, PG_active); + if (PageLRU(page)) + u |=3D 1 << KPF_LRU; + + if (PageReferenced(page)) + u |=3D 1 << KPF_REFERENCED; + + if (PageActive(page)) + u |=3D 1 << KPF_ACTIVE; + u |=3D kpf_copy_bit(k, KPF_RECLAIM, PG_reclaim); =20 if (PageSwapCache(page)) u |=3D 1 << KPF_SWAPCACHE; u |=3D kpf_copy_bit(k, KPF_SWAPBACKED, PG_swapbacked); =20 - u |=3D kpf_copy_bit(k, KPF_UNEVICTABLE, PG_unevictable); + if (PageUnevictable(page)) + u |=3D 1 << KPF_UNEVICTABLE; + u |=3D kpf_copy_bit(k, KPF_MLOCKED, PG_mlocked); =20 #ifdef CONFIG_MEMORY_FAILURE --=20 2.39.1