From patchwork Wed Feb 5 19:30:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juntong Deng X-Patchwork-Id: 13961810 X-Patchwork-Delegate: bpf@iogearbox.net Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2081.outbound.protection.outlook.com [40.92.59.81]) (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 081451547F2; Wed, 5 Feb 2025 19:31:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.59.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738783904; cv=fail; b=VkMlzRpR6090XFsF12Ih/1TUqigKsvycQXD7ZXyCaDQ2XcEKB5jzdzwhwtSOFsG5WKIL3GCiztGn++MePBKeLyEVQguQc6mECXMsMJ/YCckglXgn91SdcOzxz4umJ3qyJuPMGAC33jTgHlVhU+pr89tKxg060ow/I0vGb0BnAO0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738783904; c=relaxed/simple; bh=xktCERVD5xDs4DnaIra1BMqHrMLfwVEyc+m63Zblc5M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=p8FGTY6wKDpaWtIqxd2Bj6RUek4gfA2vlUKs4O9SQLLLtv1PuAlycQ3D9ZX8eZifxb2GIP7DRLr8MmYrAesbuxeZgfiq+YehP63l4oRarGVxLqjmfIA7RC8d8lL125dBG0rZgGpJJBcoCidEkkHw0jBhdcjmZ6UbZUo93Z7DBRs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=Jdz/W6FP; arc=fail smtp.client-ip=40.92.59.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="Jdz/W6FP" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vYDeNkeRyQrf+I6Ct9hBEq3+wN5p9sOHwfRhvmSSBzFR8ia7lt47ZTcjLDMWKKgQtnH6f8dKOJ8D/PAhmBE5SzV5DCFfiM8ceQoMreXHvabGnoIttycH2cC4scz7V+TBrB+47J9Vc8a/K8hf1mrFYaRSHI0vEjq5iMO19O4dJ19HuNwyAC2nMbImNb6Y3eKVr5eQS5gomxZeQzO9Grhfkw24IgRbXroGRbii833YfDtwACVs91PC72c90oXeK2G21xE/U2CvbJVUsOFm3khnhdJnqWh6cEVn1EeLdb+d/NaAx4gyZxaRvXre4ojXcLHfpV/ycv2Cwj4NiLE9LLeh4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qrsSAPEZMK7IeTUEHHx8wwr+wt9kOHcl7NyA1AgY888=; b=GzTU7hYhRg2fbUVTSmyuUnp1oJdqn1K4QvZvYQLxc+y0Whe7iZzJff6rrzVHsEkOBNWXfHms9TBREMk+6bppK5goNlvGtWsl1z6RyAy1J1hjF4vBhnERNu0ayJPsT7hVUEXSqNJdkWil/rlnYWpH7igqrSZE6v/KB98M/YS2kRduqHVyvTURx9Zj7Uog/z4tzEJ6X5E5FTbRXQH3MeAcpJEPKJMb/1UydHbIs2AawBtOiprm9vjsRFm0xj1Qc9KPmazgDINKk/vIujZiYmIVHk1iGsf9tyQkt5N4DZ9RN3E9c/UdR0kJMYwVl0LwfYUd4Rl1RCmF8s8wtZ4M9toBDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qrsSAPEZMK7IeTUEHHx8wwr+wt9kOHcl7NyA1AgY888=; b=Jdz/W6FPWkV7w66aEM6apnI3H9AeirRBNPn6Ub5xIKNolhQ6CgcE9u1HJxTuGKUzWfkSWtQAvWZTi0UD90HOde4nBwp9d2PSaAPwdXWv16BdhIGbcePMBkVMij7zByU2WaXY4GWIAmVoOXrRvl8E9HTFGwmfrmzP58wcl6Y79RKaZhrB6LHRZkcbeNw6TdPSUOST3SfFfD6RsNhSWkeDm6JFWzSD7SnYMODCTZw5zKdvvHER2B1smV9mUI1pB/yziuunq2nMQa3DoGSNgDhIOR8hMCwEzH/8zM8S1IYYZ4GCu3QHRQBhxFIlkGpasnd6LtojW9NL41ssds2FuJhTbw== Received: from AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) by GV2PR03MB9619.eurprd03.prod.outlook.com (2603:10a6:150:dd::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.10; Wed, 5 Feb 2025 19:31:38 +0000 Received: from AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8]) by AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8%4]) with mapi id 15.20.8398.021; Wed, 5 Feb 2025 19:31:38 +0000 From: Juntong Deng To: ast@kernel.org, daniel@iogearbox.net, john.fastabend@gmail.com, andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, memxor@gmail.com, tj@kernel.org, void@manifault.com, arighi@nvidia.com, changwoo@igalia.com Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH bpf-next 1/8] bpf: Add struct_ops context information to struct bpf_prog_aux Date: Wed, 5 Feb 2025 19:30:13 +0000 Message-ID: X-Mailer: git-send-email 2.39.5 In-Reply-To: References: X-ClientProxiedBy: LO4P123CA0570.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:276::14) To AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) X-Microsoft-Original-Message-ID: <20250205193020.184792-1-juntong.deng@outlook.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR03MB5080:EE_|GV2PR03MB9619:EE_ X-MS-Office365-Filtering-Correlation-Id: 356cb3bf-1879-4dfa-55b5-08dd461bb52e X-Microsoft-Antispam: BCL:0;ARA:14566002|19110799003|15080799006|461199028|5072599009|8060799006|3412199025|440099028|41001999003; X-Microsoft-Antispam-Message-Info: 00OVFvTx2//U4040aI2WTJnceMEQgMds9RgqrDXtMGxGxOu/k7zFzTxGsl9wQ4KIC61p8SvHkwH5zj9A5Oy2/17Fupa3bdBE8rYYFayX0iFtcMPphGmSuNNcFPHBPezOFK66fo6M6SV32eMF1Nj/iZiIerZv425HQSAKYObkYXz35a4NOmt/BO3rjHu/3Q/tLyF+l/riEaGrdLrpGgkYdXMX5LbHN9ryL1y4aWsRAJY/3RZKyfqlM5TQLw5QVKtjHyz4eqHOsg6G7nlC2OYQypN8VOjpS5+1WXWGzKGwwDnSD7kR24oiZ6+nJ6L4v4xjrYu5B+jJQZnQI7pBSImtorndJo/EU1dzFYIfq+d8yNY7RwxO87Bgy4vj3sKEX5IWg2f7S+XxHGMspZwoWNKHs7w4w9qQPjxJ8ARB8NBRnGbI2LaA3PxSLbYIoSn9xraNn3JnErgWDbk48Tyi7O68oVq+1TbBFw5anRnry/Bc8u4Q+GWEMqaMczyOxuTP2IrFXhSpyeZdmElVRBrVz0MQbudIKFngg23sgslXlclIA7JNy8aLjGD0mjvk9oKki7uJmtFFrrr2HGVeJ5ENrug21bEZRbQVDFYS2NIfGyf1nWrPQM2smoELgJ8euzNkyqkPXnS2bRA3Q0xctvLzguLjNvF/oYaw0I8VCluMEYAm9tlRVlk/OaV2HIjYFxeTHrj8uwyEnJ2wpOEV/MTRmHXyEe7PAGHVNT0X++x3kKyw6RdeyBJrSwj20Wxe0WAYbbBQVZp1m1dzHIVvsxIbXO4RMPzNzkILfoG82J2Bgf3+9plOZbvq1cDK3l1JfjK53qUsjNubRnuGAUJglQbBJZoY2wXlXuVWv3DKoFWQ/0AiC4v+LOd1PRTRRFv2Ocmfii44wv5vfTeAe3Sgx9m1wlRBKbEFqaw8rSfbtMwv3rXNY5aE9r38Uz+IhWaSn8dMJVDuH32GBr44qwiVytCO9l+aiTn5hRDs2YZxK2YbQdkUlTAXpbXg+TGqdfWA+oOb4sI1m9mh6n408GMs6TF2Z8sKCPKAA8X2cxiW+Fcl1/d5acbbAG8p8NXU6mOf3QWaZ826RgR15kugTPsIF0vQTChXqQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YthAcm/xL+zObKI/WppHhhnA2W0gSfPP/JXqtJ7E/lJNAYkJqiJNJS4ufz/ClQsFhjkAS97GVesB1f7GRWfnt2akK2lKD0dNtoWXBZ9G8aiSynyAqzaJpNK8sdgcuhRKSSofVi196//3tVkPIVdN8/+zdtfLvvKOBspTmxhBofurT3ohinq2cdMuEjY5d/fPRnOsie7ehZI1q1dT53A98EFUxNuXnB+CqNOg1DxUMffQVyab9n4rj6yC3DMIuIOgNcXJ56WTS/mN/rH+vosRgVItjqlR6Ppm7e1JwdWpoTLxi6EBsy8yCImCw3cvyKINuvRdlh9her2GR1zpSEh23E+1O2FydcuNEQQ/h+J9hnwN4Kx813k7TOxmZQV27rBiVjT344dAYv6TNrAkypzEl7D8+kVa69+G3kYUpdmz7e+pvqLw422YQyLCW2KmFiXTMRfOFUei8CyKCKLCl2+LLFFx1zpps81Ds8Y1q3OAjdQJUznyDE08sAPa+bHIN+qMiuTjTq1xlMx3jbmuqXd7GOGUeE8g6bA7qwcUe9cRHA1+QkO55/c16X6uDh+e0m3hfqIb2CDOHLMn/R9+Ieoq6ZCn/GdAdNnvvrxho6/DswpMnm7MRuF2dX/JrjsCU/GMV3lbXlGpFyDFMzhwY3sgK6tK/Je6Q5F4Tfpwm/F79TboRWi4MaJrAilMa+91edkr5nYS24K1grHp4A00qME9wCv3DlDr5uIz1qMISgQSNCkOD/UX5EZKHELdjCM+H4TpHyQOT4Rbs6Wqn+tLeis+z/sca42Z79/78BLJS/YC0vzoiU2ndZnxo+Gd7EmPaoan+Tlt1C3V2xveYmnoWCF47ujGLOKdHrgTkAyWMvGqH2T40auHfH0bVfPDDubgSx9v0tgmg/G+hFXLnVWejkJbEGue7Q9zvEb+n/8hqk9gp10wPgJ2h7iPexxCCHsOOrHuAJjttvgZHZJpmO2d+g/yc/bYt+3LjHtzMnNBLgLyeT2dKRH96JL1ahdgpL7ohFizJLtipvI0FInJV6XTlWJqjapB98TwHl44nusCYUvModS+9gu12YED1f6+58yDck5oxcllpGKDC4pkOy37GsWGexPbZjfwV8rR0r1nr7Lx3ys8SBvWsh0IKBLGPc2xGFQue1cppBcGrSBg7f7mJSu6aA2JLZIznpMd2k0sAeDB9o8zKXK1tp7MwNODEOaxtfpTkKipsYh+Z9gNbP7lQBBc24h04EMcfJfiAcbsRj48hVoyNblIJN4cOI8If3SpxyOq X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 356cb3bf-1879-4dfa-55b5-08dd461bb52e X-MS-Exchange-CrossTenant-AuthSource: AM6PR03MB5080.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2025 19:31:37.9190 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR03MB9619 X-Patchwork-Delegate: bpf@iogearbox.net X-Patchwork-State: RFC This patch adds struct_ops context information to struct bpf_prog_aux. This context information will be used in the kfunc filter. Currently the added context information includes struct_ops member offset and a pointer to struct bpf_struct_ops. Signed-off-by: Juntong Deng --- include/linux/bpf.h | 2 ++ kernel/bpf/verifier.c | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/linux/bpf.h b/include/linux/bpf.h index f3f50e29d639..e06348a59dcf 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -1503,6 +1503,7 @@ struct bpf_prog_aux { u32 real_func_cnt; /* includes hidden progs, only used for JIT and freeing progs */ u32 func_idx; /* 0 for non-func prog, the index in func array for func prog */ u32 attach_btf_id; /* in-kernel BTF type id to attach to */ + u32 attach_st_ops_member_off; u32 ctx_arg_info_size; u32 max_rdonly_access; u32 max_rdwr_access; @@ -1547,6 +1548,7 @@ struct bpf_prog_aux { #endif struct bpf_ksym ksym; const struct bpf_prog_ops *ops; + const struct bpf_struct_ops *st_ops; struct bpf_map **used_maps; struct mutex used_maps_mutex; /* mutex for used_maps and used_map_cnt */ struct btf_mod_pair *used_btfs; diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 9971c03adfd5..2dee3fd190a4 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -22384,7 +22384,7 @@ static int check_struct_ops_btf_id(struct bpf_verifier_env *env) const struct bpf_struct_ops *st_ops; const struct btf_member *member; struct bpf_prog *prog = env->prog; - u32 btf_id, member_idx; + u32 btf_id, member_idx, member_off; struct btf *btf; const char *mname; int err; @@ -22435,7 +22435,8 @@ static int check_struct_ops_btf_id(struct bpf_verifier_env *env) return -EINVAL; } - err = bpf_struct_ops_supported(st_ops, __btf_member_bit_offset(t, member) / 8); + member_off = __btf_member_bit_offset(t, member) / 8; + err = bpf_struct_ops_supported(st_ops, member_off); if (err) { verbose(env, "attach to unsupported member %s of struct %s\n", mname, st_ops->name); @@ -22463,6 +22464,9 @@ static int check_struct_ops_btf_id(struct bpf_verifier_env *env) prog->aux->ctx_arg_info_size = st_ops_desc->arg_info[member_idx].cnt; + prog->aux->st_ops = st_ops; + prog->aux->attach_st_ops_member_off = member_off; + prog->aux->attach_func_proto = func_proto; prog->aux->attach_func_name = mname; env->ops = st_ops->verifier_ops; From patchwork Wed Feb 5 19:30:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juntong Deng X-Patchwork-Id: 13961811 X-Patchwork-Delegate: bpf@iogearbox.net Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2101.outbound.protection.outlook.com [40.92.58.101]) (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 845431FECCE; Wed, 5 Feb 2025 19:32:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.58.101 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738783948; cv=fail; b=eKXK8U4KMcfnZS5N9Gi/GfFNXmm5IOlaFYtJU5wQBfEvzEDn4S6adQcAllFpqoSkMxA/US6+jibmOSi2gG2GAe78LZ4o+uwPPFHBdqvnkppvKZ6joo7e4QQu/KU2TtQd64kp3WW93jD5seNQzIy5Rg3luLVAk8LOLM+IdjApErU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738783948; c=relaxed/simple; bh=ZCw238UCCLw0WFQMWNcAwrh+jObNEhPgsJIBI6L7o6o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=i2ZTEuVhO3REk6e3KiawHVUg4i752WMHj1s2pp+F6yAxVllp17OHcuLOgoDmcPJs2MMYIhwXP2uROB0klbjHFdFfcdULDEuRnrnX4Mlgf/y8ZShqfuZci7KsX3IUs6GVWUVsHhIxbdVrxPGW0aaoxkQUpd0WQokhRJFOhZpj2ps= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=IQoKUPAC; arc=fail smtp.client-ip=40.92.58.101 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="IQoKUPAC" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ptqxn8gbHfTPTr+0q4m7BS+imWv0hJsHCX5D4pWpsgdllnywC7SVHvds4wwZTZhqZMhsxkXhOXqqAqUPhMy7QnmJq89P9llmrzjEFAggUTYgo3l1Frp/ZvGAgjeEOmyCt7lkRzJ5PfffnXOQG3jkb1g01KH+W39XGUYoauPKXZLW5PrwuJWZmthLFKRgEDz0CiGv7z0PLvY6N6LEQDsL5hHeor1PXDMIJIwW8W9FE/XCfumKzo4Tn7NOrjGCE+FeieIanW1/GTFuAeSgfjvuzQCbzkQIh5AJu7e0NJXTzkbG1eBAhEQLfbuo6na1WEVt0MlhTNPBbb56NMRsbmUjOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=OhDPImV88+pzGKdVpUcImK8ykp0noMIIKR4vq09P7Pg=; b=VPChWSTZBzZwF79TQ50GHbuzGIpPWXyIZZ+WO9scsE/5/Q6kMEu6ppMnFgw4dVEuQbcMNGEyEVNs/Cac1HSVcqr3+fGVbEgBHKZYnSWnU94W/axfDiJLTTNYfEDXD6h/iunn2XzDHD7T3mJW5NHXFj2zOj5W/cTHJCpY6xRG4pC6EIzcqZA/xW6WVvevgEygrEh8lOgt5/Ez/wKsaq24yNuE2OAAZW3rjqL9pPA2Dr3B9m1jj14SRil9OVYsSW6CSsdeCTEvWn9LLQL02ab2TdmSSwDdfutWJDaOGXuGM7U5FZt2nsNiW2nrZkOE34Nl3OTeRPimeSgFOS64+thWTw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OhDPImV88+pzGKdVpUcImK8ykp0noMIIKR4vq09P7Pg=; b=IQoKUPACz0iS/zhilz5a4Eq/1r73z6n03AShqE7vus3pIEqig1wbwRJjddYdiVCs45DrA/IK2EUtKlP5wpvGa3+9tl1XDtCoaeGypJrGNToevQCtp1XIqUFjAhm8vIRMgR7sqQYpn8hfQmzN9qqsCA8F6M6e65vUIIfuk9TK0UpZAzNzSdTTMyYKituMsC2pMasqnwZtM7HhhgLzpqLy0YcGTn8GvXGvuYPX2k3CvTNOl2k9deh/cAnpbR/wP+Svl0BVeK5AreOQEikFKV7QWN4K8xRO6nPbl4SOJK4pdvGzub3FnLYGRUJre7FiFUD5HTvptZnOvn1aTQ1UxbMGxg== Received: from AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) by GV2PR03MB9619.eurprd03.prod.outlook.com (2603:10a6:150:dd::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.10; Wed, 5 Feb 2025 19:32:23 +0000 Received: from AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8]) by AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8%4]) with mapi id 15.20.8398.021; Wed, 5 Feb 2025 19:32:23 +0000 From: Juntong Deng To: ast@kernel.org, daniel@iogearbox.net, john.fastabend@gmail.com, andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, memxor@gmail.com, tj@kernel.org, void@manifault.com, arighi@nvidia.com, changwoo@igalia.com Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH bpf-next 2/8] sched_ext: Add filter for scx_kfunc_ids_select_cpu Date: Wed, 5 Feb 2025 19:30:14 +0000 Message-ID: X-Mailer: git-send-email 2.39.5 In-Reply-To: References: X-ClientProxiedBy: LO4P123CA0570.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:276::14) To AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) X-Microsoft-Original-Message-ID: <20250205193020.184792-2-juntong.deng@outlook.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR03MB5080:EE_|GV2PR03MB9619:EE_ X-MS-Office365-Filtering-Correlation-Id: 1b348d05-3dc4-4ca3-6c39-08dd461bd05b X-Microsoft-Antispam: BCL:0;ARA:14566002|19110799003|15080799006|461199028|5072599009|8060799006|3412199025|440099028|41001999003; X-Microsoft-Antispam-Message-Info: dpk2Yaie4e9m9cClaAKNgtXuEUKM4NCkAYd6X8h+QMCL81r7C+0wb2RYv/npWR7plfEjV8QHxtNj9HhU88aFeoopvMT9wBqfuxjTvBbd3Jfdgk1U0MjCR4VZFLWNfd2yZYAYZUU7OGsjv/mWGYehEDXgaA5qe+uWcEMi5aJQ9I/NdM383rOUcLgRMy6U0fOKkXOZ7PjA+yv7uvTR+5TTMlmOoklNmpxYTmDGNy4h6ye9lC70mI2C53IA8wC8D/kYCdxYEbF4Hbm583tZJIP0if7oOC9uanqBt3sGOy0PgPUyeC2f1tmfl8b9d/KfYBV0Ndpi701xau0gDEmi0WnvDNDqvXpHIYS3kkSleTddEk0P/FH5Z4QOmJ0BMuUZiDZuSP6vP30orAe4o2ImA3HaXtP99WglbslE0QJAMvKp3BfTelKmlVfT+oVOR38D23mhwpTKRT/BW6tpWVwEBba96uedgF9HXcA5pHWjmcMQO85u8zp1IN6WVliUgEd+5M6yIEoOaePRPlV2LyYSsG5+x4algAEXgQ1AXEjdgro4PFZPbR3LisoKfWWunsiJypcShUhJGMnoiA5gsBy6VHSPUjuN7wymDFT2Z7E+L1JFu3GU4VKXhKVeunleEqAEoboPKhubxTY68NTE495/3wQv2wqClOPnRti+bl6Aftp2Zpq7gkLqeRnyqiM1nz7ChDat4vGAO3taOqmqLjnpEFs658KeF6PsEZ4gFJz5mRiCP8FOrLOeuZVkFuppuqoMiHRz5b0AGTpZNYRozMF8hnb2sOthV35ILXGaFSw5J0uPK0jQm90RGWn73EyZ+KqpYubQti+ax0Vyc+AuXNidm4ZXv/y5aiOEvPiPrZS3caFh3BtosjXxHOMft1OX+wijIXVbt4z19zXQZwK9Ss3hEnwrP8T+NRKVj7YCZlJ7jJfDRR5F2IOcKUp/QLSR2oeuaifha/lHgSRHPDQflNbXvwtrcXgc9s+DZmFFASB6lT8P5yM3gvFciPijdoi+wa2cf1Vwa2koNpwmv4ST4OQhNAsKhQ4rVEm5NdWuMfj/SxWuDums/GBxZiCVFm2uDDbn3vFw3bUasTnEZj0wXypTqZMrCw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JrmXBiHufecFJZbD7+whIPfdlLlGrkSUZWJw0FputzCJBPFxrES2wkawOgbm8lqE3L+n8pfdhEF0yUeJm5LuY3Xuu8iLQreeDCZUtbCdvB2l8xVWKsZ9EVYkvbDExUn/GrmH7p4fIQADLKglYTaOXoAQX/yJaktePraq83fLLDAnHye3pG8UAy7kKv7JY9csc3YomesbPi0BHOUf1iGuMTbr64KzHWCcxYQDkJX6gnB2Gzj1ISCNyknrxsOBvN6OMyRpYiyu9vYxGLjSwlt6zIN3BR0aR2Hy6qTiJFJSaNbgb5z/kY8PL7RgI8RAeW3+CeqnWAbLUFfM+GQEnzbtEN8Jfgh0/oH9bXVKGvlkvLDIfZ/nWdDa9HvFiAc4NnUt2K7V3npLNKB8/UWC9xFmlYKOwr2pnP/GnIu2v7gXCgRCry6ED0RLD0DMLm0knPQwmLgag2wODl9/CgV6r+Km6gfB9ua4XB1H6PYlszNtjwvmPC27nt3UarUQN+6+cBMWroMuGUiGJ8hHTMMVQk+CLsgu6QD5rqjCDQeI8mFH4P/nenaTjGbGIbMu0miDPIxntt8OpW2CEzbAVHI9lh399vx6XX5K49aeYKhXBelRECIb7axxvJAwKpVFoXxSzimAODQbs3/91CH9Jqnh/PC0lz4l0cSbz5jCEpnwvFfw96M8t/OmYdnXEgb3NeT+siouLYY3k1Pq6JpqNepZQbppRe+k+TNsbRbd2IMv26JHozD0p0zn4/XqGk1b0D72SaOsyOle4PyZFPpnO47f57k32vYyHCkjyrNynCTmzElPuYAWlif57NlQAqQule+cNg3CD/DbjDNBnPYF2HFbkAdqfVXJ24D2cfCKuDEWTClr3H4vRs42a/yWID9v713ekaffMehzf5JtODBne1jCl1NSFNESMsnEXfG5cevjm077u9yUKfdKUnNS0lzlF2tQ1yBWKavJevp4Qy04Cbq6rt3+1SRsUpQO0ZXPRA9hAEorgPpVJOOoED4SyYrq84qHbXV/ji+MhxbGpypYEvivgd9qIl2BzqEuUHYD132uSHOljbEGId2cxmlDSfrGDATzq+VIwDe+B/ALbhwRyEVLaJVVkucexppJ31dos4n/gY4SFY2wYpbRur0oZqSwAwHGNIA3k2DczTBi8yAXNVV5WSKMmbDJFrYYmt84qwFsmDeMo4j9K4uxgVE6CF2BsjlE7/ELqmvw1bSEgRNnQ1Rx7HQI7M8kBIMSsQnseNHisA96LkMgb7sWPAU3dLzGlDEjV6qi X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1b348d05-3dc4-4ca3-6c39-08dd461bd05b X-MS-Exchange-CrossTenant-AuthSource: AM6PR03MB5080.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2025 19:32:23.2450 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR03MB9619 X-Patchwork-Delegate: bpf@iogearbox.net X-Patchwork-State: RFC This patch adds filter for scx_kfunc_ids_select_cpu. The kfuncs in the scx_kfunc_ids_select_cpu set can be used in select_cpu and other rq-locked operations. Signed-off-by: Juntong Deng --- kernel/sched/ext.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index 8857c0709bdd..c92949aa23f6 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -6401,9 +6401,51 @@ BTF_KFUNCS_START(scx_kfunc_ids_select_cpu) BTF_ID_FLAGS(func, scx_bpf_select_cpu_dfl, KF_RCU) BTF_KFUNCS_END(scx_kfunc_ids_select_cpu) +static int scx_kfunc_ids_other_rqlocked_filter(const struct bpf_prog *prog, u32 kfunc_id) +{ + u32 moff = prog->aux->attach_st_ops_member_off; + + if (moff == offsetof(struct sched_ext_ops, runnable) || + moff == offsetof(struct sched_ext_ops, dequeue) || + moff == offsetof(struct sched_ext_ops, stopping) || + moff == offsetof(struct sched_ext_ops, quiescent) || + moff == offsetof(struct sched_ext_ops, yield) || + moff == offsetof(struct sched_ext_ops, cpu_acquire) || + moff == offsetof(struct sched_ext_ops, running) || + moff == offsetof(struct sched_ext_ops, core_sched_before) || + moff == offsetof(struct sched_ext_ops, set_cpumask) || + moff == offsetof(struct sched_ext_ops, update_idle) || + moff == offsetof(struct sched_ext_ops, tick) || + moff == offsetof(struct sched_ext_ops, enable) || + moff == offsetof(struct sched_ext_ops, set_weight) || + moff == offsetof(struct sched_ext_ops, disable) || + moff == offsetof(struct sched_ext_ops, exit_task) || + moff == offsetof(struct sched_ext_ops, dump_task) || + moff == offsetof(struct sched_ext_ops, dump_cpu)) + return 0; + + return -EACCES; +} + +static int scx_kfunc_ids_select_cpu_filter(const struct bpf_prog *prog, u32 kfunc_id) +{ + u32 moff; + + if (!btf_id_set8_contains(&scx_kfunc_ids_select_cpu, kfunc_id) || + prog->aux->st_ops != &bpf_sched_ext_ops) + return 0; + + moff = prog->aux->attach_st_ops_member_off; + if (moff == offsetof(struct sched_ext_ops, select_cpu)) + return 0; + + return scx_kfunc_ids_other_rqlocked_filter(prog, kfunc_id); +} + static const struct btf_kfunc_id_set scx_kfunc_set_select_cpu = { .owner = THIS_MODULE, .set = &scx_kfunc_ids_select_cpu, + .filter = scx_kfunc_ids_select_cpu_filter, }; static bool scx_dsq_insert_preamble(struct task_struct *p, u64 enq_flags) From patchwork Wed Feb 5 19:30:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juntong Deng X-Patchwork-Id: 13961812 X-Patchwork-Delegate: bpf@iogearbox.net Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02olkn2011.outbound.protection.outlook.com [40.92.49.11]) (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 24CB4204589; Wed, 5 Feb 2025 19:33:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.49.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738784006; cv=fail; b=G9o/VdM5wVbKVcVLbsgObRvxmimQ7DJLnyMJrBfRebS9+WjhzvpfjqiH018IFVK1VCRFQLe8Y4rxbyF3ACcwU4EaNHS+7A3UIfetxzpf8KC1t2ZsDl6oUDPHx6PJ0RtETymuCQCI86AMiXiE+NscZKvO5ay4nSrAtGAieip7BhM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738784006; c=relaxed/simple; bh=pV0bF+7v/QJHS+cQm1OZ9ubCa8eMx3av85ih8woHmbE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=HIjIOzrQqnCesfa9bJNCBOXbb6rx9+U++NqnRHufHMx66H8G9CEI4E9GlmZZIb/z8jLtFgTcrqqOKcPvLyWHJ6d/p+XCM35fAEA0cnBY/p3qn1L/d1yNr7I2w1BEo21pzWE6YivUtjIsL/3KbYGtkaHEdRubmz6h2mE2BaHo0p8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=rRzxVRcE; arc=fail smtp.client-ip=40.92.49.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="rRzxVRcE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Jetf9suCXy3fTYoGi4etYRSAUK8te2s2LcOQu1SnndOrtK+vZG8CJVHodPGeJs6setTMF1eqfFlpGCrrCtKwuOc8VncIYXyzRY+kmZ6/yxQ2A++7BlnxtcM7XKfipXFgKM8drFNxKVLC437FfPVByy6hzqQtcfqvzVmAGPEicEZAJBzBPtq5fxY75BaS5cKP0/T/5kDPrYhoJj/nA8K7xplm13lNsM52EGnUtXnelI/QrJN6zFRZsmOEO8l4jpCPeTOSrurGM9iDFtq6lss2uDD6NgLhB09bAp8D10e5BidvU90Fhv4dYRyM7AOTHVWrN2Bir8l7QtFhpumRoMamUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WqsG3ZdvKcatTTaWkqsiLB//W06/kprRGfcdGIv6J4U=; b=xhSSWdiyFlmR4fGXDWGLN7bjdCjtq7LJCRWCMG9rwrbmUrTGVTgHyfTWL6pfWh/VcAveY30CNEV30cCNJYFnsNU2uReX9fJejrvVX8kTbTrnmlxOuwUk5zGYkuo+rHTX1D/+DRUREYaP1iYgPp/hwdsDZtxpBOYI+U0KFKr+MTnnpauIoJc0lz7RQixunkrHcYxsvEnVCuKJN2EiwDcoeuCP3irLXGxHl+lw3FRwrDtMonim7BG1advOghStBgtKge2uYHKwZI+QZWk4Gs5gsX8qGiiAVT06r5OzEOcIU2kq6dA1tePum0qMULG4NcwZf3VtnTBj+3kZLXIfunb3Mg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WqsG3ZdvKcatTTaWkqsiLB//W06/kprRGfcdGIv6J4U=; b=rRzxVRcEymRy0fE/jg4VGy+XDm4kz6/PansbhBYDJHeWDq34kC63klU06Qyxt0jJSbIxBpMexehriJgPidxzLid5kfcIYUepUzvPkoa8ZpPazyCxM2ZwIYwBHWOme9F0o0IYZgopZjbB8nYxB19xhf/fLXv+SaTGO63H5GB47vBMX5uBDNGIJigAa1ldsU+Y2n+Rp2puLyn0UXwyfWvRMWHkYB3mY6oN4bGhaJsSkpzfRWTba43D3XC6mxgFpnLaQ5AaVlfHjP/eCcx+u7UNlKY7Y2hnE/NXMprgtyjqVjVK/1nCbbEd2b/wBamtE7qRXO1ghEU22WbC9Bnmft6Z/Q== Received: from AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) by DU0PR03MB9077.eurprd03.prod.outlook.com (2603:10a6:10:464::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.26; Wed, 5 Feb 2025 19:33:21 +0000 Received: from AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8]) by AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8%4]) with mapi id 15.20.8398.021; Wed, 5 Feb 2025 19:33:21 +0000 From: Juntong Deng To: ast@kernel.org, daniel@iogearbox.net, john.fastabend@gmail.com, andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, memxor@gmail.com, tj@kernel.org, void@manifault.com, arighi@nvidia.com, changwoo@igalia.com Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH bpf-next 3/8] sched_ext: Add filter for scx_kfunc_ids_enqueue_dispatch Date: Wed, 5 Feb 2025 19:30:15 +0000 Message-ID: X-Mailer: git-send-email 2.39.5 In-Reply-To: References: X-ClientProxiedBy: LO4P123CA0570.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:276::14) To AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) X-Microsoft-Original-Message-ID: <20250205193020.184792-3-juntong.deng@outlook.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR03MB5080:EE_|DU0PR03MB9077:EE_ X-MS-Office365-Filtering-Correlation-Id: a479b2b9-07c5-4ee6-a102-08dd461bf334 X-Microsoft-Antispam: BCL:0;ARA:14566002|461199028|15080799006|8060799006|19110799003|5072599009|440099028|3412199025|41001999003; X-Microsoft-Antispam-Message-Info: U+Gjssou25Uj2iQ4wnNB5pEYxfeS+pxJA3McXAB/XPrK/LiPAfbqrMmre0c4Fv6Dl7l2o5yDS49vjM8OTkbQdEwd3gmCF/0jVYLFS4sHAbFYrcM8AP8eIcWiGj2hmwmhtSTfIHsXK6If9GiPj5qGb8EKMzN+rXvFWpX24tVUa5zSIHTa0peqA28iLuh2VlhvVphdN2ig8+KLQR3eGbIN5CFuP5zBEiRaUxJ8y59drjqdrOd8I/ec7KItpJn5GACjp7ojba4dOcvpaVUzlh7SDm8Zz8+6CtkHieEFtdvUngsXz3kFGqXy3hhSFzGK7Iyhd7GLUTUHFl6fiebdunE4LuH61140uRjirD/UlgukDjtrIyiFgN8Kj5Vtlw13cNSYLoO3QcblTicfkM38okLHwAEM15yUY5EiVXRgWky9fJLhjfTpxXwNAWQ5Lrgg3y09Y7Ac9nUZMtI9N/qrBczJNShU/9D+gNYIOwkfFZYGxhi+J3iYu8pV3nQBViPp2YeE9IQ0WZUrgRA++ihu/swec73yQ9DgxWMM/6Jm3ImlI99ijuZS71kZZxBRSO4lLDZqxWmIPj3vM6BafqCgRp44471V/wZRdqhwvjsrXgr0fJzPpjrULZdqbamvba/vQy1kHVmcZuMVjEjDD7UgzS+VJwLYmPuKq2lY08wKu+fxh55p07k0hvS7V5GuPTS1ZYEt9vydlf0KnOeLbBeGzs4vx8NTQbonfdzYIzSs8TYVVYPUjj94NFIjwekdi46qCwP4/L+0gD+um13Bru5cpJX0ji0sq+OJaIDPwyu3dsTLS8QymRQQwNiJCDr6DF1u3L5+GwxGaywHK3Cw+ltsMI8Oe6aI2ZDhe5Ur2mRw3KAUMumYctnfV4FeCMfc+MDGxnFLURZMuEaYs2rtHIkUcUWQkNN/ydhVgBltNnR/QWrJz1oiU5wraIywh7lvP+QxPl+DdRA3aIpLMxS4NYfLk/tv3cXqJwwA674Mx5XaIJD9T/83q7Dz1OW0xeHsc+tVBTx1LcjhyTNLI5hnlL8F/5RG55sbg0NaLsMNgl0z47uFDA1el2BWa7NyXQUvpV5zdACeU3M9tpixpcvukJyBFJhN9A== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: SEIVkl8UKwwx4ji0z+5Fwk1tn9T9NbGMJioZBbdBm8o2SelYksEaj7Bt/dT+v7dlzzl0G5mNU0OF2pbLS/zHeNaMob48327QqMUDFx1YOMNIvRw/3G2X0KfwW2JEyQjNF45r6XdUydKm6MUngdkJ9e+vL1Mn/CFLO/3IG08mffmJbc1v+ENoajiSemItTANlznPR6PS9OEP43Qo/P115helwBtwMyglbfgtFKZKvBx/XID2+9z4AmCwzOx1OVPj4WFPeKOLXwUnguTg6CaO8wC5K1MU5uAMWmYDFStjY3LpoRNnkrpA41ksHoFJW0XJSAMZU+x697aBzmPF4v7yFfE/4atfto/QDKmqJGqz3xtB+uYpoEW1GOpyNJuYuOD7a5ORs87vs2ZtDxUQc93A2pOArRRe+IUM39LKYSwsYoybxHzX+TeZ5YS0bTRNplKxJLK/LceODN4nXsD576Z9C0ix0OB0dWyblX3ElLyG7wm3PN+TtJ5nya77aSpbqr2z1ZjD3hdKsbuUZzpVVudYG7eG2ensE5KO+cQDpmIrz8vfIP3x3OpknW+NXjKSwHwLdsy2ivv8JGDsC32e1dvtdtib2ddT4/HwCzm0OWMFpEhm6xDFdRBUO/iiyLb5AvIwprxqFzJWbt/XBKQHBlGJ1uUrsNpv0BLhV/yae9a0FKM7RiuZFrf6IKg/fJlz682zMzArBP+QbFTlagXDUgeMZymwaUexKUQ9obK0onoaiqahUnueoJo5OEfG45IzXh8bxz/SymrNO8E3p/PH665ZdX3VQQEedNux0xbFPWsoi9w1dP+EeJKZ3ZMCaw++ORvRTxWzoPJuUp9Mlo3XPicLbCfW2nNXM+5ZkvznhV5aRKfomIx3u14WvLcsIxI6MxVzwkk0gMT5YhWXBfBBC3HXvA83JXRwWFgiOeOA8964dp6FZmEx16vUvZF0kOwb93mjELTeSd6dKliHJafBQ53E06k7ILoYd/XSZARSdMzNhJKSKEJekUFtcDXolCy/jjrcnJbT8DK39sz9mBLgDxOSpeosYtgBOdRCNIPVDJfDQxUzHL3wIvTntWQYg+VxISC1MgcCN1hTAwsFiF8WxXNrkH2FKT3x0JkboIoJLfmzVFok3H25U2SebxSV07LusKQ6puj8n3r7ANgc7luA7JIhetGb58LZL9EpViGZD5tD6/U1iMyp4lYP/dVdiAfOGSZmf/RV+8AcApKBYzcmxdYpOBSZV08n2voDioUw5u4sODHzrjbIWAul/TZBkwmPzxf80 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a479b2b9-07c5-4ee6-a102-08dd461bf334 X-MS-Exchange-CrossTenant-AuthSource: AM6PR03MB5080.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2025 19:33:21.7486 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR03MB9077 X-Patchwork-Delegate: bpf@iogearbox.net X-Patchwork-State: RFC This patch adds filter for scx_kfunc_ids_enqueue_dispatch. The kfuncs in the scx_kfunc_ids_enqueue_dispatch set can be used in enqueue, select_cpu, dispatch and other rq-locked operations. Signed-off-by: Juntong Deng --- kernel/sched/ext.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index c92949aa23f6..d782ee618d54 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -6605,9 +6605,27 @@ BTF_ID_FLAGS(func, scx_bpf_dispatch, KF_RCU) BTF_ID_FLAGS(func, scx_bpf_dispatch_vtime, KF_RCU) BTF_KFUNCS_END(scx_kfunc_ids_enqueue_dispatch) +static int scx_kfunc_ids_enqueue_dispatch_filter(const struct bpf_prog *prog, u32 kfunc_id) +{ + u32 moff; + + if (!btf_id_set8_contains(&scx_kfunc_ids_enqueue_dispatch, kfunc_id) || + prog->aux->st_ops != &bpf_sched_ext_ops) + return 0; + + moff = prog->aux->attach_st_ops_member_off; + if (moff == offsetof(struct sched_ext_ops, enqueue) || + moff == offsetof(struct sched_ext_ops, select_cpu) || + moff == offsetof(struct sched_ext_ops, dispatch)) + return 0; + + return scx_kfunc_ids_other_rqlocked_filter(prog, kfunc_id); +} + static const struct btf_kfunc_id_set scx_kfunc_set_enqueue_dispatch = { .owner = THIS_MODULE, .set = &scx_kfunc_ids_enqueue_dispatch, + .filter = scx_kfunc_ids_enqueue_dispatch_filter, }; static bool scx_dsq_move(struct bpf_iter_scx_dsq_kern *kit, From patchwork Wed Feb 5 19:30:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juntong Deng X-Patchwork-Id: 13961813 X-Patchwork-Delegate: bpf@iogearbox.net Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02olkn2059.outbound.protection.outlook.com [40.92.48.59]) (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 DB348201278; Wed, 5 Feb 2025 19:34:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.48.59 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738784048; cv=fail; b=e/pwkpaDCqFmwUXNwhLTBoG7ePMTp2seC5bLAlOU6W5ueVOqFeOPZMYJJN5WHOGga+lxuIQk44ktJz2+kSX5S/tgd8/AqtypPrig1Eneuewttzc1gxOhDVRqe1J8xKgK5rpm4xqjqEgtm0ury9mH+NaFa+ksETYK1sbty4WcCRE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738784048; c=relaxed/simple; bh=iF/Sj2xmE/lkkU7TNtMtOXxE37PcwLkFvVAAoL70Sqg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=MGQQmqp6wptr8/HGFYrv4Q+PBaa99i6sOqwow+duoVmPkqFkmVboKyTsT4dzrQ0h0lCHYPSvRU6LeWP+TiAZqtu6pOCj0GduN4Mph94WYrfGEe9sSYNzT85gPuUxtMQivvfjnPCqyPbujJhrFz+Tfofwe4yavun/+eaYPih9qAc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=gJTrWsfZ; arc=fail smtp.client-ip=40.92.48.59 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="gJTrWsfZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gmy6eJNzUk33BpB0sKz+VUeTtiHo/JGHo3zvHDsLAsMIpZnoWSXvkQvNs7wdCsXt8SbVJJmbhq/Wcn40D+ZrDwxdd2MkZiJ4dv9IfBjLKpf4I8TR/1wBZO5+heQKYUH2zurVK6o6ZKEvvqzxdVr5Bf5OPSr9HZEjp/dFpYBsLDHPMJT1JSNW0WHPI6MKjiFt0HLdelDI7ziJC8amvydIF5eHzjDMf1ZZRtnfatsrYxuVKnvSHEHpPHI3xqn6Yc3GHFoEQrg7BzgRmbPT+CSvi9aRt1Ta01hGZ6u/n/+fw+s4JOI7X2+GRn+nhc2oVIRbQxr7F7AwIgz8OeauT1peyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=H+WTB3O48p96U5to3kKDjXTN2klXt1eb56dzL2GARNQ=; b=bSAFnImpinlgDQ3xdTy2+IT4hDBT5CFNcBKWdrSDyzxbS4uA3jbAiIT3G9XdyWZ+C4NVZv8lsMrKJvBHpKp4Va/dYSX2BRNo+Z0dVacsLvPBewEhwi8rthxmyxGAQqgIJz6ZeR2wPB6Xmnf6P+bq62H0BN/A0HrGxdq6jx9BPU77iXI9Ph84mLByUCyeJ49Uw+YZ+V9vSTAEgqBcC+w7X4dAKwmjoWQpDWjIbGfgZWhX198sr/YoGLqYw/3fsYELTVfBMdmjOtrsd0Iy3JRMmEOLhRO6FvslMb+cfZimXWRQiwqUk/MyDXf7FRPeK1zmZFdBYa8m+slag2yASKIMEg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H+WTB3O48p96U5to3kKDjXTN2klXt1eb56dzL2GARNQ=; b=gJTrWsfZZoMycBFrKlwVJ7GSAc7feHr6OUb0dgRUbPj9dmrA4egldmSSwyrVXGYuai1Oz9Fava37g7KiMsSG+N0jrqn9ZxPzscAM3BzA+0rPsx64aXB9+LZd44wm3h3Pt5ZaJnltgiSvoCaCgcb9NvgY9REzniFzzFzLuwDadZPSsXV7pLJ/y1/IkMWY/xu/IHFjJnp1retPBiSvsyefrtJV2or90/O/5U0bs3K5a0+EUzUedLd79BDagEv3Zo5QE7Y/EXTzDlkS8h6k8cx/dCfYt9u9wZmEXe2DGi81MKxFoeFWnikVI9X38xaseDwwd5oyoOCUPOt82sdbLQ+Fog== Received: from AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) by DU0PR03MB9077.eurprd03.prod.outlook.com (2603:10a6:10:464::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.26; Wed, 5 Feb 2025 19:34:04 +0000 Received: from AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8]) by AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8%4]) with mapi id 15.20.8398.021; Wed, 5 Feb 2025 19:34:04 +0000 From: Juntong Deng To: ast@kernel.org, daniel@iogearbox.net, john.fastabend@gmail.com, andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, memxor@gmail.com, tj@kernel.org, void@manifault.com, arighi@nvidia.com, changwoo@igalia.com Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH bpf-next 4/8] sched_ext: Add filter for scx_kfunc_ids_dispatch Date: Wed, 5 Feb 2025 19:30:16 +0000 Message-ID: X-Mailer: git-send-email 2.39.5 In-Reply-To: References: X-ClientProxiedBy: LO4P123CA0570.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:276::14) To AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) X-Microsoft-Original-Message-ID: <20250205193020.184792-4-juntong.deng@outlook.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR03MB5080:EE_|DU0PR03MB9077:EE_ X-MS-Office365-Filtering-Correlation-Id: d85c7604-09d5-4c13-37dd-08dd461c0c6e X-Microsoft-Antispam: BCL:0;ARA:14566002|461199028|15080799006|8060799006|19110799003|5072599009|440099028|3412199025|41001999003; X-Microsoft-Antispam-Message-Info: dTjrjbs3f4iZKOyF1sA5ayB410StP54ZxTAu7Efohg1Wu2Z4VqDE3puG9Sc83Bg9WmNx4/USl3oDAIOHpqZPouxloVDU477YFgWjgn2N8PXTRTLDlEwE9wUvUFAFPITtpVaImnEjWtTQXi+pKFnB27SplSofiDwFssN736tfutrtk7B1FrdPtDtZpUsSJXvBnAlq+XDoYDrzF0UXddmSy4vJzx4NIYwQNl2Huhmp84YUqNcnoLZi8vcbmygAsCxmv0kOBNYqVR+DF76hstUVpb0YVnMmw5BnvmSPDhUPDintkeVj27kAuN6DwqsCOOnW+p5ZSIZfBrlRKhC/Pkd/AwDgQOnn6BxaYdkMT3RMNRtRwVbevLEkbcz9K0URM1UyhPk1UJh3uqgBwfNOo30JIPSwzKuWzXlY0EYQmCDFnPW8vCyb1u2IOEbG5TnxcnPbtz8bWPk42ZhBR0qJg3yoJ7uweg+ZNyOs+vzYg1kTAG/fv9lZETWXGylzCqcPhISRstD+orCTDDTlyIlA13QY/bka/OKMK44hbaTWnDNAXQD4RAAVKjlNgq0cLuWBjI6ufX9Ik78j6XvWq0XfTqbyLgdKHQIwEGwIOxwt4FguoCoO3PG7cID4j3qaMP3jSBAzX1ID1KihqOYfGIm4+t3ymKVkR1ajr8jep6xvcu9jcWMoS9sgRxOdPnyZN8EezbEcgjbbhcTKY0bkcUgJuS4o35+dj7iPpWctEvC1Z9elIkVHIF759sog8n7CdnMU6ZPw+2156zhlaPMH7l/xXUZ0AqXZjTcYbt3BR7cmSkApsrDolfDHmWdH2CNdyjc+qOxF9nRQH1cRrn1BTs0zxhmXjOwZRQ7H4l21o8Dihd5jgSx+GBJU+9wvHxTgehIUOzCK77OrQhV2t28xmOKKa8I/K6d5G21EppPtqYjPt365jSBWW6PnzWbNuUJxtYRbZaR3euBYa75cyiLUMvzqZwDm9uy9FrGuN3rxEN17PIzpvhtW+wk4FzDvZ2rEsIYfMn8uXMtzJNNqhe3FdKKb5mOpJ1Sg+kduD09JDaHrwvrlUotKZ7y3eJJ0qM/SqUxqfTf4U3t6YLk82pCu55ASCP7yNQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3s0UC7xl1N0Rcuz6yMf4y/ZVe58JXHm1Ld4BEF7Jq+o5pQNn+Gr265cn1H4Q7/npla5WUUpgeEVsRJIB33CeUadaNtbn+B1aWm9DpzpKxfy9uXza6/Sx9cWTrxeSQ5NinMZTK8v585sqQlSriYva4DdlyPj55NCVs/AXVMbwchwlB+k+ppP3+Prl73sxUHqPrNqc3GwZo3wE2DY8xQNwcPX2pFoRCPIOUPWnb+l6Bmqgq66wVzLjKD1I+MpOlDiuop6/aFXa8FBni2te1NoJh2kZ3IhpEErvE9ZIcShigxpuv0vbUvjOUueWfQreVEC9tdr8zHCjw2lL9I3UcW0J8xoLcET/9hGNMlW20l+0F0lGFxRrmbiYbBB0WJKnAjyQ7TAqgcODH7rcxxPjIFPwOXiMZAEFcjZ+t1X5ZgVjXJxcOTYjlmSkGvyIh3Qv1W5V7N61REkQ1uXeuIeVaihM5eS0pRQPePNzz+iT/yXuWosHnG/4POfgeuvvjHP5o8XrokJ6SxFvpmGEryAF7KJlD40YKBoDZ7yrnSAkavC8WYKd70aSHRx+gSagcEqbj/ESY5v0zuqbDadoF1w6BF6kcogXlb3Zsk1lNxeiG7EVcVNMOvgP4rjS3Kki5rbuYBhallLqpLJdEWayfRTZRDRJyL9rMnT41rj182u6452GSdrRy/fRBjWxndeUQfw6vayBHV29oXUAo/2qyNlrak0MuTzuX0YW+HPQh/5feXqrUZLR5tHcJZKkOEmNutgbkPU8vv0pfMNy3nEpDE4Td0a9VS1rCyce2vqqo2Dn//UEfB9YZhKPBoZeRuBL78yhekCsjehTBfR4xSUMRUMOWgrFkMZAcskYMKReWocAxlyyMLaa9IljSicKkbOTJKXechnSJbaC/6LbKpPE1pskdeUdhAEWyenqgXLiQGVlqWHkYdoGMBGkFH/O/8shv5uFNTtGkX4VbPc0MpICx/sbQKUcJaWzOLCOmY5RmWC7txCLFUZ9frdYvPnQbBpIq8OkXW8nC2vhl8gD42mSGPgKwSeA2Xzik9rhHlJQaTKNYOUiOMor4BQV87D02sd0DrklWwo0hXvp+gZAJFP8/1EFD/yg3G0VKD9UieOe9NhBZRTo4Bjo7+2EkXKJNCj1+tDg5EG3/Ek6TzYnjuzikcGp4BR8UoLzjU1+aFlYPYLbP72R9lCVX8enM7/Zv8SS7RSj1e9lUav7zTcYKoBsgk+yp36xCxCa3SDJjIuttUaHy2V7gGepUvuRmTP+LYV3BI5oxsHk X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d85c7604-09d5-4c13-37dd-08dd461c0c6e X-MS-Exchange-CrossTenant-AuthSource: AM6PR03MB5080.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2025 19:34:04.0219 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR03MB9077 X-Patchwork-Delegate: bpf@iogearbox.net X-Patchwork-State: RFC This patch adds filter for scx_kfunc_ids_dispatch. The kfuncs in the scx_kfunc_ids_dispatch set can be used in dispatch and other rq-locked operations. Signed-off-by: Juntong Deng --- kernel/sched/ext.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index d782ee618d54..caddcf41e5f1 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -6943,9 +6943,25 @@ BTF_ID_FLAGS(func, scx_bpf_dispatch_from_dsq, KF_RCU) BTF_ID_FLAGS(func, scx_bpf_dispatch_vtime_from_dsq, KF_RCU) BTF_KFUNCS_END(scx_kfunc_ids_dispatch) +static int scx_kfunc_ids_dispatch_filter(const struct bpf_prog *prog, u32 kfunc_id) +{ + u32 moff; + + if (!btf_id_set8_contains(&scx_kfunc_ids_dispatch, kfunc_id) || + prog->aux->st_ops != &bpf_sched_ext_ops) + return 0; + + moff = prog->aux->attach_st_ops_member_off; + if (moff == offsetof(struct sched_ext_ops, dispatch)) + return 0; + + return scx_kfunc_ids_other_rqlocked_filter(prog, kfunc_id); +} + static const struct btf_kfunc_id_set scx_kfunc_set_dispatch = { .owner = THIS_MODULE, .set = &scx_kfunc_ids_dispatch, + .filter = scx_kfunc_ids_dispatch_filter, }; __bpf_kfunc_start_defs(); From patchwork Wed Feb 5 19:30:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juntong Deng X-Patchwork-Id: 13961820 X-Patchwork-Delegate: bpf@iogearbox.net Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02olkn2040.outbound.protection.outlook.com [40.92.49.40]) (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 715811547F2; Wed, 5 Feb 2025 19:34:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.49.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738784101; cv=fail; b=o3R4lPRRvVoTx9ilHTqSZQCZpaIMEJC3/rIyq2qtN7N+H8APhAcig1TFnxFL30Jdo2tmpHkt7h4YedeY/TuCyPVGKcUbOaAyt6qbZXvpMwn3uQ/af4eX+kKpIlZ0u+fdpLz1UaWtSZlPUtxmwL7vxvnz8Ivuo80u/3tSwEYZvOY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738784101; c=relaxed/simple; bh=MDeRd+98KN+G5GVPHW+R+9odPAvjEiRvkK+NERuReGw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=mDPFG6zgJZ8KgU2uZ+u9NLd/NdOYYzAL3z3S4RQNbRIBB0ZLjW0CsuvlhVwFPGnNb9ZWGaEhebED5aExwu8NLQBs69vZVyL9O/z/vJrRje79bxcl2SzzhR3V6Dy0urPBlvQj68Z8cHczNP5Z8V4MF8rSMHk57sv+wi9Zsh79LuI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=ArXau5H7; arc=fail smtp.client-ip=40.92.49.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="ArXau5H7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=we6he5CJs1ivigEfo3unrw3MV4X2Eqe/8iuBDF3DQvURxXRAGHKfvsUmhU4PUZgyDTfLSMv2TnZMwP4eV05bewL7rkcWb+sr5SDsvShzYy0axANaaIZr3Lj6J7AVmdUJp3Wx6pSY/FfIiTH2cd/1s1970y1TQKMiB82XXs/MwWjI8An/ZUJ9fwizecfXPtsi1YQh1I1JAlE9W0+G0iBcHRRsgORGHPX8FWHb5KiXe1Ygoxbw8pMmdk5qqWHp5VpDv9rF9TdsHALfq59Gvw58/Z4/HfZB2NKjTsGRu1V+mZsSAv9wGBaZB5jImwIGAF1gqzLQGpD4kEIRV0bvwOPJjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Wr0P8GKWNGhL9I3nk339jus5q847ivE5hjA+9RK9uAY=; b=ZnAyVs01SnFvlCvXHSwvDPpr2NJytTpvJU30ucYB2wAgNH03d8yjtwgg+e90OvsfZiFFUpGZRE37mVGwSlpdL0SzEJqFZhIwHOlwpAU03rXepUnDWkh0UdVQ2kbMoVHZDJA/PFpm/TafLRFq2jxslbPfXCes1hIrYF7aGcNUJirCzvymVeZQjo9ZYvs/xp0egrszmZUEiFhq+LqJ2oaZOQrne6yX9tr10soRxPaISXSUCIHYeZMVNOpj0Vbc+RKqtx9e8kLqITUL24UL6Xzq/HLbAVNEZVQ5MxJ5LSbXHybqeGKEcoVnBx32iD5/McJuuM4oB2jzyPXNJhNBEVENJA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Wr0P8GKWNGhL9I3nk339jus5q847ivE5hjA+9RK9uAY=; b=ArXau5H7WHUglyRYm42aR05enqIjGTQlSLNP+qj58ncsZQgO534M9ejnE1VY0nnUSkM50DxyqruU6jc4CiDbJB3Y0yvMJY85b/31RM7Gw6Muabl2q3UpmPe49Kjb/gl6AW5hFlRxddBO63vWz712wn1B/pHTN3vB9QHkaKsdwGxjmqjB/XAKD6pBtCdCu1iHdyBd2wkEL100Av1htMZ+JqPKhGqeiwqN++3Y/GZjnhv6ghc8z379wdyu5Xw3REj/ejs8lGGeLvs78Yb6Ip2mY0qTF/uIgJAqbGZ2ipcBHZL0TgK/4j4Lj1WLBGTRL2Madr8mutG2otvOKUM2IRBgiA== Received: from AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) by DU0PR03MB9077.eurprd03.prod.outlook.com (2603:10a6:10:464::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.26; Wed, 5 Feb 2025 19:34:56 +0000 Received: from AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8]) by AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8%4]) with mapi id 15.20.8398.021; Wed, 5 Feb 2025 19:34:55 +0000 From: Juntong Deng To: ast@kernel.org, daniel@iogearbox.net, john.fastabend@gmail.com, andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, memxor@gmail.com, tj@kernel.org, void@manifault.com, arighi@nvidia.com, changwoo@igalia.com Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH bpf-next 5/8] sched_ext: Add filter for scx_kfunc_ids_cpu_release Date: Wed, 5 Feb 2025 19:30:17 +0000 Message-ID: X-Mailer: git-send-email 2.39.5 In-Reply-To: References: X-ClientProxiedBy: LO4P123CA0570.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:276::14) To AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) X-Microsoft-Original-Message-ID: <20250205193020.184792-5-juntong.deng@outlook.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR03MB5080:EE_|DU0PR03MB9077:EE_ X-MS-Office365-Filtering-Correlation-Id: db30c9a3-8980-4cb9-0421-08dd461c2b07 X-Microsoft-Antispam: BCL:0;ARA:14566002|461199028|15080799006|8060799006|19110799003|5072599009|440099028|3412199025|41001999003; X-Microsoft-Antispam-Message-Info: gFw0hZLOxe/dR9jTqVajtXIs7+jGDgBcsTr69S7u3qxz0bC2KbujmCNbZjd2WzeXbcDtouuTmD70Z5ORO/HZzie/Z1rqcNwb+ySZ6jGCq8Kv/wKibSORoBjGLILEjt788Gzz9ocflNLPpASfheXT0VJrmthp8rFtfEChsVEDcD00yA4UTWZssuIZyydN51uKauHbAGAMAUPczHBbjfgMbCr87f8a4AEyQikcUhoHeTAuXDG8/5gotmgFysLJrVIOGlTVg3dDcTNVlaC2VETn8mL0s8xRrfg1brxaAP78A24h6fCVkYFD7SS1Q9pAvtas5EA2Tv6J1R9EyQrhtOtPB1tTMj9+/rZIIAWqv7dK6KywfsiJhpDCywvSrJHFdIyd4AabbCwO8N2oxe8qAwD08v8xMG113gj04k6GU9Kq3tfcXKqBthDcwLifgDyc9jHHkAMwxlUquF2bO4v1m9Y3vftYuGNRG2tIKaTf9ULQzQHeYWYooP1Gty+be4d6PMZZuTlu+bbgHoydMyzMxsJEmjRIfqmqyVxHGJcUDD8hA1ON8c9f3n93T+aSpmnPqbbadPP0yZF8idRuo9nW2ugCQSwgjGtUCTqu/9aTWC20o1LdtW/sbs6KVozJ12JzyvmV6a7kSR0trIGnIoe6YLqXPUBYLbLzeIOa+ZBap9wbzDB3D2WRjg24dAscKrMD/Un7T62zHCaShVPURDeU32aFwZUb8ci2uNbK8s8/WOt+ht+IRsUxaqOwN+NBJrQ9iYsCr4CJVQdYUxtJ5Zu/hh1CPH2IE5kh52ipKGsAWXSHiBy3q7UFjbhYbvgTpIpsRZrUSUC01jUWiuFnGLaC3FwMjToxUeedybQNPcMeTItjmRct+wW9vSqpPDwhBoPNLNSza4g2p+fUBPGhbJgQNMTXqrfdNCFxKoQ1iDsRjgV3J4e4uhTMgZLtLybYQT9YIgD7woGRHejsm4nTmeH8kbbyW2pgZifn9khZ94/9/CgmSVBigQBUuEyWZQmTDkMsHQZ5v4p0LacNpIcPVGDghM6hJy7VIfWxcQbfXzaavsq26Z1is+X6JAtbQ02eCI8YnDUyqkXki2px0PxxprqNtZA0VQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 08Hcw/awxWpnOshZGVjbGck5JwJYET9aPJBAR+g4MwQkzHB49qjmW3RLm5bIuNW9wTgNauLOYKgZDBydBd9fVCX5nkJo13glUfIif+xYXOtkgKHmq0soNVxYEraTdUviZUehHWJAtiWczLlwed3Dd2SSQIa0sYbwtSw41MxRjdQuiDdbaKLW/JKrmEnhhQ1mF87utUKFZ8S65RL3JymDU7IFu8obEh6uH4+OyeM0+O9gmC6K2LhkKi4vtwPz+TLH6X3t27/tOefIuGzkLRrXAnANpKsPMC24JZxEsxmx+eQvZX6KTIcCl6rDE9TKBYzBVHW8TIppkhoguNklGA/7RILDdzk3GwQMyCDX0Zx1uShisReAJOCaSb5WoaJv/B++c9h+1F2+8S1b0v2vnS7XzPsZv5MhxZDPiK6Pk0WnJZFk57S9rj8FpzxmDNkyrtCMzXLEB4oN5cfv2ayv6I4MIuHcHmej6xlnxuRvb/2vb+5AHDHIXCXDLLGerVeT3MWF2LaHCSwKJcNrvjxcEvoehPFHkE7fkXSUKI7hSVa1pufjvLbpECl+5lLBJC2jB1MhYo/8hCX0SxSNrOZmBGZpLMDeiJIE7wQzFm+JUsEdYuB2V5Gc2Xw0LNK2lvuPnJxMjCHbad9nhyLkiPOfC73p5xXD4yGzop3JHXJAMBJ3IzOtkLHHEcG7F65E3fqVACK31fiZm0Jdz2vt0dqVBpNgbw+8bo2JWLsfAqynUmhto5Nk0oCMFtzuuhU+77exVlE4w/9PlLFh6F27SDpxO4RovVVcnQ2Xs65ng1yizkGScc07yG0WNxDSgtj28taKlkynNXniqR5Y8UjpPoVaeJZWfBHDIdxuqbsQH7m+8XBqE3SdmxYlhKVy9kfH2SgjD+evSBRrkRUnjPgj0TNzZLaDKFR55W4T7EyKXdxZi3jsP9g740qNANFreEOHAaJtACv/Qi6lUXfoYu7wzusNzvTBT07TheJE1CQOiaj7bfCbGdmvkcPyecXkVCuztT4aZ/rPD9XGqUjcKB+/c/dnMlQc+SFMw0lOXbj6130tNzYGbjm0m9ccQgQYtW6YJTzvQWLF2txKzJlwyKz76gy4mFEgbYVZ5KmrSwUkbLSi8TXb2g/AW6oSUL7gkBICQ9JWf/lssr2lHSwfXeyXZMSMrZjRLAX499AJI1g3kU+LXdEcMH3ncVZE2ii0hPhgTiXvX9oEU7xzlLU4ZKygOT7tY+8cs31CTzA+q5H6e5iA+YOmsvD+iOzTi2549l7K2K9x1rwS X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: db30c9a3-8980-4cb9-0421-08dd461c2b07 X-MS-Exchange-CrossTenant-AuthSource: AM6PR03MB5080.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2025 19:34:55.3420 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR03MB9077 X-Patchwork-Delegate: bpf@iogearbox.net X-Patchwork-State: RFC This patch adds filter for scx_kfunc_ids_cpu_release. The kfuncs in the scx_kfunc_ids_cpu_release set can be used in cpu_release and other rq-locked operations. Signed-off-by: Juntong Deng --- kernel/sched/ext.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index caddcf41e5f1..7f039a32f137 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -7026,9 +7026,25 @@ BTF_KFUNCS_START(scx_kfunc_ids_cpu_release) BTF_ID_FLAGS(func, scx_bpf_reenqueue_local) BTF_KFUNCS_END(scx_kfunc_ids_cpu_release) +static int scx_kfunc_ids_cpu_release_filter(const struct bpf_prog *prog, u32 kfunc_id) +{ + u32 moff; + + if (!btf_id_set8_contains(&scx_kfunc_ids_cpu_release, kfunc_id) || + prog->aux->st_ops != &bpf_sched_ext_ops) + return 0; + + moff = prog->aux->attach_st_ops_member_off; + if (moff == offsetof(struct sched_ext_ops, cpu_release)) + return 0; + + return scx_kfunc_ids_other_rqlocked_filter(prog, kfunc_id); +} + static const struct btf_kfunc_id_set scx_kfunc_set_cpu_release = { .owner = THIS_MODULE, .set = &scx_kfunc_ids_cpu_release, + .filter = scx_kfunc_ids_cpu_release_filter, }; __bpf_kfunc_start_defs(); From patchwork Wed Feb 5 19:30:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juntong Deng X-Patchwork-Id: 13961821 X-Patchwork-Delegate: bpf@iogearbox.net Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02olkn2071.outbound.protection.outlook.com [40.92.48.71]) (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 3B1D92046AA; Wed, 5 Feb 2025 19:35:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.48.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738784158; cv=fail; b=YCL6CCUcXx6ob9MxIIV4k5r8O30XUve0tky2teJGwB/7uf1Gq7SW4Ho4cmZ7mQ/lKe+0ZTdke5AdJSiSAFLH5g5lA5OJa9E0LxBgiq7QtCsjc1z/AD2MZ58CoQNaTZPOBKxsntOyCA6WgwKrbmyYD+pJ6teu1VRapTY5B2WmE1E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738784158; c=relaxed/simple; bh=vLH7ltSfTPVTQtRqwyt7nyi4crnKTUzYgzbiyyy+C7c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=N8MoUlvF4bAixW0vA7Zw5y2KM3WNsfsIpUKM4u7HPP2cekP58r4F5tyOCfX5eMZrjDngDtvrTp4Sh5HryqFw80D8/ESjmUhKrpkrKZT8GfQzWqGzcyRUzhTmvY1cZpfXXtZFiZfF/dvUNNell0OZ+TiaWwVsPdtE+gWmbDwmpzQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=mhLfbE06; arc=fail smtp.client-ip=40.92.48.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="mhLfbE06" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vnHEemVoDnFaJLQE04IDsctzwoGrZmHZplcOMiztvTmWqtbtDC09XUOjuCE5SjjTyNmO5Qt2LeJ9X0kLU1WlM712hPIx0cLGYiOoX5Ra1UR4hhYkmggTiWi0NmDo8bZTM5ekIkaG2mLDmBhzu+313goe/tkXfM+nmdRv+F031HEc9kFIVHL26B3gFqJ3U0ETwdubqxgYju26EcUJavFT/akBa5Jq6+kbHNrIFAcxFpCwd4VHqtiLTEbVk92AENh2qHPdtT6jRgvyj9rgifV9jtYVo4ZTwKW2CdkTuy5nwxxf8oJFKv0xVh+hqGaYgmKJojSIVPpxy07dJ2EFq/sIYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3LBxm2Iw60ClGg/YKTfRKv6VK6Umf7tABvBvVW+4t08=; b=rdlv/gX3llpQ0s64dO3cnKvaqynOBjLATtRESuMC27tobVcS/ziK672qDHhyatc7RFbEjHFXB5VcwLMft8qhkYDkH7ibGLU7ouV6y10/TgXxV1C/NqZXTNjjcuX1+fj0vrVjII7a08UmuOmNJmO1H3zwhwqWCLgoPn1FAY20ypUZ+faN4w59rJlZ/BjqtLPPd6c3DzCefBrv6H28tQZ6VTX4lvuvPs0llacqIGKy+0Q4on1KIHCjlvz4FjAeH5ksn4GSi2F3ozCMv7uYpjx1Ow0D2NCJQejO9EbWg8HTJx0KEp1gJV8vLXE860RYHDo3wN0r/axgHd+VjOxvXGCzmg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3LBxm2Iw60ClGg/YKTfRKv6VK6Umf7tABvBvVW+4t08=; b=mhLfbE06Lo9A1XadaECJdTdfcCi6JNQSAWMyZQWpVXGMZZoMLPZBjW2t62jF8kJIZDgwQIIMYayUX8/lVWH1UEapov3AJx0Vm0CsGifzlJZgWLt1AlfZoXzY8H0LPVh/psCSBpeaEC2fGrLKwKbYqzBg4D1zOM2wJd0n1gQSSn/U/ErGSbrg2BLRWsBJGnNhD23zh3nsgsQ3Ol7ymrpl/ZB3aBxmglnDNkdjJbo4PlLUJXtg/JDMF+u4QgjP2kX2VGuBpFBkE2745Zq+CYU9dKe2NXS20I5uRO8TiSDhJQechw1xhzRIUivfguJi+CKqLO1Tz3Ch11s+SENjW8qLFQ== Received: from AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) by DU0PR03MB9077.eurprd03.prod.outlook.com (2603:10a6:10:464::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.26; Wed, 5 Feb 2025 19:35:53 +0000 Received: from AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8]) by AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8%4]) with mapi id 15.20.8398.021; Wed, 5 Feb 2025 19:35:53 +0000 From: Juntong Deng To: ast@kernel.org, daniel@iogearbox.net, john.fastabend@gmail.com, andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, memxor@gmail.com, tj@kernel.org, void@manifault.com, arighi@nvidia.com, changwoo@igalia.com Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH bpf-next 6/8] sched_ext: Add filter for scx_kfunc_ids_unlocked Date: Wed, 5 Feb 2025 19:30:18 +0000 Message-ID: X-Mailer: git-send-email 2.39.5 In-Reply-To: References: X-ClientProxiedBy: LO4P123CA0570.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:276::14) To AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) X-Microsoft-Original-Message-ID: <20250205193020.184792-6-juntong.deng@outlook.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR03MB5080:EE_|DU0PR03MB9077:EE_ X-MS-Office365-Filtering-Correlation-Id: 6052b05a-1796-44e0-944b-08dd461c4d96 X-Microsoft-Antispam: BCL:0;ARA:14566002|461199028|15080799006|8060799006|19110799003|5072599009|440099028|3412199025|41001999003; X-Microsoft-Antispam-Message-Info: oML6kpOlITBXzhYTKPKxt+3sjEbJr2e9LTRW7UXxv36PA2Vz39lpDRlbJRZqpj5bd8TNW6TdmRM1u3BUW8E51f5I942RfgfW+Zn1aX+X66JzZN3jn0RRUzKhEENbyM36Q+8JR8oArspwpmkWDboTU1OAOLHRsyX/XCrZQukfFGTTxS3gmU5XAHFm7MDQmRNml+nOnbIpzSAdXUduj5QINln9FvZfcXtjMaK0rYuhYje/kSdRdlAfuXNDyC+KU1N6EEM07S1LEMwBPEB2T2hkGwFfCuqbptetQVxpaGk+4OIGB4KxCQ1hejLc6QW/zpUAPWkjrNzlOXf1QtBAM2w2o5d/Mh+zEMc0GbHbXUmPiXCUxoTGe7EGZ2rXNBkXrhBJskaT8KBkrkm4SF4C9Y16RAKoDaQt6nBM5S9TJw+TBj2aG8RhsR3wF8EoXho4FJmA/dYsHsZdT3OWGgYS4dXGY3oYIomKbuNX5vMvrkNEk2wodCkptjis3Blzxjj4wwZc5wRVdie5ErP9RzZyWi40IzZ9EnSmzjSxfb5oCmQLXMl6lKVvdFDOaYT7yoQuXL05nVr0gPxLbU/JH3nQh3OL4yliuTuVnXaXR7uw5WlKqD0BoyP13WVUvjR7bhYpOUFfDFSyRsLvJihj3KaVctjr6EuI4Uom6mvs6jANAPdoMxgb7bLml037p00fffIQ92DzkXbVuv8OZntWD7Cgzg7kUIcu+Q81wPp8yDkDovhc3bhiQKskb7kYY6/fjpbRiCxFbXf3AnAP9Jp+19mveNG8fn/V9qOeFBC4pgDVReqxFDAgiI6pOhQWfyYjdVLPoIRArV5QsEAoECLTORaGm0bqCB04kyRiZMyO9V1Ue7j2tVDGtga4OnDjldZ5zDID+zJFYaT0jx+q/+RW9ZyzWynqzWRGCdy757M+H6D7whK5wZK0P7U4Bisg8qd7JohrBZD1ym5kM/SaUwpan40hwn8RX8iFFMbFKJlMVO8tXE1or5/etcA8CtpLCIkZ5BJPkpdbuRRClBFYpbkFGhdIG84Ms8Sff1KhmhPIAfbwJxFZ6xJaue1h6flfdPhUh5OnCnSjKje52GjvktXLPcFay/twaw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KIl2GcoCyJImgqrlbyjhGHGa7Dr3CosHJ/8WX3seLaYABp3BWRh5Z/eauY5Dzsd3dQzSG4zPMfPsGrwomOX33aazU6HTFQy+avOkuKbe/7XkV2bWM33N56b38s0vtW2o2Dzo9ifbj4ZBC9wQpQ7SuAsyojQNwzH/EAjU4mMgncc0ywXKFAy8fzs2a0bX4/ZJd2VqBsu88qZje/E+PEVeA4C84UTzgApUapVolmaxEkySYPo5nKKTy1RT+hpHnwGwBE2GaznEGvJHSFoupgw9JM9PJrtpzXb2KsBo1S9sATmW3qDnnsNdP3qDMb97ANtjDj98zVPwILX6FDXM/d8jIKHqc17DrqZfy3hIth2zVxhDKrBSow9c9u8+HtQbR2HVUZRYLwGxepnUNp1l0UWun43/OqNZpC9k742PzB8spg11Gp/Zo5GBG+cpQlwC4Xl51X4KVrYXboEkSALmhMlXzkwlP9B+WNtu+uGiYO/kosufWpVI3Swjt0OJrSHASGdWFbHCobolVOAnnM4pSQt65/X8urelu22ZivBmEu9Hh/g2QR2HR2AaNYgUVigKR9hq3tGm2dfd+U0pwKt0RJv93d1JJdzEMpUioNcOo/AOkptR8mUtk0tt/hvI+P5LxpcprOyRCLe1X5G4YXOy6U+w2HSlcB4AimFwHpMX2ZCA8nIlq9U3YG+Ag8YsFsMf1viCLH3pImA/pvGlyiiRAHZRvnEhnF1dSWt3IgFB+vDUu+0B9rbAmXuZ374N74V3OySgwzW4dq/I2fKSDFVqcjWhSkMtgzQBdL7GGzpj4tARyO+jbE/O8dJ5Gly094vwRHrfWP+tY6CXpuFdzyHP1T0JVUoFfvr7yt+yeAsc/LhgSTkOqfnrJna2e39no6q/j+0xkCg+oGFiOKqm93ltDMcbXOyGl2OGb3BqLEjwegh8MPJNge+sRiP2GOqI9BmIfPq44uq5HRprfN04hBufxPp1xK/3Gi14UgwEroIZaPOFEo3ez+LeZ3oKuH5We3ISk/j361ldQCPdqusK91C6O6nEWdZPaOji6QPM+Bv+lcQTrPwF662mQZYTfpLn967JEr9cpe6vkcZcBD/sQJ74ay9MM9P3hIKotpuOBylrd3iUpu/WqBiJtvK+289NyW2vK0+m7p/SJIPQYyGLNeZHEIOqmljed6VgUaZW3A79d2r0NvuxgzkC1ReKoSDtD6yPzisL7s9p5dd5FMuYmQmsWbuLWP3pXbbs2ZxjbdeJ73x2jL9iI4FaPjTPppgK7VFyp23k X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6052b05a-1796-44e0-944b-08dd461c4d96 X-MS-Exchange-CrossTenant-AuthSource: AM6PR03MB5080.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2025 19:35:53.3408 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR03MB9077 X-Patchwork-Delegate: bpf@iogearbox.net X-Patchwork-State: RFC This patch adds filter for scx_kfunc_ids_unlocked. The kfuncs in the scx_kfunc_ids_unlocked set can be used in init, exit, cpu_online, cpu_offline, init_task, dump, cgroup_init, cgroup_exit, cgroup_prep_move, cgroup_cancel_move, cgroup_move, cgroup_set_weight operations. Signed-off-by: Juntong Deng --- kernel/sched/ext.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index 7f039a32f137..955fb0f5fc5e 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -7079,9 +7079,39 @@ BTF_ID_FLAGS(func, scx_bpf_dispatch_from_dsq, KF_RCU) BTF_ID_FLAGS(func, scx_bpf_dispatch_vtime_from_dsq, KF_RCU) BTF_KFUNCS_END(scx_kfunc_ids_unlocked) +static int scx_kfunc_ids_unlocked_filter(const struct bpf_prog *prog, u32 kfunc_id) +{ + u32 moff; + + if (!btf_id_set8_contains(&scx_kfunc_ids_unlocked, kfunc_id) || + prog->aux->st_ops != &bpf_sched_ext_ops) + return 0; + + moff = prog->aux->attach_st_ops_member_off; + if (moff == offsetof(struct sched_ext_ops, init) || + moff == offsetof(struct sched_ext_ops, exit) || + moff == offsetof(struct sched_ext_ops, cpu_online) || + moff == offsetof(struct sched_ext_ops, cpu_offline) || + moff == offsetof(struct sched_ext_ops, init_task) || + moff == offsetof(struct sched_ext_ops, dump)) + return 0; + +#ifdef CONFIG_EXT_GROUP_SCHED + if (moff == offsetof(struct sched_ext_ops, cgroup_init) || + moff == offsetof(struct sched_ext_ops, cgroup_exit) || + moff == offsetof(struct sched_ext_ops, cgroup_prep_move) || + moff == offsetof(struct sched_ext_ops, cgroup_cancel_move) || + moff == offsetof(struct sched_ext_ops, cgroup_move) || + moff == offsetof(struct sched_ext_ops, cgroup_set_weight)) + return 0; +#endif + return -EACCES; +} + static const struct btf_kfunc_id_set scx_kfunc_set_unlocked = { .owner = THIS_MODULE, .set = &scx_kfunc_ids_unlocked, + .filter = scx_kfunc_ids_unlocked_filter, }; __bpf_kfunc_start_defs(); From patchwork Wed Feb 5 19:30:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juntong Deng X-Patchwork-Id: 13961822 X-Patchwork-Delegate: bpf@iogearbox.net Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02olkn2040.outbound.protection.outlook.com [40.92.49.40]) (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 2E60E1FF1B3; Wed, 5 Feb 2025 19:36:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.49.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738784190; cv=fail; b=mccw7d6Hj8cb7Yf4QRnhxAPXiOn3ZOIxSVyiHoiPvzxIuxlDpeSLb2maM+yKP6giCRu4tCTNiYYSb5MYgk6n8MA8CO7cR0ieQ1l6y497L0TzpaS3zpeLp9U3NeDEdNvM93IlZkwedXpCCafx9TkVmVfr6Vm+rkKsjYKJAyOe2Ag= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738784190; c=relaxed/simple; bh=Gj+qGa29z8Vmsa0UnJw/ZIzFbQtOzub9vu8NDooMDv0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cYkYB0r3T4wm/OjFwRo+2QJ1+5KdRzX9X1lEbbk9RbpUPWT+gSqB22c2EA1d70XQ912IJy87nMi1kxAo62WqPSxlruw1dfy89vxvxGEmChuNlWhW5dboEPw8oRzxKLJXVUWOCgvjzXLOImmubZkk/T8y87c46FnrCVZCtTOJ7gc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=W2VQrPO4; arc=fail smtp.client-ip=40.92.49.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="W2VQrPO4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Wdu3Y/FVvh5bq+z+a+1CH8akASs9wTrKc+zLud3jrIeodn89l/ndafrjRUysRJZ06e3PwuIVr2kU+FbAo6N9hzCXhEK8UlOVeCEvR1Xe2Pevf8E9wTEjSiOUA+U4LLmRsu2fUsAOpC95giozgj4Z8JjUizwUOQnTzhk0Ih2u9yfgRW3z1C0zPXKQAsb+2olzbXBTYonLupACAB6CYOYhQqsOnAyQa9W99iCt+bIePnDA4OEVAvQp9v+emDPAQegq56x37ib7+rqyl5Uy0m02jFd1rSWC0m4mqKTyFm9nGMdaegOD9Ox7Ad3to377wojQeOR0etLg1wbsxxyQuPDxjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PbSe6Da8l0NgzqbxWrykx1TZDOys0Ft08uZJrFyasxM=; b=aSVSyUNuOoSJPlo1MLks9P1OWNr/hWevhYoV9At/2BrcUBtAAMcmpHNYZKFqTRL6ar2/0T1xC4SErddXlsKMMcNTR2P8gCITYHSXXwOzT4kr57CPl7V4FFBmW2FfrxaMYJ9qe8uRW1AgfhEdHLER1P62ok4MgeVGIc3JLdffY67SpoOeg0GxgvJy97/5oz5w7mqes1f7rapqNUxqMxRSR+jrNAdZKLaFDtHwRZ7UZCXV7M0nELspAuWkhDeDSqAFTc5ZrPefXDcGFCWYl7YJm6hn1hv8KCNL5dBt6f8ps6/m2BhGdNJ7l01pnRY0gln/iQVw5WAnQ3Qf9/BEEka5Mw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PbSe6Da8l0NgzqbxWrykx1TZDOys0Ft08uZJrFyasxM=; b=W2VQrPO4RH6wL5C0ISUszZKeDH4/IaieJuR9lqFrfEXyvIiDxTSciJQlfglM+qiQbDR92Iev8lDtoCIr2adaWpWjAF2MJVmlXpQ5sBUbvnQjRH+hpx8JBl8ZghO/qNkEgBP1Pszr7wlsEzeBdOkFuaYbyLGwMLo9YBtBI7xM+0/3TpR5imiFmZE1g+ExPZgr6IBOLMo0CjY/vLFce9Z//PdNkrATFl4nY7uEx5tpwB8gakkXNjeagYq7tnNbyxmziblHb7j/2rkGfmPF9bLSBHzOcqj5FQPIKwnnrDsHe1jssUqLb6Ig8XVyI7UoMcLcX/iTsbOIhtl1qqK10c0hMQ== Received: from AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) by DU0PR03MB9077.eurprd03.prod.outlook.com (2603:10a6:10:464::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.26; Wed, 5 Feb 2025 19:36:25 +0000 Received: from AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8]) by AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8%4]) with mapi id 15.20.8398.021; Wed, 5 Feb 2025 19:36:25 +0000 From: Juntong Deng To: ast@kernel.org, daniel@iogearbox.net, john.fastabend@gmail.com, andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, memxor@gmail.com, tj@kernel.org, void@manifault.com, arighi@nvidia.com, changwoo@igalia.com Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH bpf-next 7/8] sched_ext: Removed mask-based runtime restrictions on calling kfuncs in different contexts Date: Wed, 5 Feb 2025 19:30:19 +0000 Message-ID: X-Mailer: git-send-email 2.39.5 In-Reply-To: References: X-ClientProxiedBy: LO4P123CA0570.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:276::14) To AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) X-Microsoft-Original-Message-ID: <20250205193020.184792-7-juntong.deng@outlook.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR03MB5080:EE_|DU0PR03MB9077:EE_ X-MS-Office365-Filtering-Correlation-Id: dac3633b-6a73-4293-c0c7-08dd461c60b1 X-Microsoft-Antispam: BCL:0;ARA:14566002|12121999004|461199028|15080799006|8060799006|19110799003|5072599009|440099028|3412199025|41001999003; X-Microsoft-Antispam-Message-Info: VNcV+sGsrjFGireGXypDAzZqA4uyfnV7HaInJEASg31k383oGBiyb8lGwbKoerJqFbPsm+E3NOygKOBTxCV6xnhYS1iUAVQsWhjLkZMCI6WaD1c4Mlmi99bysFsYPwH8oTQuzE78HfijjoUc40gVTJPlelHpxazWQXBeN10LahQ4ERijGFgl1CWmL/4t/38ZwDd4oYZ1T/8rsfQ0DYDI4J+bdlhVKbcV/3jSaF3F19qRi7EtZRGI7YzSJRJ4op4EFKUuiN9Z2E0TGCyByg6AbIhf0svwQbVt/WrbBOpQqPc1Cjt0UcsY5vxnXHTk246XQ01OAwnkrtpn7Zvl80GofSt6ZtHR+P0HHEWfqRvt2tLHtDIX2YC+wIJstrrHqthPTCa9gfqmH6CtSg/dWDWW3YWluNQ9DlAwgG21T4jKrhn14BNySq4Fa50/BZ55de4ieJW+VpxfZpIJE0X+rBoSvFDaQJBZ7lHcjfb8IcK4937DdlC4iTOPzVniZMChFVVTida6Ehc7+T8tpLBeyRirHAAYfBI2Pal7nZ8dXBfkJK4V2Rm9qFJ7/qgmnj/jURrCpyRiD+nsFTCxID3S9IvQ90+V1WiFFUeMz0M5QnAAlEOoogrCUfm4VuoFpyV9TpVMkXs1VGcBEztkF3XnhCSwcSPvYSV9JrJalgP2aYuTvk3RGUgNNJJz0/bC8TODWMOMO3YBfaxfm5UjQsx4UNT0iFMeCYOk7nMLYRNwsuZgavfj95e1FcR9k1PSwEUKJ7Wy2LTdovir4btMfsd0GZmlOVuFlFJHeqAMjSqq5ipEUVTk0koXG0LAzkvWYk+nt3dK3du4sUDbb5LZNb9vhyvSqiqSdrZQ98oyLo8j4Ui7riUN7Qk6xG0idp2l/TyxQZaSLmgk/ERX+ETQfEC1wgaeqbncT/paLnmdSL9kRIYdfBtHGThIhZHnxAbHy/pmVBpvZEwJA2zIasIJqVI+myLHJwfRp9REGxtVacOykvdwU8siO67LDvhjffkV0SCsRiilVhZPiLCEdkjnNTcysJEwlgAU7hAtS/jMXnPBres86a0fIN+W4v3Tn4CcHCIngpWMA+2LnBs8P94T19Zd24AULo4zcrZ77OWLWrsiLsJdwb8= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PeyhdqqJqp1VCnB29r2DfFiMhW8p8zmhYinDBAqE5LDdoLhxq0UXcvgQSPrKBhmsByVizf8St4HnU2LIKC9cbGx91TIASQ+N1T9/GZ4lR04puTBHLR0WB4TJklDNfisswYRaDtvAM+2JxgGpBgxY15bDxCfd6byAVeejDija56kT00GWSVACc0rLxlodHebAVlmiCJ7ONmW8XdV8HJBYN69mflI2X3VLsY+jBE8wtAKEGx2vjbpFs/cGJWQAQAAlha+qs6vN9lOolRadrgE4icHc9oy/VPNoNa/koxq6asYfnuEYc7I9KxlsxMgfZRZT5ofTzWxLTxfgGdx+igqYPQ6agJ9HNoDKGGlo9UbN4/CORjIyC9yYH+cd2XF3nlt6i2wtTn9CJZzhFIDFx73YVmqNSIabXketBI+nar+qwXGoDfUVW0Um2QYo5hL6qpkThIOjTfexDQN6FwmrQVlQ2lGzmEsRuQ7T2kvtIfowev47KfnecTRo//WmD4OgHI8PPFnbd//FkCn0jv4XvAH1g3grBrt4KGmpSh040xB6a4vXqDafps7SWMSY3zJXB2PHozIag9aWQ/g3iMFTw0fDNxf/2iffP6SZP7x8+N1o7ottlHrdKD1VVR9xQtZvqGfj3a1YE8VrFwbgYQImwd50LJzfzxgJkPSCBXbBBYr5Bs7XHywsQ7dfLN0enTsdW2rLNoQV0UKv/rASltvO2wTtthWDkjkPCTSiIENDtuGyPWNsyH7xM6PppPssrtIeqihMXwhxOTV3S/j3s/cxicNhv7VlcNgsPUjKB9TAZ4G2dBL+Tblm0fYL+gGxgxnnnFt/FKOKOyY/8DdI/i7k/K0gK2w2z7IIvO3qOH+aj83r1YIJT4ebt0uKBrKbBACVAVOZE/i/Ob4Flqpcd553jnu44Ms+6IXzbpSO+p9OQJj5RH+EBKTuJ1Xm3Gq8E8WTkikTcb46T8kYS3PXO3LaapGb5AWmp+0oW/k6MQKAqdB6ftGb6heeSyXb/Izz8jGdL1JgP6+qFfoVI3SOSdcxstroDB1Yl/QIGyJgpwS9PIlpDYNpyWrRRSP7UGqqFLz/mlegONhouukFakg7RQlHncCnXzprEO051bcTZljSwI8sTFXVxG1hRVj0EjueCl/OpVtgd/8BQDak5MAWIQlFHzzlm+Y3R/F6EFcUomjuVGNX4iKvXj3Bge+pg/4hxLoN0QVnF3QbEkWNVpMDmlr5ta2M696IQ9rA/38LDI9xGsR2BKVU1LKZGKkHTniMbLmn08aJ X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dac3633b-6a73-4293-c0c7-08dd461c60b1 X-MS-Exchange-CrossTenant-AuthSource: AM6PR03MB5080.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2025 19:36:25.3861 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR03MB9077 X-Patchwork-Delegate: bpf@iogearbox.net X-Patchwork-State: RFC Currently, kfunc filters already support filtering based on struct_ops context information. The BPF verifier can check context-sensitive kfuncs before the SCX program is run, avoiding runtime overhead. Therefore we no longer need mask-based runtime restrictions. This patch removes the mask-based runtime restrictions. Signed-off-by: Juntong Deng --- include/linux/sched/ext.h | 24 ---- kernel/sched/ext.c | 232 ++++++++------------------------------ 2 files changed, 50 insertions(+), 206 deletions(-) diff --git a/include/linux/sched/ext.h b/include/linux/sched/ext.h index 1d70a9867fb1..867c24b88ace 100644 --- a/include/linux/sched/ext.h +++ b/include/linux/sched/ext.h @@ -96,29 +96,6 @@ enum scx_ent_dsq_flags { SCX_TASK_DSQ_ON_PRIQ = 1 << 0, /* task is queued on the priority queue of a dsq */ }; -/* - * Mask bits for scx_entity.kf_mask. Not all kfuncs can be called from - * everywhere and the following bits track which kfunc sets are currently - * allowed for %current. This simple per-task tracking works because SCX ops - * nest in a limited way. BPF will likely implement a way to allow and disallow - * kfuncs depending on the calling context which will replace this manual - * mechanism. See scx_kf_allow(). - */ -enum scx_kf_mask { - SCX_KF_UNLOCKED = 0, /* sleepable and not rq locked */ - /* ENQUEUE and DISPATCH may be nested inside CPU_RELEASE */ - SCX_KF_CPU_RELEASE = 1 << 0, /* ops.cpu_release() */ - /* ops.dequeue (in REST) may be nested inside DISPATCH */ - SCX_KF_DISPATCH = 1 << 1, /* ops.dispatch() */ - SCX_KF_ENQUEUE = 1 << 2, /* ops.enqueue() and ops.select_cpu() */ - SCX_KF_SELECT_CPU = 1 << 3, /* ops.select_cpu() */ - SCX_KF_REST = 1 << 4, /* other rq-locked operations */ - - __SCX_KF_RQ_LOCKED = SCX_KF_CPU_RELEASE | SCX_KF_DISPATCH | - SCX_KF_ENQUEUE | SCX_KF_SELECT_CPU | SCX_KF_REST, - __SCX_KF_TERMINAL = SCX_KF_ENQUEUE | SCX_KF_SELECT_CPU | SCX_KF_REST, -}; - enum scx_dsq_lnode_flags { SCX_DSQ_LNODE_ITER_CURSOR = 1 << 0, @@ -146,7 +123,6 @@ struct sched_ext_entity { u32 weight; s32 sticky_cpu; s32 holding_cpu; - u32 kf_mask; /* see scx_kf_mask above */ struct task_struct *kf_tasks[2]; /* see SCX_CALL_OP_TASK() */ atomic_long_t ops_state; diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index 955fb0f5fc5e..d2182f5e2b28 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -1043,19 +1043,6 @@ static long jiffies_delta_msecs(unsigned long at, unsigned long now) return -(long)jiffies_to_msecs(now - at); } -/* if the highest set bit is N, return a mask with bits [N+1, 31] set */ -static u32 higher_bits(u32 flags) -{ - return ~((1 << fls(flags)) - 1); -} - -/* return the mask with only the highest bit set */ -static u32 highest_bit(u32 flags) -{ - int bit = fls(flags); - return ((u64)1 << bit) >> 1; -} - static bool u32_before(u32 a, u32 b) { return (s32)(a - b) < 0; @@ -1071,51 +1058,12 @@ static struct scx_dispatch_q *find_user_dsq(u64 dsq_id) return rhashtable_lookup_fast(&dsq_hash, &dsq_id, dsq_hash_params); } -/* - * scx_kf_mask enforcement. Some kfuncs can only be called from specific SCX - * ops. When invoking SCX ops, SCX_CALL_OP[_RET]() should be used to indicate - * the allowed kfuncs and those kfuncs should use scx_kf_allowed() to check - * whether it's running from an allowed context. - * - * @mask is constant, always inline to cull the mask calculations. - */ -static __always_inline void scx_kf_allow(u32 mask) -{ - /* nesting is allowed only in increasing scx_kf_mask order */ - WARN_ONCE((mask | higher_bits(mask)) & current->scx.kf_mask, - "invalid nesting current->scx.kf_mask=0x%x mask=0x%x\n", - current->scx.kf_mask, mask); - current->scx.kf_mask |= mask; - barrier(); -} +#define SCX_CALL_OP(op, args...) scx_ops.op(args) -static void scx_kf_disallow(u32 mask) -{ - barrier(); - current->scx.kf_mask &= ~mask; -} - -#define SCX_CALL_OP(mask, op, args...) \ -do { \ - if (mask) { \ - scx_kf_allow(mask); \ - scx_ops.op(args); \ - scx_kf_disallow(mask); \ - } else { \ - scx_ops.op(args); \ - } \ -} while (0) - -#define SCX_CALL_OP_RET(mask, op, args...) \ +#define SCX_CALL_OP_RET(op, args...) \ ({ \ __typeof__(scx_ops.op(args)) __ret; \ - if (mask) { \ - scx_kf_allow(mask); \ - __ret = scx_ops.op(args); \ - scx_kf_disallow(mask); \ - } else { \ - __ret = scx_ops.op(args); \ - } \ + __ret = scx_ops.op(args); \ __ret; \ }) @@ -1130,74 +1078,36 @@ do { \ * scx_kf_allowed_on_arg_tasks() to test whether the invocation is allowed on * the specific task. */ -#define SCX_CALL_OP_TASK(mask, op, task, args...) \ +#define SCX_CALL_OP_TASK(op, task, args...) \ do { \ - BUILD_BUG_ON((mask) & ~__SCX_KF_TERMINAL); \ current->scx.kf_tasks[0] = task; \ - SCX_CALL_OP(mask, op, task, ##args); \ + SCX_CALL_OP(op, task, ##args); \ current->scx.kf_tasks[0] = NULL; \ } while (0) -#define SCX_CALL_OP_TASK_RET(mask, op, task, args...) \ +#define SCX_CALL_OP_TASK_RET(op, task, args...) \ ({ \ __typeof__(scx_ops.op(task, ##args)) __ret; \ - BUILD_BUG_ON((mask) & ~__SCX_KF_TERMINAL); \ current->scx.kf_tasks[0] = task; \ - __ret = SCX_CALL_OP_RET(mask, op, task, ##args); \ + __ret = SCX_CALL_OP_RET(op, task, ##args); \ current->scx.kf_tasks[0] = NULL; \ __ret; \ }) -#define SCX_CALL_OP_2TASKS_RET(mask, op, task0, task1, args...) \ +#define SCX_CALL_OP_2TASKS_RET(op, task0, task1, args...) \ ({ \ __typeof__(scx_ops.op(task0, task1, ##args)) __ret; \ - BUILD_BUG_ON((mask) & ~__SCX_KF_TERMINAL); \ current->scx.kf_tasks[0] = task0; \ current->scx.kf_tasks[1] = task1; \ - __ret = SCX_CALL_OP_RET(mask, op, task0, task1, ##args); \ + __ret = SCX_CALL_OP_RET(op, task0, task1, ##args); \ current->scx.kf_tasks[0] = NULL; \ current->scx.kf_tasks[1] = NULL; \ __ret; \ }) -/* @mask is constant, always inline to cull unnecessary branches */ -static __always_inline bool scx_kf_allowed(u32 mask) -{ - if (unlikely(!(current->scx.kf_mask & mask))) { - scx_ops_error("kfunc with mask 0x%x called from an operation only allowing 0x%x", - mask, current->scx.kf_mask); - return false; - } - - /* - * Enforce nesting boundaries. e.g. A kfunc which can be called from - * DISPATCH must not be called if we're running DEQUEUE which is nested - * inside ops.dispatch(). We don't need to check boundaries for any - * blocking kfuncs as the verifier ensures they're only called from - * sleepable progs. - */ - if (unlikely(highest_bit(mask) == SCX_KF_CPU_RELEASE && - (current->scx.kf_mask & higher_bits(SCX_KF_CPU_RELEASE)))) { - scx_ops_error("cpu_release kfunc called from a nested operation"); - return false; - } - - if (unlikely(highest_bit(mask) == SCX_KF_DISPATCH && - (current->scx.kf_mask & higher_bits(SCX_KF_DISPATCH)))) { - scx_ops_error("dispatch kfunc called from a nested operation"); - return false; - } - - return true; -} - /* see SCX_CALL_OP_TASK() */ -static __always_inline bool scx_kf_allowed_on_arg_tasks(u32 mask, - struct task_struct *p) +static __always_inline bool scx_kf_allowed_on_arg_tasks(struct task_struct *p) { - if (!scx_kf_allowed(mask)) - return false; - if (unlikely((p != current->scx.kf_tasks[0] && p != current->scx.kf_tasks[1]))) { scx_ops_error("called on a task not being operated on"); @@ -1207,11 +1117,6 @@ static __always_inline bool scx_kf_allowed_on_arg_tasks(u32 mask, return true; } -static bool scx_kf_allowed_if_unlocked(void) -{ - return !current->scx.kf_mask; -} - /** * nldsq_next_task - Iterate to the next task in a non-local DSQ * @dsq: user dsq being interated @@ -2027,7 +1932,7 @@ static void do_enqueue_task(struct rq *rq, struct task_struct *p, u64 enq_flags, WARN_ON_ONCE(*ddsp_taskp); *ddsp_taskp = p; - SCX_CALL_OP_TASK(SCX_KF_ENQUEUE, enqueue, p, enq_flags); + SCX_CALL_OP_TASK(enqueue, p, enq_flags); *ddsp_taskp = NULL; if (p->scx.ddsp_dsq_id != SCX_DSQ_INVALID) @@ -2122,7 +2027,7 @@ static void enqueue_task_scx(struct rq *rq, struct task_struct *p, int enq_flags add_nr_running(rq, 1); if (SCX_HAS_OP(runnable) && !task_on_rq_migrating(p)) - SCX_CALL_OP_TASK(SCX_KF_REST, runnable, p, enq_flags); + SCX_CALL_OP_TASK(runnable, p, enq_flags); if (enq_flags & SCX_ENQ_WAKEUP) touch_core_sched(rq, p); @@ -2153,7 +2058,7 @@ static void ops_dequeue(struct task_struct *p, u64 deq_flags) BUG(); case SCX_OPSS_QUEUED: if (SCX_HAS_OP(dequeue)) - SCX_CALL_OP_TASK(SCX_KF_REST, dequeue, p, deq_flags); + SCX_CALL_OP_TASK(dequeue, p, deq_flags); if (atomic_long_try_cmpxchg(&p->scx.ops_state, &opss, SCX_OPSS_NONE)) @@ -2202,11 +2107,11 @@ static bool dequeue_task_scx(struct rq *rq, struct task_struct *p, int deq_flags */ if (SCX_HAS_OP(stopping) && task_current(rq, p)) { update_curr_scx(rq); - SCX_CALL_OP_TASK(SCX_KF_REST, stopping, p, false); + SCX_CALL_OP_TASK(stopping, p, false); } if (SCX_HAS_OP(quiescent) && !task_on_rq_migrating(p)) - SCX_CALL_OP_TASK(SCX_KF_REST, quiescent, p, deq_flags); + SCX_CALL_OP_TASK(quiescent, p, deq_flags); if (deq_flags & SCX_DEQ_SLEEP) p->scx.flags |= SCX_TASK_DEQD_FOR_SLEEP; @@ -2226,7 +2131,7 @@ static void yield_task_scx(struct rq *rq) struct task_struct *p = rq->curr; if (SCX_HAS_OP(yield)) - SCX_CALL_OP_2TASKS_RET(SCX_KF_REST, yield, p, NULL); + SCX_CALL_OP_2TASKS_RET(yield, p, NULL); else p->scx.slice = 0; } @@ -2236,7 +2141,7 @@ static bool yield_to_task_scx(struct rq *rq, struct task_struct *to) struct task_struct *from = rq->curr; if (SCX_HAS_OP(yield)) - return SCX_CALL_OP_2TASKS_RET(SCX_KF_REST, yield, from, to); + return SCX_CALL_OP_2TASKS_RET(yield, from, to); else return false; } @@ -2763,7 +2668,7 @@ static int balance_one(struct rq *rq, struct task_struct *prev) * emitted in switch_class(). */ if (SCX_HAS_OP(cpu_acquire)) - SCX_CALL_OP(SCX_KF_REST, cpu_acquire, cpu_of(rq), NULL); + SCX_CALL_OP(cpu_acquire, cpu_of(rq), NULL); rq->scx.cpu_released = false; } @@ -2808,8 +2713,7 @@ static int balance_one(struct rq *rq, struct task_struct *prev) do { dspc->nr_tasks = 0; - SCX_CALL_OP(SCX_KF_DISPATCH, dispatch, cpu_of(rq), - prev_on_scx ? prev : NULL); + SCX_CALL_OP(dispatch, cpu_of(rq), prev_on_scx ? prev : NULL); flush_dispatch_buf(rq); @@ -2929,7 +2833,7 @@ static void set_next_task_scx(struct rq *rq, struct task_struct *p, bool first) /* see dequeue_task_scx() on why we skip when !QUEUED */ if (SCX_HAS_OP(running) && (p->scx.flags & SCX_TASK_QUEUED)) - SCX_CALL_OP_TASK(SCX_KF_REST, running, p); + SCX_CALL_OP_TASK(running, p); clr_task_runnable(p, true); @@ -3010,8 +2914,7 @@ static void switch_class(struct rq *rq, struct task_struct *next) .task = next, }; - SCX_CALL_OP(SCX_KF_CPU_RELEASE, - cpu_release, cpu_of(rq), &args); + SCX_CALL_OP(cpu_release, cpu_of(rq), &args); } rq->scx.cpu_released = true; } @@ -3024,7 +2927,7 @@ static void put_prev_task_scx(struct rq *rq, struct task_struct *p, /* see dequeue_task_scx() on why we skip when !QUEUED */ if (SCX_HAS_OP(stopping) && (p->scx.flags & SCX_TASK_QUEUED)) - SCX_CALL_OP_TASK(SCX_KF_REST, stopping, p, true); + SCX_CALL_OP_TASK(stopping, p, true); if (p->scx.flags & SCX_TASK_QUEUED) { set_task_runnable(rq, p); @@ -3602,8 +3505,7 @@ static int select_task_rq_scx(struct task_struct *p, int prev_cpu, int wake_flag WARN_ON_ONCE(*ddsp_taskp); *ddsp_taskp = p; - cpu = SCX_CALL_OP_TASK_RET(SCX_KF_ENQUEUE | SCX_KF_SELECT_CPU, - select_cpu, p, prev_cpu, wake_flags); + cpu = SCX_CALL_OP_TASK_RET(select_cpu, p, prev_cpu, wake_flags); *ddsp_taskp = NULL; if (ops_cpu_valid(cpu, "from ops.select_cpu()")) return cpu; @@ -3641,8 +3543,7 @@ static void set_cpus_allowed_scx(struct task_struct *p, * designation pointless. Cast it away when calling the operation. */ if (SCX_HAS_OP(set_cpumask)) - SCX_CALL_OP_TASK(SCX_KF_REST, set_cpumask, p, - (struct cpumask *)p->cpus_ptr); + SCX_CALL_OP_TASK(set_cpumask, p, (struct cpumask *)p->cpus_ptr); } static void reset_idle_masks(void) @@ -3708,7 +3609,7 @@ void __scx_update_idle(struct rq *rq, bool idle, bool do_notify) * managed by put_prev_task_idle()/set_next_task_idle(). */ if (SCX_HAS_OP(update_idle) && do_notify && !scx_rq_bypassing(rq)) - SCX_CALL_OP(SCX_KF_REST, update_idle, cpu_of(rq), idle); + SCX_CALL_OP(update_idle, cpu_of(rq), idle); /* * Update the idle masks: @@ -3739,9 +3640,9 @@ static void handle_hotplug(struct rq *rq, bool online) update_selcpu_topology(); if (online && SCX_HAS_OP(cpu_online)) - SCX_CALL_OP(SCX_KF_UNLOCKED, cpu_online, cpu); + SCX_CALL_OP(cpu_online, cpu); else if (!online && SCX_HAS_OP(cpu_offline)) - SCX_CALL_OP(SCX_KF_UNLOCKED, cpu_offline, cpu); + SCX_CALL_OP(cpu_offline, cpu); else scx_ops_exit(SCX_ECODE_ACT_RESTART | SCX_ECODE_RSN_HOTPLUG, "cpu %d going %s, exiting scheduler", cpu, @@ -3851,7 +3752,7 @@ static void task_tick_scx(struct rq *rq, struct task_struct *curr, int queued) curr->scx.slice = 0; touch_core_sched(rq, curr); } else if (SCX_HAS_OP(tick)) { - SCX_CALL_OP(SCX_KF_REST, tick, curr); + SCX_CALL_OP(tick, curr); } if (!curr->scx.slice) @@ -3928,7 +3829,7 @@ static int scx_ops_init_task(struct task_struct *p, struct task_group *tg, bool .fork = fork, }; - ret = SCX_CALL_OP_RET(SCX_KF_UNLOCKED, init_task, p, &args); + ret = SCX_CALL_OP_RET(init_task, p, &args); if (unlikely(ret)) { ret = ops_sanitize_err("init_task", ret); return ret; @@ -3985,11 +3886,11 @@ static void scx_ops_enable_task(struct task_struct *p) p->scx.weight = sched_weight_to_cgroup(weight); if (SCX_HAS_OP(enable)) - SCX_CALL_OP_TASK(SCX_KF_REST, enable, p); + SCX_CALL_OP_TASK(enable, p); scx_set_task_state(p, SCX_TASK_ENABLED); if (SCX_HAS_OP(set_weight)) - SCX_CALL_OP_TASK(SCX_KF_REST, set_weight, p, p->scx.weight); + SCX_CALL_OP_TASK(set_weight, p, p->scx.weight); } static void scx_ops_disable_task(struct task_struct *p) @@ -3998,7 +3899,7 @@ static void scx_ops_disable_task(struct task_struct *p) WARN_ON_ONCE(scx_get_task_state(p) != SCX_TASK_ENABLED); if (SCX_HAS_OP(disable)) - SCX_CALL_OP(SCX_KF_REST, disable, p); + SCX_CALL_OP(disable, p); scx_set_task_state(p, SCX_TASK_READY); } @@ -4027,7 +3928,7 @@ static void scx_ops_exit_task(struct task_struct *p) } if (SCX_HAS_OP(exit_task)) - SCX_CALL_OP(SCX_KF_REST, exit_task, p, &args); + SCX_CALL_OP(exit_task, p, &args); scx_set_task_state(p, SCX_TASK_NONE); } @@ -4136,7 +4037,7 @@ static void reweight_task_scx(struct rq *rq, struct task_struct *p, p->scx.weight = sched_weight_to_cgroup(scale_load_down(lw->weight)); if (SCX_HAS_OP(set_weight)) - SCX_CALL_OP_TASK(SCX_KF_REST, set_weight, p, p->scx.weight); + SCX_CALL_OP_TASK(set_weight, p, p->scx.weight); } static void prio_changed_scx(struct rq *rq, struct task_struct *p, int oldprio) @@ -4152,8 +4053,7 @@ static void switching_to_scx(struct rq *rq, struct task_struct *p) * different scheduler class. Keep the BPF scheduler up-to-date. */ if (SCX_HAS_OP(set_cpumask)) - SCX_CALL_OP_TASK(SCX_KF_REST, set_cpumask, p, - (struct cpumask *)p->cpus_ptr); + SCX_CALL_OP_TASK(set_cpumask, p, (struct cpumask *)p->cpus_ptr); } static void switched_from_scx(struct rq *rq, struct task_struct *p) @@ -4245,8 +4145,7 @@ int scx_tg_online(struct task_group *tg) struct scx_cgroup_init_args args = { .weight = tg->scx_weight }; - ret = SCX_CALL_OP_RET(SCX_KF_UNLOCKED, cgroup_init, - tg->css.cgroup, &args); + ret = SCX_CALL_OP_RET(cgroup_init, tg->css.cgroup, &args); if (ret) ret = ops_sanitize_err("cgroup_init", ret); } @@ -4267,7 +4166,7 @@ void scx_tg_offline(struct task_group *tg) percpu_down_read(&scx_cgroup_rwsem); if (SCX_HAS_OP(cgroup_exit) && (tg->scx_flags & SCX_TG_INITED)) - SCX_CALL_OP(SCX_KF_UNLOCKED, cgroup_exit, tg->css.cgroup); + SCX_CALL_OP(cgroup_exit, tg->css.cgroup); tg->scx_flags &= ~(SCX_TG_ONLINE | SCX_TG_INITED); percpu_up_read(&scx_cgroup_rwsem); @@ -4300,8 +4199,7 @@ int scx_cgroup_can_attach(struct cgroup_taskset *tset) continue; if (SCX_HAS_OP(cgroup_prep_move)) { - ret = SCX_CALL_OP_RET(SCX_KF_UNLOCKED, cgroup_prep_move, - p, from, css->cgroup); + ret = SCX_CALL_OP_RET(cgroup_prep_move, p, from, css->cgroup); if (ret) goto err; } @@ -4314,8 +4212,7 @@ int scx_cgroup_can_attach(struct cgroup_taskset *tset) err: cgroup_taskset_for_each(p, css, tset) { if (SCX_HAS_OP(cgroup_cancel_move) && p->scx.cgrp_moving_from) - SCX_CALL_OP(SCX_KF_UNLOCKED, cgroup_cancel_move, p, - p->scx.cgrp_moving_from, css->cgroup); + SCX_CALL_OP(cgroup_cancel_move, p, p->scx.cgrp_moving_from, css->cgroup); p->scx.cgrp_moving_from = NULL; } @@ -4346,8 +4243,7 @@ void scx_move_task(struct task_struct *p) * cgrp_moving_from set. */ if (SCX_HAS_OP(cgroup_move) && !WARN_ON_ONCE(!p->scx.cgrp_moving_from)) - SCX_CALL_OP_TASK(SCX_KF_UNLOCKED, cgroup_move, p, - p->scx.cgrp_moving_from, tg_cgrp(task_group(p))); + SCX_CALL_OP_TASK(cgroup_move, p, p->scx.cgrp_moving_from, tg_cgrp(task_group(p))); p->scx.cgrp_moving_from = NULL; } @@ -4366,8 +4262,7 @@ void scx_cgroup_cancel_attach(struct cgroup_taskset *tset) cgroup_taskset_for_each(p, css, tset) { if (SCX_HAS_OP(cgroup_cancel_move) && p->scx.cgrp_moving_from) - SCX_CALL_OP(SCX_KF_UNLOCKED, cgroup_cancel_move, p, - p->scx.cgrp_moving_from, css->cgroup); + SCX_CALL_OP(cgroup_cancel_move, p, p->scx.cgrp_moving_from, css->cgroup); p->scx.cgrp_moving_from = NULL; } out_unlock: @@ -4380,8 +4275,7 @@ void scx_group_set_weight(struct task_group *tg, unsigned long weight) if (scx_cgroup_enabled && tg->scx_weight != weight) { if (SCX_HAS_OP(cgroup_set_weight)) - SCX_CALL_OP(SCX_KF_UNLOCKED, cgroup_set_weight, - tg_cgrp(tg), weight); + SCX_CALL_OP(cgroup_set_weight, tg_cgrp(tg), weight); tg->scx_weight = weight; } @@ -4571,7 +4465,7 @@ static void scx_cgroup_exit(void) continue; rcu_read_unlock(); - SCX_CALL_OP(SCX_KF_UNLOCKED, cgroup_exit, css->cgroup); + SCX_CALL_OP(cgroup_exit, css->cgroup); rcu_read_lock(); css_put(css); @@ -4614,8 +4508,7 @@ static int scx_cgroup_init(void) continue; rcu_read_unlock(); - ret = SCX_CALL_OP_RET(SCX_KF_UNLOCKED, cgroup_init, - css->cgroup, &args); + ret = SCX_CALL_OP_RET(cgroup_init, css->cgroup, &args); if (ret) { css_put(css); scx_ops_error("ops.cgroup_init() failed (%d)", ret); @@ -5078,7 +4971,7 @@ static void scx_ops_disable_workfn(struct kthread_work *work) } if (scx_ops.exit) - SCX_CALL_OP(SCX_KF_UNLOCKED, exit, ei); + SCX_CALL_OP(exit, ei); cancel_delayed_work_sync(&scx_watchdog_work); @@ -5284,7 +5177,7 @@ static void scx_dump_task(struct seq_buf *s, struct scx_dump_ctx *dctx, if (SCX_HAS_OP(dump_task)) { ops_dump_init(s, " "); - SCX_CALL_OP(SCX_KF_REST, dump_task, dctx, p); + SCX_CALL_OP(dump_task, dctx, p); ops_dump_exit(); } @@ -5330,7 +5223,7 @@ static void scx_dump_state(struct scx_exit_info *ei, size_t dump_len) if (SCX_HAS_OP(dump)) { ops_dump_init(&s, ""); - SCX_CALL_OP(SCX_KF_UNLOCKED, dump, &dctx); + SCX_CALL_OP(dump, &dctx); ops_dump_exit(); } @@ -5387,7 +5280,7 @@ static void scx_dump_state(struct scx_exit_info *ei, size_t dump_len) used = seq_buf_used(&ns); if (SCX_HAS_OP(dump_cpu)) { ops_dump_init(&ns, " "); - SCX_CALL_OP(SCX_KF_REST, dump_cpu, &dctx, cpu, idle); + SCX_CALL_OP(dump_cpu, &dctx, cpu, idle); ops_dump_exit(); } @@ -5607,7 +5500,7 @@ static int scx_ops_enable(struct sched_ext_ops *ops, struct bpf_link *link) cpus_read_lock(); if (scx_ops.init) { - ret = SCX_CALL_OP_RET(SCX_KF_UNLOCKED, init); + ret = SCX_CALL_OP_RET(init); if (ret) { ret = ops_sanitize_err("init", ret); cpus_read_unlock(); @@ -6383,9 +6276,6 @@ __bpf_kfunc s32 scx_bpf_select_cpu_dfl(struct task_struct *p, s32 prev_cpu, if (!check_builtin_idle_enabled()) goto prev_cpu; - if (!scx_kf_allowed(SCX_KF_SELECT_CPU)) - goto prev_cpu; - #ifdef CONFIG_SMP return scx_select_cpu_dfl(p, prev_cpu, wake_flags, is_idle); #endif @@ -6450,9 +6340,6 @@ static const struct btf_kfunc_id_set scx_kfunc_set_select_cpu = { static bool scx_dsq_insert_preamble(struct task_struct *p, u64 enq_flags) { - if (!scx_kf_allowed(SCX_KF_ENQUEUE | SCX_KF_DISPATCH)) - return false; - lockdep_assert_irqs_disabled(); if (unlikely(!p)) { @@ -6637,9 +6524,6 @@ static bool scx_dsq_move(struct bpf_iter_scx_dsq_kern *kit, bool in_balance; unsigned long flags; - if (!scx_kf_allowed_if_unlocked() && !scx_kf_allowed(SCX_KF_DISPATCH)) - return false; - /* * Can be called from either ops.dispatch() locking this_rq() or any * context where no rq lock is held. If latter, lock @p's task_rq which @@ -6722,9 +6606,6 @@ __bpf_kfunc_start_defs(); */ __bpf_kfunc u32 scx_bpf_dispatch_nr_slots(void) { - if (!scx_kf_allowed(SCX_KF_DISPATCH)) - return 0; - return scx_dsp_max_batch - __this_cpu_read(scx_dsp_ctx->cursor); } @@ -6738,9 +6619,6 @@ __bpf_kfunc void scx_bpf_dispatch_cancel(void) { struct scx_dsp_ctx *dspc = this_cpu_ptr(scx_dsp_ctx); - if (!scx_kf_allowed(SCX_KF_DISPATCH)) - return; - if (dspc->cursor > 0) dspc->cursor--; else @@ -6766,9 +6644,6 @@ __bpf_kfunc bool scx_bpf_dsq_move_to_local(u64 dsq_id) struct scx_dsp_ctx *dspc = this_cpu_ptr(scx_dsp_ctx); struct scx_dispatch_q *dsq; - if (!scx_kf_allowed(SCX_KF_DISPATCH)) - return false; - flush_dispatch_buf(dspc->rq); dsq = find_user_dsq(dsq_id); @@ -6980,9 +6855,6 @@ __bpf_kfunc u32 scx_bpf_reenqueue_local(void) struct rq *rq; struct task_struct *p, *n; - if (!scx_kf_allowed(SCX_KF_CPU_RELEASE)) - return 0; - rq = cpu_rq(smp_processor_id()); lockdep_assert_rq_held(rq); @@ -7769,7 +7641,7 @@ __bpf_kfunc struct cgroup *scx_bpf_task_cgroup(struct task_struct *p) struct task_group *tg = p->sched_task_group; struct cgroup *cgrp = &cgrp_dfl_root.cgrp; - if (!scx_kf_allowed_on_arg_tasks(__SCX_KF_RQ_LOCKED, p)) + if (!scx_kf_allowed_on_arg_tasks(p)) goto out; cgrp = tg_cgrp(tg); @@ -7891,10 +7763,6 @@ static int __init scx_init(void) * * Some kfuncs are context-sensitive and can only be called from * specific SCX ops. They are grouped into BTF sets accordingly. - * Unfortunately, BPF currently doesn't have a way of enforcing such - * restrictions. Eventually, the verifier should be able to enforce - * them. For now, register them the same and make each kfunc explicitly - * check using scx_kf_allowed(). */ if ((ret = register_btf_kfunc_id_set(BPF_PROG_TYPE_STRUCT_OPS, &scx_kfunc_set_select_cpu)) || From patchwork Wed Feb 5 19:30:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juntong Deng X-Patchwork-Id: 13961823 X-Patchwork-Delegate: bpf@iogearbox.net Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02olkn2061.outbound.protection.outlook.com [40.92.48.61]) (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 EAD461FE476; Wed, 5 Feb 2025 19:37:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.48.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738784233; cv=fail; b=kI6Y1qXDlX5dDkboTFeDp4KPxfQLXFMaObMuGlMDfClRJ9wkf/xHpouzXjifnw6/ChRGMN0riDo9lpDiUaZEWmWkPx8tkRiXSsmtFW1GnsV6bD0kDLDm2sVaNsiVn8q4nCILw4TToW3E4J1FKgQu1EhL4zHRH5yzsVdy/TX6w8g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738784233; c=relaxed/simple; bh=ypXZfEqdh4D8qNVzzgsXTGxGo9Tzi11wS6e4bO+4Kk0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZD4hVT8AcmnRNRT3VdHCTBsfite2LzUYc3R9G2Z+JeH2dmogw7iqJNnVtciFCRiiL82Q9ylXqI0H3Lj3Vis0GhM0gqrjCN+yfBo/TTCCuAom8rOt5wUhUcJqdy59751DjXaK5kvjk1KMdG08AcccltKwuLm3rrUBPHYsM/HpfBg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=ULMf2BGc; arc=fail smtp.client-ip=40.92.48.61 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="ULMf2BGc" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gRycGq+htUygGqaIwNcGd9CpsPjWaoRIbeENbapteYPZG2Tc02bmwJcOCaOb8bKT3gi2b1HYI2lZm1RIr6VdTxppP8e6CIt+2eETvilJb/QbNTpS/iyiE/z5p3HieOHXyfXviioneyqCzsNrXacdhzPX3YxWnE6Ldi7JaE6yhWqCYa2eX5YGQOghiVyXcO4tKCFFKyEPwaU/VPal1OLlPEEo7yUSvJg6X4apxB9E9HImsUpeC7qp8PossFPPXjZvHe0os6+SwF+0gvNJ7VhyrlSbIxA83pr/yMJhK3AklhGCUVIExHRxdEd1C1fxJ5vy9sR6uqp7OvZdSqLAeeAb0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GRnGQA+nOZThu23j/JO28tYgMaZH4gtrbP64dQJvHRI=; b=b+2PUAm20yHGxJfTnwWSlvLAEsYkJTkCZUlAgCNT15+HDHCeWRaMcoHsSlKhQuQlBMv5lAkuuL/sSVT+ItvWAQvHua4Fn0P0NoWfI4REi+GbnkvImw9wrpjQIvf+8EeMkU6f3dGQqdsWo08uZwGtGYsuEJ+PxEinJRvK/CheYn6rmZdI6EswRS+TT+f+8DGqsy7UQ8lVRneSR8hlRTkSaldnnshP+CdFp98nZywgX58K5Qk+B3dVX+YIlUDZo+pujoHy8b6Thg0BE021QeBF1uKtdiLkesE8ABAdW/i3BaxY6bkekn6ciALTv0QM0rD77L1qCbvE0eKWtvnD05f+ZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GRnGQA+nOZThu23j/JO28tYgMaZH4gtrbP64dQJvHRI=; b=ULMf2BGc6RxFRuq0JiIKxKJVx9IfGCJkZ4Ui3EZ0vNEoang4xcgsWdnOV611fYYDdGrQJxTbfO+d9SHF4nsHhUWOU1MY6Tx7oltWuC15x6NACo/6oIzldJJuVSjqdb8tH06LjnguLHNGbvG9GdL8w7DFqHGGMG98AJ9FqBJWvYSJpCOXF0chDLvI/WU5DNDTvdh1XbFbDM32pbVdGJTa5m74nVvKEgu4ZrX3kHGKOtaRTL82kWtK0fJdZg+8+1hdVG9CGqmzkkkvbi7Bl5q64g9b/gwH9U8GomT0L/yHPZNCSuS5CcLUaDkKQYGA35LXr6UTHyCWiwWtqY4YhJEr1Q== Received: from AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) by DU0PR03MB9077.eurprd03.prod.outlook.com (2603:10a6:10:464::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.26; Wed, 5 Feb 2025 19:37:09 +0000 Received: from AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8]) by AM6PR03MB5080.eurprd03.prod.outlook.com ([fe80::a16:9eb8:6868:f6d8%4]) with mapi id 15.20.8398.021; Wed, 5 Feb 2025 19:37:09 +0000 From: Juntong Deng To: ast@kernel.org, daniel@iogearbox.net, john.fastabend@gmail.com, andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, memxor@gmail.com, tj@kernel.org, void@manifault.com, arighi@nvidia.com, changwoo@igalia.com Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH bpf-next 8/8] selftests/sched_ext: Update enq_select_cpu_fails to adapt to struct_ops context filter Date: Wed, 5 Feb 2025 19:30:20 +0000 Message-ID: X-Mailer: git-send-email 2.39.5 In-Reply-To: References: X-ClientProxiedBy: LO4P123CA0570.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:276::14) To AM6PR03MB5080.eurprd03.prod.outlook.com (2603:10a6:20b:90::20) X-Microsoft-Original-Message-ID: <20250205193020.184792-8-juntong.deng@outlook.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR03MB5080:EE_|DU0PR03MB9077:EE_ X-MS-Office365-Filtering-Correlation-Id: 655a7da3-6a71-4853-e08b-08dd461c7a9c X-Microsoft-Antispam: BCL:0;ARA:14566002|461199028|15080799006|8060799006|19110799003|5072599009|440099028|3412199025|41001999003|12071999003|21061999003; X-Microsoft-Antispam-Message-Info: pSri9Q2pMbL0iP+2du9hFE6Z6Fx/FxIw6mdGIT1WFMRzYX9dWUcQ8MBuozmbtQ0n26crTGI2N3D/t0ChZyj9VEGZslFz99zMilsCxQQu7jz21e7lZPb27sEr38NHffbP54V0sz5fc4w4PhHdEQVuqvZei9l54DkcwPv/oX3jGJisRYUGgMudE+d1UIHz8BNrsL2l1qkk+/FB4BATQCe4o2EdI2AKT0ycxhzNzKGVPoY6rdqNCVDUZjN5INKjJldUviiGKF4sa8CHZy0IhtvA6lhrH1c7XssgVksjF89g7ntRPWrN3aJDM0g7fgqb5OqFUudis8LZry3kS+r463COfgJsjm/g6a7BU+DEfJNmXiiTX2vwIB+vTLQAzuTGwg3wrPRxvn0si5jylOdhR2BhGB0t3wuMrxGPeve56EFB+7gqJaQ/w7gO+9PbTnX4nPo71NVewtCX2aPfYFewERp6rqYB2C8wOP935rhBTsKTpjrfeW9UPNgZrgtBylPrAsvPTnOjOR57mgm6RV7mL9Wke+srSPWhHybc0PSo9bmia7jNn86GHu/QhI8YrCI+XlHviZZBifpWac2940bobZg38z0kMz5iBe52Ysrh6ahwwtmhFCVMk4ZiJ6OFHGKhpMjzkSbxxG2BteYUDUYoQJ008rqyruPgLa8qMtVb1Tw6XKEeLNw8OEBkcl5cp9/7dtgrMnFD/MtWfWLE0l8FMyxqR9g2tGGqlpREiM13izrIvivfRNuOJWcHyBw/3csZQqIpVmPMFbcS8ztf72NFi19qdDrOgJY5d9WZve3CKr6PgkL+mLyGYWBuNMTpyNmefDl4po85d8CR7XFxQCFgwBp1K7dZMnwBVJxHtcicV1GkhUYK/T6rTTOQCwpMk8pkg2lJ3phyS/FIhyY5z4UbaEfM0v5vEQa+KMN/NZidajJ7jV/3IuLPx0wW1Qg2DyB0E4mVZ0u248Pw6Ejj5/so6Uvokx6j+DB+fL0alSCA6Qg7HlFqmc/tUX/CAl30+DrFrMiKy/sFiY+ETBYzsvFHV9A0NkrEhW21KeVxaPvdmiQdaW2Y4eYb4XZkHL1s0cr+MwAclCPC174GkuoyWNYms2KDoGeu+1KDwUbLirOlAEN1UW2o26/9UO0ST7QpJmyDErCroXaddC+rYyg0vfqq7sEviw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: D6x1lJCbbt2wNOx1wvo4d1CLkrMvV1CbBBeBSZ7YntHpvYBahSfXa0LlgZr+SV6sJYMbcIqDxY5WP3vTt9k+Uu7bHVHVWE9jDB2137qhQiwZ7oQ543b6VsUaRjX8ZQwPptxHyXIDFi7LMwFpeqqcFxAiH/SvviGHuTqGKCSxkHygy7wGEJXELgpr9Bhv/hAfwlScJ0cjWywfWiG0Q/NBxFv3uPkz3jBFdViJNXw5iKbz3JYWZAFgokE0XI29zE8KWBP1NC+WV8Tu5fa13QtGwuUs4lF1zvBA0Nw/HstM9xrELbrFLrGEG14vH6r6bBthHKQNY05hU8t+UncGrb6K91A7aSFf9u7ZvaEalOK3FdSTdV62MZo4gcTTDNctzGKV62y337Up3UoFoAye0lXGrFpXliYJHux/SAjNlJpzMh1kWDHY9aGy3rOVJtxSt4NWzZhz4FXOc7meqkrZ2tc3NIrjRCu2lqo9epq1uykXmDvBkuADHQxHaG2M/z7FSFzceGwy2EJ6zp795MGUqKqA66iy9446DDpfMNwTn/PvNXeJeox/AI5AU7kWFdUUFFrUJvT++XwrjlsXBS0gP8MjImC7iwq++VIvX/aCZ7nOrBn9h2XgGDKWZWQ17IYvCEm/tip+LKvoU0Vv01oHEHjkfm0hfN9wSoXDGml0V2Re3kBqvsA1/h4Esc/sIvCQcgkyiQLMUnr1RbUmc7B/ef72V5+aScriho6FYG4C9wSbmXcU5j1E9DexWmN0X0qaog397NP0OyLn8C5BtR2MpK6zApaxYnBXFuClcXFrqROtwafjMaLkHx1PGRQpTBMPkuO+tUT+AUeFSFlHqa07SHioDMXyn/O2TI1lvWpI8mqAvyxn/rD4K2Y/row7abHvng8xINE+qMjFM1VcmSj2UUlfUcpYGrgmPB0pqhR6HuXgywAzE9ywu/AvC4PR5/0M9IbKJrHV2kpDewf4KGKJVLdUES7HQ8NAglZucwSVc4ZehtCV6zEoqcnJ6LeMQ9L9MuezN+wBiDp7Rsr5mojC7+arL7Ih6ujdQNIuO2JZeEB99tF0MUbb/YNsJgv+aurE5KyLmyCWaXLC6ZvRVn8xwIMrL4msFW4WW+Mq4ok/Y4abAcnh3Oa5OnZJ2zbavTza6cVCTLx84dKAf9ugSvNVAv4wyZ8lz6HxAe/SYv8R1578fR7zxqXSLy3UrbiRCtoOoSK0chZpGPn2UTyDbtBwsMLaegQ9NvyWZ42ZpM1uJzSY2CHe44dm7ygMdShGpwDgcHOw X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 655a7da3-6a71-4853-e08b-08dd461c7a9c X-MS-Exchange-CrossTenant-AuthSource: AM6PR03MB5080.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2025 19:37:08.9487 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR03MB9077 X-Patchwork-Delegate: bpf@iogearbox.net X-Patchwork-State: RFC After kfunc filters support struct_ops context information, SCX programs that call incorrect context-sensitive kfuncs will fail to load. This patch updates the enq_select_cpu_fails test case to adapt to the failed load situation. Signed-off-by: Juntong Deng --- .../sched_ext/enq_select_cpu_fails.c | 35 +++---------------- 1 file changed, 4 insertions(+), 31 deletions(-) diff --git a/tools/testing/selftests/sched_ext/enq_select_cpu_fails.c b/tools/testing/selftests/sched_ext/enq_select_cpu_fails.c index dd1350e5f002..a04ad9a48a8f 100644 --- a/tools/testing/selftests/sched_ext/enq_select_cpu_fails.c +++ b/tools/testing/selftests/sched_ext/enq_select_cpu_fails.c @@ -11,51 +11,24 @@ #include "enq_select_cpu_fails.bpf.skel.h" #include "scx_test.h" -static enum scx_test_status setup(void **ctx) +static enum scx_test_status run(void *ctx) { struct enq_select_cpu_fails *skel; skel = enq_select_cpu_fails__open_and_load(); - if (!skel) { - SCX_ERR("Failed to open and load skel"); - return SCX_TEST_FAIL; - } - *ctx = skel; - - return SCX_TEST_PASS; -} - -static enum scx_test_status run(void *ctx) -{ - struct enq_select_cpu_fails *skel = ctx; - struct bpf_link *link; - - link = bpf_map__attach_struct_ops(skel->maps.enq_select_cpu_fails_ops); - if (!link) { - SCX_ERR("Failed to attach scheduler"); + if (skel) { + enq_select_cpu_fails__destroy(skel); + SCX_ERR("This program should fail to load"); return SCX_TEST_FAIL; } - sleep(1); - - bpf_link__destroy(link); - return SCX_TEST_PASS; } -static void cleanup(void *ctx) -{ - struct enq_select_cpu_fails *skel = ctx; - - enq_select_cpu_fails__destroy(skel); -} - struct scx_test enq_select_cpu_fails = { .name = "enq_select_cpu_fails", .description = "Verify we fail to call scx_bpf_select_cpu_dfl() " "from ops.enqueue()", - .setup = setup, .run = run, - .cleanup = cleanup, }; REGISTER_SCX_TEST(&enq_select_cpu_fails)