From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B1F893D1705 for ; Fri, 8 May 2026 15:01:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778252484; cv=none; b=T+ku3gW9YTzba1w3m0Uv2gTLVzAYBIsY4fYhBhNJW4BqjBFdijfB1Bt+5w2ejh9Sx2lsgJZXXAHR7j9QToZaeF+oyuP36JfHj+UsBtVfYi69PUrX1PJZ8wYEs5MuoGixf2m72Cvu8VI0F913Zgs5eHeCzZ6d+W/ZS2Vyocepo3c= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778252484; c=relaxed/simple; bh=jGeM0yncAreFGWSxvrJhUl2XzEwjtH2RSF4Lh7ouqhw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NxpUpLR6HmwpMnVII+4U4diyznXw1jOuAqjuNo3C7WMShHdwTCVz2Idb76Fvmoe2t9SuzmHz6yzpPwTBiX2rgyaqxe4eLhJsmE6CcTQZXsqm3Z1ANzczyqtHz08RKrFZyeOb4DYApRBEi3c/oxOdNUC/Ab2uPEpVXhjPahmk544= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Jy63HMjd; arc=none smtp.client-ip=209.85.210.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Jy63HMjd" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-8353c9f24d2so1186486b3a.3 for ; Fri, 08 May 2026 08:01:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778252483; x=1778857283; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QueeMM+8Rtdi14b6LI2wohmsfdt2dh1GY7mMDDoIeZw=; b=Jy63HMjdEH3LRh32D6yLv47E8yiK/+GhjDBlXvUNaRKMYz/0ljk1I+UbuyPZDP+9aR L7LEqDFHKU9To9tLk/157nPESEkftoazEYzifd59jq6uG1eMZhCdK2x/W9anK2D2Bjnq bxjlN+Mvx74wuTaRSXAv3Cle1cMTDBkuyr0rgqKnCf2pgjgcSF6T68rotCxv38RbbIqC pyupXGBECDbNJnI0PcSndbsl+PFm+9u3dn6fegk145VXnTEtUVDlR3QXbx9PMA/zUiPl XKQpr1a358syuXIHbP7xAKmtnwt5D8cC652axEg9+vX7lGQqxI+FvGo2HOkGsDVNEqqp dLeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778252483; x=1778857283; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=QueeMM+8Rtdi14b6LI2wohmsfdt2dh1GY7mMDDoIeZw=; b=T86assW40f1A26PxSD/Q/Teo2vG0PPjI2JxnfkdN0TEONy/0ah+WtRI9vZc6PBRnpe fQ0FxN9xPCXpCGdSgrTxXCYRpvrVz5C00jETPU3f/GMGoby+B1gtFMJxMHkseRwz34xk iosnCBIIzgwMWD1yYKfPVYovqidrnPpFbt5s3Yk5rM+MGSKpbigTcSvpLGkvMNM3dpfY 1ys1mGzuPg2HKPW7ZBrItxaGtLWEjUVvQ8zLpK9EY3n9SOfgoE7FNaOY7WF4QJ4cVZ5w X9H1edM8TP5oCVkQGaTHvI0dFTgTnkxZ1QgWjyw4X2rPT8Ovo8jmuHkIE0yvlmxUfuid RP/Q== X-Forwarded-Encrypted: i=1; AFNElJ9Wcxs4Uw/IhFoqdNS26F3652nwcNDV68XKsR26JboX75jVbvCbyFL51SRIFB2jLDvcqGnSFn/Q0+L2W60=@vger.kernel.org X-Gm-Message-State: AOJu0YwvNpLelKZfj9sZ0vH+Ls9I5XhF67eDTXl3xhffpj+Krsixb0vX ZOmOnEH/4mGkF34EHp7u76ZHVtwKC7+jlcuCuLKSNFgVbtw2p7RA9wWh X-Gm-Gg: Acq92OGzqfUxhWCik5M19fiN/IsehRndO5G7rM53F4hZ1QC2v8cUqtrGFfqAOXI/3J/ Q4nU8y1HFHCLkrGmV55cUnhdYTMxL6b/mThj6sKHRBFyfcj4TwARVgvJl1JPNDuB0OyPUYeC8XJ vzze30kjX7nRir6N5OAUryNOHmqaYzBvfT2NgDJhbK1tRNWITi+WwHtAXmkU09VosoNg0XWQCRI IvWNl1IHI7KWZuUCFoaVtXnWdnJTh3I5w8xS0u3Mm3fSEasIvAX4i0/IvHItwijbcXZvpZ45oAJ oFtp8HSaOAxZ4YeNhM9d7v8KIWAZDMLAB4OxjmauQKUjLFTriSjnRJ5pewLaZVj5Saa1b4navJW 7OC3NRDWBrhIxAD7H8JvDCXbHCFxSU7LtCzs1gvovyjh9qka/z/tGHoiflzAMKmTprC7J8SYZMl 0yQyxPYsKuP9O7aVFYmMg0TQhmFEHghv7pWjVA X-Received: by 2002:a05:6a00:aa08:b0:837:f79d:909 with SMTP id d2e1a72fcca58-83a5e13d6d5mr14036326b3a.39.1778252482867; Fri, 08 May 2026 08:01:22 -0700 (PDT) Received: from localhost.localdomain ([114.231.84.174]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83965945c1bsm13110064b3a.15.2026.05.08.08.01.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 08:01:22 -0700 (PDT) From: Vernon Yang To: akpm@linux-foundation.org, david@kernel.org, ljs@kernel.org, roman.gushchin@linux.dev, inwardvessel@gmail.com, shakeel.butt@linux.dev, ast@kernel.org, daniel@iogearbox.net, surenb@google.com Cc: tz2294@columbia.edu, baohua@kernel.org, lance.yang@linux.dev, dev.jain@arm.com, laoar.shao@gmail.com, gutierrez.asier@huawei-partners.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, bpf@vger.kernel.org, Vernon Yang Subject: [PATCH v2 2/4] bpf: add bpf_cgroup_{flush_stats,stall} function Date: Fri, 8 May 2026 23:00:53 +0800 Message-ID: <20260508150055.680136-3-vernon2gm@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260508150055.680136-1-vernon2gm@gmail.com> References: <20260508150055.680136-1-vernon2gm@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Vernon Yang Add bpf_cgroup_{flush_stats,stall} function to prepare for the subsequent mthp_ext ebpf program. no function changes. Signed-off-by: Vernon Yang --- include/linux/psi.h | 4 ++++ kernel/bpf/helpers.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/include/linux/psi.h b/include/linux/psi.h index 7b4fd8190810..243dcf97bea4 100644 --- a/include/linux/psi.h +++ b/include/linux/psi.h @@ -52,6 +52,10 @@ static inline void psi_memstall_enter(unsigned long *flags) {} static inline void psi_memstall_leave(unsigned long *flags) {} #ifdef CONFIG_CGROUPS +static inline struct psi_group *cgroup_psi(struct cgroup *cgrp) +{ + return NULL; +} static inline int psi_cgroup_alloc(struct cgroup *cgrp) { return 0; diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c index 2bb60200c266..1c353e0ff14f 100644 --- a/kernel/bpf/helpers.c +++ b/kernel/bpf/helpers.c @@ -29,6 +29,7 @@ #include #include #include +#include #include "../../lib/kstrtox.h" @@ -2881,6 +2882,37 @@ bpf_task_get_cgroup1(struct task_struct *task, int hierarchy_id) return NULL; return cgrp; } + +/** + * bpf_cgroup_stall - acquire the total stall time of cgroup + * @cgrp: cgroup struct + * @states: psi states + * + * Return the total stall time. + */ +__bpf_kfunc u64 bpf_cgroup_stall(struct cgroup *cgrp, enum psi_states states) +{ + struct psi_group *group = cgroup_psi(cgrp); + + if (unlikely(!group || (u32)states >= NR_PSI_STATES - 1)) + return (u64)-1; + + return div_u64(group->total[PSI_AVGS][states], NSEC_PER_MSEC); +} + +/** + * bpf_cgroup_flush_stats - Flush cgroup's statistics + * @cgrp: cgroup struct + */ +__bpf_kfunc void bpf_cgroup_flush_stats(struct cgroup *cgrp) +{ + struct psi_group *group = cgroup_psi(cgrp); + + if (unlikely(!group)) + return; + + psi_group_flush_stats(group); +} #endif /* CONFIG_CGROUPS */ /** @@ -4734,6 +4766,8 @@ BTF_ID_FLAGS(func, bpf_cgroup_ancestor, KF_ACQUIRE | KF_RCU | KF_RET_NULL) BTF_ID_FLAGS(func, bpf_cgroup_from_id, KF_ACQUIRE | KF_RET_NULL) BTF_ID_FLAGS(func, bpf_task_under_cgroup, KF_RCU) BTF_ID_FLAGS(func, bpf_task_get_cgroup1, KF_ACQUIRE | KF_RCU | KF_RET_NULL) +BTF_ID_FLAGS(func, bpf_cgroup_stall) +BTF_ID_FLAGS(func, bpf_cgroup_flush_stats, KF_SLEEPABLE) #endif BTF_ID_FLAGS(func, bpf_task_from_pid, KF_ACQUIRE | KF_RET_NULL) BTF_ID_FLAGS(func, bpf_task_from_vpid, KF_ACQUIRE | KF_RET_NULL) -- 2.53.0