From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010019.outbound.protection.outlook.com [52.101.56.19]) (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 9B8CC3D47A5 for ; Wed, 8 Apr 2026 18:09:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.19 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775671752; cv=fail; b=QF3geOlr+scP4fXoKTG71lji0PDie+k+vMCNoWCMmefS6pP5kioH/YfbN7zwAYY1VP/kX151WflCuVUB7KLsYVITKh0mYIkO428HTS6MXYvAsT+/QkqDqKFRSpwo04K/02zqg/gc4ulZds5hmcyGVBXPZdSAQNMz19z9rY5DGjw= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775671752; c=relaxed/simple; bh=VLB9V5mYQpP270M2OoW/7IuULa7tM+/7tzmDQNo+G7g=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=u0Cw7iaKpKxsc+XBf0l703TxN7z0IwhC4sHbLZdZOHrEOjguayjKBd7C4TkLkbExdtwo1HsLoRMk6F83DUTzx2voINjHs8NRXaQns6VWBmVQYxEOCsu3nJom8O2e7bItFxsXwSWE+9lP1lTk+n0+8iOsZgse4Uq0dI+JXJkmf2U= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=KzysKgNS; arc=fail smtp.client-ip=52.101.56.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="KzysKgNS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=L2B4kRqXBzZnKpmE4uhUqkyYURkBBA0UlGlPcMcZh9I0+pUI4zWmPPLzztaozDd6/zK0qRL7mQjayXcAemj14vcUY6vbohk03yjMwCxhMwcDGSyxnfwf/AyRrqcf0UIjc8JZbCZkb7EUWSUQkD8U5p8QgepD9QyJnxN4e5SPcckRNL/W3O/S2OnX9fa071QRs80U3sas1WO7euY1Ew6g5Yrxb6SmDWmq0Ecocavsk++IRnP/t6acg1adzC7H/4QcSz5JsMAzjuGDiEmCvo4JUYxJQFO0cnNC7d61mGDRi79t3K4XQ3rnp9cpYri6rroDZwjPfwKz7S6OCclOuTZ7ig== 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=MUI4XorXrO5M4TNa5qWKF6oYmLpphrFAKKdHfegdWgg=; b=KIFsaPUuaxA+aNQoazBrTu5N6zSBGXAyaYCy5XN67AMzWn3Sm8Mnc85s/d9p7R360AcF5Btrgn7IO5iuJMc8FuHeQld2aFR7RHw5MsmAqHfBc0qe0WqCPxBBH/afspkiiDmMMALqhposH5uZdBUo4kEgXMYKuRLNEJL8cmesKAGZiEKi2h19iiCzzMZf+pvmcXtrujmZzNzU+uuCtb1dmCPl3gr16XygoX8rcEOkSh1RuU5N6PufAYxFXFxForD7N0evKILFuHA3XK6Gc08rTh5ZKg7B7Lh34TsKHPnIaf9BdAmmhfaXbrf4ecffZ9PfmkFrwRFMDUp67DPI4we9cQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MUI4XorXrO5M4TNa5qWKF6oYmLpphrFAKKdHfegdWgg=; b=KzysKgNS4+3GLjpdYu1S1ZV5cBb1xebdVLcAWqrbM8XUeixtEizxD57cP9FFJ4hfxP9AzKL2ve9rsy1PrM0kfwVeSNY4KyVUiohUmzv/7to8BYKTDElPRuEZ0A49C+FwUerbIhCs21zrJO8Y38gQ+96SNHqQh+VkjHX1GInH3cVfIV54a+rtWqKCCYOpvPMqSpI+5CmJH+meD6Mx/EnLaWjszddUkvY/jwsMlhNGCYtq7OM3uEAZ5AhfqMdUTYejaOkJVstC621JF9aah6JcRrgVebRPUAI+JgW95RV1b3l0reXMW0nzGl1wAsh0L4IVPuxdSH7DLdWzHGgUMw5AgQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16) by IA4PR12MB9835.namprd12.prod.outlook.com (2603:10b6:208:54f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 8 Apr 2026 18:09:06 +0000 Received: from CY8PR12MB8300.namprd12.prod.outlook.com ([fe80::ce75:8187:3ac3:c5de]) by CY8PR12MB8300.namprd12.prod.outlook.com ([fe80::ce75:8187:3ac3:c5de%3]) with mapi id 15.20.9769.018; Wed, 8 Apr 2026 18:09:06 +0000 Date: Wed, 8 Apr 2026 14:09:04 -0400 From: Yury Norov To: Shrikanth Hegde Cc: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, tglx@linutronix.de, yury.norov@gmail.com, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, kprateek.nayak@amd.com, vschneid@redhat.com, iii@linux.ibm.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, joelagnelf@nvidia.com Subject: Re: [PATCH v2 05/17] sched/core: allow only preferred CPUs in is_cpu_allowed Message-ID: References: <20260407191950.643549-1-sshegde@linux.ibm.com> <20260407191950.643549-6-sshegde@linux.ibm.com> <1430f070-a0cb-4c16-a96d-99acb5e53ab1@linux.ibm.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1430f070-a0cb-4c16-a96d-99acb5e53ab1@linux.ibm.com> X-ClientProxiedBy: BN0PR04CA0157.namprd04.prod.outlook.com (2603:10b6:408:eb::12) To CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY8PR12MB8300:EE_|IA4PR12MB9835:EE_ X-MS-Office365-Filtering-Correlation-Id: e8460c56-a72f-4303-a2a9-08de9599ec83 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|376014|366016|7416014|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: UY2b/oLVKmy4i2RlSxPvNfd1zoexbiy9+gH+DSi/613LNVF6Ghlqf8IXjjMO8wpfI6s0cXfUVx8UBNK5kpWMN6prKJbp20rmlkBfeI65YN3LTOm3lrHM/uKCKPcxG60W+21JyuxJMmWQY1CpBLESyrCpONmOdAgSxRW3U+vhn+hMi8gX1V+JuGnxACvlUa3kZef8OIzIfad2abAk9nHMKueoJBpOVr512W01FFI8+xIWL4q7JyF0IczkzJvlnNPepJfmqooQHv1Saog6ZDH7p4a0+cOvNLrABXkvsK1TtM2YlyIG8/U8tnN/kYmTAED/Dqjy81iU1HMYyWayKrd93K49FI33B8m3Jf55XXS1wHSsDl8ryCWEDLmnu/6KJdED8vE0AMYZLs9CxlEyiK6BhBvafz+l53qdBNCGO8lb7HUw7Y1rJENx/DWm/kb9QKS/oMm4mrTRKGSx0xYI9cAucZpEdcxD72YxisfOyqZN7m/txz2Ga0Hw+Plhi+x0TThZI1m1b4yzvq00BTgSrDcWQtm8p81HeN/846ul+6QcHrrai/T3CBaudVMyhOCa26WO3ZzbHz7dJD1dDgXBUndjrO23HTI3iTRGS4z2VSAssE5JJFiu9LR/tBh5z+InAB3bMfxcRUZvG+m81PigjTwPk5FkoyMLIDVJb9paYA9RgHY44hw+Hwwn4CWURKBIoM+x2yqp3nTfR+iFAae9WmugsketLyste7OWM0C/pS945iE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY8PR12MB8300.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(1800799024)(376014)(366016)(7416014)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vxUAaAxFdAYrtVro4t0N3XYhaxwwCe3vgDoBOLnIloVNsHoySbNnM6VevQiy?= =?us-ascii?Q?pHFrakkUkDsDeGcM511F8ciz7cX3WQhQDQwNeyGIpKXENJ+cLibWmEQAHZeU?= =?us-ascii?Q?EgsG0Yw6Gj/VyXvEb0fF2l795Np4rEsopNuEk0XEgSmFxaf7RDNUmUk/ytI9?= =?us-ascii?Q?bMP0iN8Fua+UTIrOLMemgm5UZzD6oQ1302lpDnrioODaFJQJ9vlQMsRo0wma?= =?us-ascii?Q?xuFHqvDJMM/I8gr0dRpdbUmih7/eA1MerKEiDqWKa3rQt7vMhx7azT1eF/5G?= =?us-ascii?Q?buMarvjc/hXYU6aMVvQjQlD5SuOJfFy+mDXZ27121hJOj84Lfms7n/4CQK4p?= =?us-ascii?Q?LPKCabFKgAme9kPRpNY8z+jcyoVn+7Hen1R0whcLDzFLkzC0Qmvp+GBOA6ud?= =?us-ascii?Q?yl76laK0Z4GI8b18QUvWVbse+rnSVuOQBVmaVdxdrdEWOqcH4vPb0ZrGyl3m?= =?us-ascii?Q?Jq3Ng8dXWEimrTHCd/ygj56k4l9LZ9PyRnihyFZ+CD41DdoiFnfhmbi3OuKT?= =?us-ascii?Q?52AT2pzbZdVaTyV12ZcZBTeg4mJr0VLB3tRYx7Tsu5SLV22U0cel2SndxxXq?= =?us-ascii?Q?fJ8kvlo7WZWJ+hfGndpcCNzZ4wGxqghzicwp74GS/0CiKYparbvcmdeQLU14?= =?us-ascii?Q?YbyGUrs/Gs1FSNJCVAyWrpeVk2Vmfbpj775Piww/iz6sMnylh/52Z1wj2mOf?= =?us-ascii?Q?OiUYyYJhL1byVy01BLiU2q3buqUsLVMZL8EHuzKUGsYdPkV7VYxuGNSW0Aju?= =?us-ascii?Q?w0KMdr3H4LD/YebNn+J5HioYNZD5CWXpVFjTlfkqkqJ1vH/ZU/qgg51Y/V3m?= =?us-ascii?Q?tadYAloTKH6kWcaYtG7XmZcV8litS9thKoKyzIWpaHGjGJ/6llL7/yCW30J+?= =?us-ascii?Q?ysS/Eoao/YHeTqkfXJqG2dhZsPnbT/LPneKsu2ApAcqqEmEUJaBVXQuhjvNy?= =?us-ascii?Q?C0464Sp9MhECC2N63NRUQ03xSz/M1TpB1sfE6Mc9VehmF/7K3F/wFLJBilfX?= =?us-ascii?Q?WVq8VrZDaEtyGpdOOJD/MVkUeAevis42lcpTeWLMMKDVl58evBjGGO1bTFZ+?= =?us-ascii?Q?+eyrlvymdRBYdtaCAM6pEYWuBLdJCH8h0AdHLDcOajGTSWYK598c/oa5+YgX?= =?us-ascii?Q?K+757xyPIZv5Nub+RGj0ewyU0s/hZY2GA51PHzVIfDkgh7UonKTRyTufp6+/?= =?us-ascii?Q?nhkdw0jjKuMt1yIWOUjKYpcNXQ3QO/qepZmwsCmTb+LiIA3c6WfC8HQVa7EC?= =?us-ascii?Q?GBKEE72+Qi0ACFmcibdgmHPI5RsccKE/5mVJVFNBgyUxU/+yBe5N0aCgu3dV?= =?us-ascii?Q?eGI/V+QWdXW00tlSbudoA+yopvnfE0ca6LpBG3yXAcNTwHu8wWkpbHR18tMF?= =?us-ascii?Q?PPBfNqV+Vhl0Byl31zcwRJqIk2gWTWiwh0UXgh5RJAerB7Ek1jgivrcq3WN0?= =?us-ascii?Q?mXr7SK799cvbw+NKeDMD3H1X4NzDveF6THh0ktbsMewBfm6iEcCKvtrihdpt?= =?us-ascii?Q?41iBPLEYzOsPSCmnkbTWBB42ZO/k4itvxuTwYGkFbKLZlsZifPQxRtTpLDHR?= =?us-ascii?Q?ht+nvlbEbmzP+MUB5AOOhKhR/FnFx5k7uhcc3zaFnjMSfxIAqwXcnoTlm8jx?= =?us-ascii?Q?JKwoTWROG4p0Wod9URwa4rIW9/HwkOX7ntqi1U5Js+Oq9NEcsT8unamULSP+?= =?us-ascii?Q?NXgl3kuM05wq6l5mnqz/smrpHot+7jYy6VNGPQSanGgyGpVDmJ77oEvBdoM5?= =?us-ascii?Q?gPYzdBWCPGblU83pdE89OhWVuwzAm7jaKFk4FqVhqgRidZ45qSsj?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: e8460c56-a72f-4303-a2a9-08de9599ec83 X-MS-Exchange-CrossTenant-AuthSource: CY8PR12MB8300.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2026 18:09:06.5852 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Hswp5+oxonKJowbWNA54ZhTfmZm7aIobrj/WbOTl4aAQo5QUxo+9/1v5tOwe0L3WpomZ7FpDv5kuU5yz/1uVhA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA4PR12MB9835 On Wed, Apr 08, 2026 at 06:26:20PM +0530, Shrikanth Hegde wrote: > Hi Yury. > > On 4/8/26 6:35 AM, Yury Norov wrote: > > On Wed, Apr 08, 2026 at 12:49:38AM +0530, Shrikanth Hegde wrote: > > > > > > When possible, choose a preferred CPUs to pick. > > > > > > Push task mechanism uses stopper thread which going to call > > > select_fallback_rq and use this mechanism to pick only a preferred CPU. > > > > > > When task is affined only to non-preferred CPUs it should continue to > > > run there. Detect that by checking if cpus_ptr and cpu_preferred_mask > > > interesect or not. > > > > > > Signed-off-by: Shrikanth Hegde > > > --- > > > kernel/sched/core.c | 17 ++++++++++++++--- > > > kernel/sched/sched.h | 12 ++++++++++++ > > > 2 files changed, 26 insertions(+), 3 deletions(-) > > > > > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > > > index 7ea05a7a717b..336e7c694eb7 100644 > > > --- a/kernel/sched/core.c > > > +++ b/kernel/sched/core.c > > > @@ -2463,9 +2463,16 @@ static inline bool is_cpu_allowed(struct task_struct *p, int cpu) > > > if (is_migration_disabled(p)) > > > return cpu_online(cpu); > > > - /* Non kernel threads are not allowed during either online or offline. */ > > > - if (!(p->flags & PF_KTHREAD)) > > > - return cpu_active(cpu); > > > + /* > > > + * Non kernel threads are not allowed during either online or offline. > > > + * Ensure it is a preferred CPU to avoid further contention > > > + */ > > > + if (!(p->flags & PF_KTHREAD)) { > > > + if (!cpu_active(cpu)) > > > + return false; > > > + if (!cpu_preferred(cpu) && task_can_run_on_preferred_cpu(p)) > > > + return false; > > > + } > > > /* KTHREAD_IS_PER_CPU is always allowed. */ > > > if (kthread_is_per_cpu(p)) > > > @@ -2475,6 +2482,10 @@ static inline bool is_cpu_allowed(struct task_struct *p, int cpu) > > > if (cpu_dying(cpu)) > > > return false; > > > + /* Try on preferred CPU first */ > > > + if (!cpu_preferred(cpu) && task_can_run_on_preferred_cpu(p)) > > > + return false; > > > > First one was regular tasks, this is for unbound kernel threads. > Both will need. No? > > > You repeat this for the 2nd time. The cpu_preferred() call should go > > inside task_can_run_on_preferred_cpu(). > > I want to keep this check for cpu_preferred() first. the reason being > it is inexpensive since it is bit check. Only if it fails, then one should > bother about task_can_run_on_preferred_cpu which is O(N) as you said. > > I am using the task_can_run_on_preferred_cpu in push task mechanism too. > PATCH 10/17. I get there only on non-preferred CPU. > So can I keep as is? It's more a matter of taste. I just don't like copy-pasting the same logic. Maybe add something like: task_is_preferred_on_cpu(task, cpu); And use it here? > > And can you please pick some shorter name? > > > > task_has_preferred_cpus? Yep, it's shorter. > > > /* But are allowed during online. */ > > > return cpu_online(cpu); > > > } > > > diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h > > > index 88e0c93b9e21..7271af2ca64f 100644 > > > --- a/kernel/sched/sched.h > > > +++ b/kernel/sched/sched.h > > > @@ -4130,4 +4130,16 @@ DEFINE_CLASS_IS_UNCONDITIONAL(sched_change) > > > #include "ext.h" > > > +#ifdef CONFIG_PARAVIRT > > > +static inline bool task_can_run_on_preferred_cpu(struct task_struct *p) > > > +{ > > > + return cpumask_intersects(p->cpus_ptr, cpu_preferred_mask); > > > > This makes is_cpu_allowed() O(N). Even if CONFIG_PARAVIRT is enabled, > > I think some people would prefer to avoid this. Also, select_fallback_rq() > > calls it in a loop, and this makes it O(N^2). > > > > > > /* Any allowed, online CPU? */ > > for_each_cpu(dest_cpu, p->cpus_ptr) { > > if (!is_cpu_allowed(p, dest_cpu)) > > continue; > > > > goto out; > > } > > > > You can keep it O(N): > > for_each_cpu_and(dest_cpu, p->cpus_ptr, cpu_preferred_mask) { > > ... > > } > > This would leave tasks which has affinity only on non-preferred CPUs without a CPU. > > That breaks below case, > 600 CPUs, high steal time and hence preferred is 0-399. > In that state, user does "taskset -c 500 ", that task ends up > going to preferred CPUs since its affinity gets reset in the switch > block later in select_fallback_rq. > > > > > Not sure how critical that path is, but this looks suspicious. > > > > Fair point. But we come here only if cpu_preferred(cpu) == false. > > When that happens, we expect the task running on will get preempted > to a preferred CPUs. If it migrated to a preferred cpu, then on-wards > it wont suffer the additional overhead of task_can_run_on_preferred_cpu > > case where it would be O(N^2) is for tasks which have explicit affinity > on non-preferred CPUs. I see that as rare case. > > For the majority of the cases, it should still be O(N) since cpu_preferred(cpu) > will be true. Please describe it in the comment. > Here is the benchmark data on system where there is 0 steal time. > It is dedicated LPAR(VM). > > | Test | Baseline | NO STEAL | %diff to base| STEAL | %diff to base | > | | | MONITOR | | MONITOR | | > |---------------------------------|----------|----------|--------------|-----------|---------------| > | HackBench Process 20 groups | 2.70 | 2.67 | +1.11% | 2.66 | +1.48% | > | HackBench Process 40 groups | 5.31 | 5.26 | +0.94% | 5.30 | +0.19% | > | HackBench Process 60 groups | 7.95 | 7.82 | +1.64% | 7.90 | +0.63% | > | HackBench thread 10 Time | 1.61 | 1.59 | +1.24% | 1.56 | +3.11% | > | HackBench thread 20 Time | 2.82 | 2.83 | -0.35% | 2.80 | +0.71% | > | HackBench Process(Pipe) 20 Time | 1.51 | 1.50 | +0.66% | 1.47 | +2.65% | > | HackBench Process(Pipe) 40 Time | 2.78 | 2.69 | +3.24% | 2.69 | +3.24% | > | HackBench Process(Pipe) 60 Time | 3.73 | 3.76 | -0.80% | 3.64 | +2.41% | > | HackBench thread(Pipe) 10 Time | 0.94 | 0.91 | +3.19% | 0.91 | +3.19% | > | HackBench thread(Pipe) 20 Time | 1.58 | 1.58 | -0.00% | 1.59 | -0.63% | > > > > > > > +} > > > +#else > > > +static inline bool task_can_run_on_preferred_cpu(struct task_struct *p) > > > +{ > > > + return true; > > > +} > > > +#endif > > > > Same comment as in patch 3. I believe, it's worth to declare cpu_preferred_mask > > unrelated to CONFIG_PARAVIRT, so that you'll not have to spread this > > ifdefery around. > > > > Yes. > > > > + > > > #endif /* _KERNEL_SCHED_SCHED_H */ > > > -- > > > 2.47.3