From nobody Wed Dec 17 06:14:34 2025 Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 37A4A2FFFA4 for ; Fri, 5 Dec 2025 23:17:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.97.179.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764976668; cv=none; b=DjY3eohIlmmsA0nrhvVJfDKccPyDkP+JVwVtVNd4plACbwrKQ60vp+gptgWIczSY1z4fY9ubJOK4ZnDVWc+GjAwHW66T6L7tjHcyLQaSfkKjDO2FXl49AVv4tpRIzth6+2drlLBkAH+bvfP8Omf/VXslOvVgAg7O1bu3TUKWLGU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764976668; c=relaxed/simple; bh=c0SAIzpwWkQlWyLinhvIsYFal6Ucs3Inp2r6Xv+YCVk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NlYNujGa/wvCT1HvQf4XSk9ZmvfIGROKYpnF8mV+oXqEdHbV+HFjo0TmpsrwSAz+3/Hvm2Y57n5MLLDLwitLhLzTWsJomOnmf4m3l2lOOiVyx5KM2q/2g2f6XXamEmWCmYtzFDbGe1/pCCa3vOjpGf/QUDJqF/13SaobfXxzzsI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=MFRhopnH; arc=none smtp.client-ip=213.97.179.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="MFRhopnH" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=6hgIhBjkcBdOpG4pdp5wLt2KON9r3FFTvP5A6zlmIso=; b=MFRhopnH0jY1D0S/Z7/HGXAz9z AFJgXWhDxsUzmz92x1f4LKTC2qYf2lf1Z07OBMpR0twyEDFI5y+OwCwfzkogf2q/aJsxxxC8A0wjR 9CpvorI1iExQ4K0v65ktrD1/4JEh1uR/sJVA8CF5Xt9G16IudoEKzoz6EOSGO0q4lo86oePKMjPMx G21vcrDKoOUITCUgrt9LmHA0tv8a3crh6EOzTYB4EIRhLW6xzJzZrWKqk5sVGnsV8/LcnARmtJP7e Uz4epEM62N1glMmnmGvxMwATI25W1dP2NTKjBfzjY65GOjDNZ5naiCBzDynRM2xVQvU58GxsbPomF 2Bj5sBdQ==; Received: from 186-249-144-101.shared.desktop.com.br ([186.249.144.101] helo=t470) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1vRf3T-009H1j-6j; Sat, 06 Dec 2025 00:17:39 +0100 From: Mauricio Faria de Oliveira To: Andrew Morton , David Hildenbrand Cc: Lorenzo Stoakes , Michal Hocko , Vlastimil Babka , Oscar Salvador , linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-dev@igalia.com Subject: [PATCH RFC 3/9] mm/page_owner: add 'struct swap_page_owner' and helpers Date: Fri, 5 Dec 2025 20:17:15 -0300 Message-ID: <20251205231721.104505-4-mfo@igalia.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251205231721.104505-1-mfo@igalia.com> References: <20251205231721.104505-1-mfo@igalia.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add 'struct swap_page_owner' to store the (initial) allocation stack trace and some attributes, plus helpers to allocate, free, and copy it to/from 'struct page_owner'. Signed-off-by: Mauricio Faria de Oliveira --- mm/page_owner.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/mm/page_owner.c b/mm/page_owner.c index a27958872b07..19ccbda1c2a4 100644 --- a/mm/page_owner.c +++ b/mm/page_owner.c @@ -60,6 +60,14 @@ DEFINE_STATIC_KEY_FALSE(page_owner_inited); #ifdef CONFIG_SWAP_PAGE_OWNER static bool swap_page_owner_enabled __initdata; DEFINE_STATIC_KEY_FALSE(swap_page_owner_inited); + +struct swap_page_owner { + depot_stack_handle_t handle; + u64 ts_nsec; + char comm[TASK_COMM_LEN]; + pid_t pid; + pid_t tgid; +}; #endif =20 static depot_stack_handle_t dummy_handle; @@ -442,6 +450,38 @@ void __folio_copy_owner(struct folio *newfolio, struct= folio *old) rcu_read_unlock(); } =20 +#ifdef CONFIG_SWAP_PAGE_OWNER +static void *alloc_swap_page_owner(void) +{ + return kmalloc(sizeof(struct swap_page_owner), GFP_KERNEL); +} + +static void free_swap_page_owner(void *spo) +{ + kfree(spo); +} + +static void copy_to_swap_page_owner(struct swap_page_owner *spo, + struct page_owner *page_owner) +{ + spo->handle =3D page_owner->handle; + spo->ts_nsec =3D page_owner->ts_nsec; + spo->pid =3D page_owner->pid; + spo->tgid =3D page_owner->tgid; + strscpy(spo->comm, page_owner->comm, sizeof(page_owner->comm)); +} + +static void copy_from_swap_page_owner(struct page_owner *page_owner, + struct swap_page_owner *spo) +{ + page_owner->handle =3D spo->handle; + page_owner->ts_nsec =3D spo->ts_nsec; + page_owner->pid =3D spo->pid; + page_owner->tgid =3D spo->tgid; + strscpy(page_owner->comm, spo->comm, sizeof(page_owner->comm)); +} +#endif + void pagetypeinfo_showmixedcount_print(struct seq_file *m, pg_data_t *pgdat, struct zone *zone) { --=20 2.51.0