From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756912AbbJAT00 (ORCPT ); Thu, 1 Oct 2015 15:26:26 -0400 Received: from mail-db3on0091.outbound.protection.outlook.com ([157.55.234.91]:65376 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933121AbbJAT0W (ORCPT ); Thu, 1 Oct 2015 15:26:22 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=cmetcalf@ezchip.com; Subject: Re: [PATCH v7 02/11] task_isolation: add initial support To: Frederic Weisbecker References: <1443453446-7827-1-git-send-email-cmetcalf@ezchip.com> <1443453446-7827-3-git-send-email-cmetcalf@ezchip.com> <20151001121414.GB3432@lerouge> CC: Gilad Ben Yossef , Steven Rostedt , Ingo Molnar , Peter Zijlstra , Andrew Morton , Rik van Riel , Tejun Heo , Thomas Gleixner , "Paul E. McKenney" , Christoph Lameter , Viresh Kumar , Catalin Marinas , Will Deacon , Andy Lutomirski , , , From: Chris Metcalf Message-ID: <560D88C7.1090003@ezchip.com> Date: Thu, 1 Oct 2015 15:25:59 -0400 User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <20151001121414.GB3432@lerouge> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [12.216.194.146] X-ClientProxiedBy: CY1PR1001CA0019.namprd10.prod.outlook.com (25.163.136.29) To AM2PR02MB0772.eurprd02.prod.outlook.com (25.163.146.16) X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0772;2:rBw9nfCaaph6gedj7ihf+hLG6IithkaDjoHZdjX0tuVFJ2QTc13rfQaL7S72sarEO4ebD0ohUbTgWOIHtH75tkQGNzwMaQoW1XaY6VY/A0dbvCkURdcHW4kBjPYuy5icMehJ+fshOI1kEua1QNT7E8Qp1ji0htKsXrTH8k99gys=;3:f1Ta669stSCLCo7jpveuxwKl/eyTDbkp18eRNLqQ4yZ5kfWW+MxZNhlv408NxCKpaAohWd5/23oCEh2AqirbSJW+76IOfOhQRA7Ms2zSayoxptMTA88g885745cdGaVrJjDLv9QLecPNIbUATkwybA==;25:PYNFqz05lencPbebvxIUVVx8YXhTo0fWAwYj/7F9SC9AiCJpn3iq/Y1t760AlBxN2NpOL+i4yKgfkvJBWmzdlk1YKot9eOcBbhJzdSsyGVA/IF4SVJOvzql73/oc3OxPF2mTl3Hiz/gz//24+hr5MfNHqElgaFiKZFFP3mMbwdlBuz5IZmYljUFUJZUmQFs0rkiNClmk3iwKbU6dgQ4qTNSvkq37Ow90haSMsTqvQzSfGGBUbGvAOYRzif1rTzZg3QeMIwNujTCto0FALM7GqA==;20:D6nJcDbCj/pA16oEunuXFxu9Ss4+xZj+gsXJqu2C52esav00MDgeDszjsBgmeYP4E4cceTRdpi3Y4B4R+8QK93554EMFjVMi+5f160OnDKbs1IrNj6bJbctjK5V/QAiZZ7DJPZE+J25Y3qAckdGaxGbL+TMbPtX4u7qkN8587Eg= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0772; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(520078)(3002001);SRVR:AM2PR02MB0772;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0772; X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0772;4:2mNeJw1cCLEokMfgWEXUn4oafuB4zYieekGpU4VPrNr0fEA3YIOKOkPUpYkW/ITt8RkobKKFpzoNoo+0f3sYtYhkYBWBMN+E8ZKNoSUlgoSmM+n8E7nWuTrqsAgL0E5hsvefTQ+ybEDdFdIiCxZ4J5Pr+n6ijijnt1Kh/zdJTZ9pouVPpNECRSMJo87xFKd6RKJZ8+vJ8fvOvO0zle4qvSU+KnnqolMOdyPQhI5ZNG9AsRNQFNObQLSd7/T8rVw4FA3JVWmQNaV+9szbLMw+BAK3f2JfFK7RgHcnjCKY63FbYdEvD6sbo0IZfC7OtcwV4rlWUcPltSli8pXsemGkcPoZCpAomXPflB3c8u332VQ= X-Forefront-PRVS: 0716E70AB6 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(6009001)(479174004)(377454003)(24454002)(199003)(189002)(4001350100001)(47776003)(122386002)(86362001)(5001830100001)(4001540100001)(5001960100002)(106356001)(23746002)(50466002)(5004730100002)(105586002)(68736005)(77096005)(77156002)(62966003)(97736004)(92566002)(5007970100001)(5008740100001)(1411001)(65806001)(65956001)(66066001)(15975445007)(64706001)(110136002)(2950100001)(189998001)(81156007)(83506001)(19580395003)(64126003)(59896002)(42186005)(87976001)(101416001)(87266999)(5001860100001)(80316001)(40100003)(65816999)(36756003)(76176999)(50986999)(33656002)(46102003)(54356999)(18886065003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM2PR02MB0772;H:[10.7.0.41];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;AM2PR02MB0772;23:8WgPZFmLYBBCHCsEIKtdBRbcAD9+Y+MCnDb79?= =?Windows-1252?Q?c5ZtqLx/g6hvPyucL/P/fsbr/BC9oxXO5kMiL0qPdwflw7tJ+OzIOrCq?= =?Windows-1252?Q?IhBk0TuVnadGRkyFw1oGH1JrJOzxYRzwtjoYjPZKNK/YqzQP6WYn8Fmv?= =?Windows-1252?Q?1fC77h6OVxpdZc+ntq2o0+ys/xDkdwXFvG0Ed4oaC46a6cuhd0ZW0ee/?= =?Windows-1252?Q?cx4Jb8/P27nZmnie0d+WeOxaQB01cekKTq5oIYr18xlrG/d65ePdtrWC?= =?Windows-1252?Q?sePuB3Oe6QFNpdd4Dgw10u+szQr70q5cNbrzVN00YRQ0q/spO2BF9WMj?= =?Windows-1252?Q?LyFMjhX9Vuz6shD7YxSdP8tLnMDu1e+ogEgg4YwykU3YlyMMno6B2UUb?= =?Windows-1252?Q?TwdalcjqhBwH+Wt3RoV5UTO0+fjQ+lqp3h13+xNyfIjL31MHD1j5Lvbt?= =?Windows-1252?Q?ZjiMFGB9UtOW/DCJciIUoL6k5V/LwWgDObHHo39/Q3veUzocv3CNei/5?= =?Windows-1252?Q?6Q1JJqhUVz1sxYvaq/nIjjHz+bC8N/Ef9+P9AkRGf0RHM4m0CpA32s1K?= =?Windows-1252?Q?nKu+vq+KnT1y3XhjVgq9U401C+xS0qwwyWzQnL5UJvlh94dzh4fP9SIs?= =?Windows-1252?Q?hObhP4N4ToK9lWSfjFKs6qFhtTYgOgr+AgVouMbj0ET/pOPeQxZJGrZI?= =?Windows-1252?Q?cYXcTm9pTMymxX+bZTNAYqrFWr715/32a7r4B/MfvLRMraWBBb+j8tZX?= =?Windows-1252?Q?BM4RjjWjBWpgzZa3WweNy8ihP+RLppPs0R70+0pQ17/zUN67qV4Cfmzd?= =?Windows-1252?Q?FLGY6zevBANhvqBw2u7ecI9a5OMI4fijUw59uYuMC7EIsa1IBQPQivp7?= =?Windows-1252?Q?/aqXgpCin4rqt2rwd9EdoBbp2Az715m8Ah77Rqedk3C6piiNkEnZavpQ?= =?Windows-1252?Q?TfL50ozHKS+vP4Ufv+IYqCg8mHw48RAsDdo1NjkbHT54Dy1vVo+TuMYF?= =?Windows-1252?Q?k36b1ESViycqsp9/4FjnnZdEuTrwfAbCyCHdZVGkJ5hlb2JjjoTf7qAj?= =?Windows-1252?Q?JZjktCCro9GVTlcyri1oxPSPI9s9GVuyabG6go4cW3PfDKy/h5+xMLTY?= =?Windows-1252?Q?jHGl+hpNTcheFTz6Qnjilbk4V8q3MqxYlqzwJxi2FRQ0PW6Van4ScD7e?= =?Windows-1252?Q?ryMazd9bpUhv77dgWkgxsenj5Jz3DOV1Aks4czaANUArap+J20zW4GDT?= =?Windows-1252?Q?vzPd5w33AsZlFyQH/mqpTnU9HDA9LxhtWqQ6UI81Dk9cR4EtZOu4Ztsh?= =?Windows-1252?Q?3+2Fl8CQPfwN+OIkeCbArPcTLZiksm2UG/MLRAg63eSljuvDKLLGjmRT?= =?Windows-1252?Q?ytZ7TpeNyU5KpcbGUazNSMqrRY1BabYbRWx5jiiFd49iV/xoU9elPaIM?= =?Windows-1252?Q?w8xM5C5AA2MKnZCHTtxLOGpSXfDCWdpIOy/QnjpDnaHaUkXIVqIqRV5V?= =?Windows-1252?Q?ENz517IZx1I1DsDfjCQmxV4v+iAX22WZEjBg8L0kz+tvdv9P8NfYMnVz?= =?Windows-1252?Q?aOmWQEn9LXWW+OU3FNJRsTlvXee3HHxmqbo?= X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0772;5:/uF5VB6Rnma59E2GxsPdUeKyDEX9p26+eP7uYHtG/ZllaQBTcNs/Hnhgxd4BNsd0VOCMCmKFdNsrqb1QPctVJlEq7mKzJieWAr388YYaqXRgSqR8klYlH+tak01wKmngN7A/QD3J2nFR42CgS728Xg==;24:RQRrqOu6YU8br8neR1CRvQk7UMp9X/ElS0CVtFrbebPteegAB5wvZVRY17ToLoi+1gPolaWkyfUohn4BJCCQEeXzzaMtBFLt/4fQjyVxfpQ=;20:WGR5XQtgf2BRS971fMe4VfkTNQKebbzCA7Vzl4/SxWDv9CS0fg2gOTFkV0OlzXlsvdd5eBeevaulukS1gN+BjA== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2015 19:26:13.7921 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM2PR02MB0772 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/01/2015 08:14 AM, Frederic Weisbecker wrote: > On Mon, Sep 28, 2015 at 11:17:17AM -0400, Chris Metcalf wrote: >> diff --git a/include/linux/isolation.h b/include/linux/isolation.h >> new file mode 100644 >> index 000000000000..fd04011b1c1e >> --- /dev/null >> +++ b/include/linux/isolation.h >> @@ -0,0 +1,24 @@ >> +/* >> + * Task isolation related global functions >> + */ >> +#ifndef _LINUX_ISOLATION_H >> +#define _LINUX_ISOLATION_H >> + >> +#include >> +#include >> + >> +#ifdef CONFIG_TASK_ISOLATION >> +static inline bool task_isolation_enabled(void) >> +{ >> + return tick_nohz_full_cpu(smp_processor_id()) && >> + (current->task_isolation_flags & PR_TASK_ISOLATION_ENABLE); > Ok, I may be a bit burdening with that but, how about using the regular > existing task flags, and if needed later we can still introduce a new field > in struct task_struct? The problem is still that we have two basic bits ("enabled" and "strict") plus eight bits of signal number to override SIGKILL. So we end up with *something* extra in task_struct no matter what. And, right now it's conveniently the same value as the bits passed to prctl(), so we don't need to marshall and unmarshall the prctl() get/set results. If we could convince ourselves not to do the "settable signal" stuff I'd agree that use task flags makes sense, but I was convinced for v2 of the patch series to add a settable signal, and I suspect it still does make sense. >> + while (READ_ONCE(dev->next_event.tv64) != KTIME_MAX) { > You should add a function in tick-sched.c to get the next tick. This > is supposed to be a private field. Yes. Or probably better, a function that just says whether the timer is quiesced. Obviously I'll wait to hear what Thomas says on this subject first, though. >> + if (!warned && (jiffies - start) >= (5 * HZ)) { >> + pr_warn("%s/%d: cpu %d: task_isolation task blocked for %ld seconds\n", >> + task->comm, task->pid, smp_processor_id(), >> + (jiffies - start) / HZ); >> + warned = true; >> + } >> + cond_resched(); >> + if (test_thread_flag(TIF_SIGPENDING)) >> + break; > Why not use signal_pending()? Makes sense, thanks. > I still think we could try a wait-wake standard scheme. I'm curious to hear what you make of my arguments in the other thread on this subject! -- Chris Metcalf, EZChip Semiconductor http://www.ezchip.com