Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754600AbbGXQz5 (ORCPT ); Fri, 24 Jul 2015 12:55:57 -0400 Received: from mail-am1on0054.outbound.protection.outlook.com ([157.56.112.54]:10688 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753865AbbGXQzz (ORCPT ); Fri, 24 Jul 2015 12:55:55 -0400 Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none; Subject: Re: [PATCH 05/10] nohz: New tick dependency mask To: Frederic Weisbecker , LKML References: <1437669735-8786-1-git-send-email-fweisbec@gmail.com> <1437669735-8786-6-git-send-email-fweisbec@gmail.com> CC: Peter Zijlstra , Thomas Gleixner , Preeti U Murthy , Christoph Lameter , Ingo Molnar , Viresh Kumar , Rik van Riel From: Chris Metcalf Message-ID: <55B26E07.1020005@ezchip.com> Date: Fri, 24 Jul 2015 12:55:35 -0400 User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: <1437669735-8786-6-git-send-email-fweisbec@gmail.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [12.216.194.146] X-ClientProxiedBy: BLUPR0601CA0023.namprd06.prod.outlook.com (25.163.210.33) To VI1PR02MB0781.eurprd02.prod.outlook.com (25.162.14.143) X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB0781;2:RdFDPUPe+ACBy/NFVP48Sd4TrqQ7Y8AsxXGa+2Y7oI4cTwNeSGD8iqhPh2gM1Kj5lcO3FFLMrPjgWcV4psE7rGz44xoDIrhUsWiOcL1b0XCJxYMS2MqqV79eyGzP24fmMta0TGtH2SYPi2oRidf0Nf916peGWNxPBEiyIJdFObQ=;3:2lqK1C6IhMkMu3Ro6W9/TmiVrrMZ6Z5dCxiw8onF2wGEP9yUMC+p6UZqrDN9EClFJiayN6feBebzh0G6xQe3oAWCaYKFoCuBcI9dBvK1gNbgWn2/ZXcnflEBJGUxDnWPZGox5A/fBwTko5DKKSExvw==;25:A5fQPlr00LsClH6zTwQeLxXChWsosDRY9Ar5kQ1QDatLGB9Zd1mffF92kTykYSZh9Qr7jfLgpJoxiXNhmViwLaINfD/qvaQn0Vy4Xpib7OG7gicG3xlnt83fj/7GjNuJCdRTeazU8CZRoiqVzU0Opquqxe9PL7jKEXEwpS/ginM8jQJLTwzkIXxPtbPVEBFq8SlgdLyxRyLM2NI8uX5rxibhQyGPwP9QEenUloVGJy+c7K7FHEVpokgpKg00xRGi+X0oQiuT4ZPrCCKZasXiAg==;20:lFfWa8tW7X5TVOZcFcEHkv/u5l70WUacUC4gECNRzJ0xY6Miiw96u7Fl9bW42I11xR3c/r0jr9nnobU7yREiWXvFYjc1z1PLVakhsBX59a3DTViyf3DyV4Mrw6c7nzV+fHeIOnqb6R5GSK/dcTexfu6+7eL08RH5fADgN/nXE8o= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR02MB0781; VI1PR02MB0781: X-MS-Exchange-Organization-RulesExecuted X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:VI1PR02MB0781;BCL:0;PCL:0;RULEID:;SRVR:VI1PR02MB0781; X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB0781;4:bBd3bhA8nABjXSmc7ZihapMyh45mETaAVxQSVKQBcsDZiCllHuFucJT+X3F4/3k53/Pz9j3OR8nZg6wqxGvXvUPyhd3p/r1WIEost8v46uNYIPrVREMEHzuKm0dNmDVW1M2De7B0UizEmSkUuBAsOOFMXc/2WXx+zfybUmYvsPBgkvV7bTJpw9GYnwEP1tdsOnbq3Lm6BkG5gHE2bJj0G/+UIivNvav4mZytjPVaQ/TYtHQW4IcHwC03eMB8HjfJDgkW8koSwZ1yUpC4BisuPSJ6Qpi4Pv26np73xr/iDS0= X-Forefront-PRVS: 0647963F84 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6049001)(479174004)(24454002)(377454003)(64126003)(50466002)(77096005)(33656002)(65816999)(80316001)(76176999)(50986999)(54356999)(87266999)(189998001)(19580395003)(4001350100001)(46102003)(15975445007)(86362001)(36756003)(83506001)(66066001)(65806001)(87976001)(122386002)(5001960100002)(5001770100001)(40100003)(47776003)(92566002)(2950100001)(23746002)(42186005)(62966003)(77156002)(65956001)(18886065003);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR02MB0781;H:[10.7.0.41];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;VI1PR02MB0781;23:wK6MK6XJKmlPYFmI7DIVzJ9RQMOFWF8/U566P?= =?Windows-1252?Q?AP6SgWbp8ZRRKk4YqObDFHxEq6VtpgepIGRxGVwHBICMPzmJR7akPa0O?= =?Windows-1252?Q?usy7AsX5B6qJ3v7HVC9WO1AHDg5nVSKt2J8MBKXh/lEbRE20zBXO42VW?= =?Windows-1252?Q?GaKM33Vy25DsnSyCzj37fbswP29NGCbY4qZorrIT+bwK1LYkJDg4NfV8?= =?Windows-1252?Q?1O9qPkBpQDsW34o9RnJa6qXdLM/SQR2PjErWBo6mC6zuRaluXpN+wJEj?= =?Windows-1252?Q?p7TeUr4YufI/ZK8waZb4H3BydqKoCKOe/gGPnAKQAnCPeoMeL/duCSIV?= =?Windows-1252?Q?4Wau9rDMtDUB91tCE8dyvZiEpry7GG0MZqNyYAGk05bmA3qGGU1ki2it?= =?Windows-1252?Q?O2nEk+nSk9Eb7lFcnT+1dkCE6v2ixg+V4+BL9RJr4Ze/ybc1VP/tSwov?= =?Windows-1252?Q?qHamT8gsmE0+AAlxoTUaDcITjPAfT42isZ+bJMDw/CNDPTUmUkz7m0xU?= =?Windows-1252?Q?idMtOR579aa3FVzDyTphGNfpy4Ant8Rcaek1GOUnIyBW3S1dfFdB4Lgu?= =?Windows-1252?Q?QCREh/5KrIrYAgXq6p3s5AMB6woRUdhiuPs7Grek/09WXxFMLq0LTVRM?= =?Windows-1252?Q?rT0ZW2QyBbHeDgSrYlex1kpaiZErMJtB7OiLC6FMR8VC7AK6DrDTE2k7?= =?Windows-1252?Q?/s6qso3Uo4LgULda8FKi2T3iRFc+BcYvD+MJtkxc5udkfN3yYMGf/AbE?= =?Windows-1252?Q?3OEeuahhW0HiCLBDHn9dCggkjQu/rdOkt9PIEuYw2GTZ/57DOVMO4njh?= =?Windows-1252?Q?ZfUTfQRwOMYGrMniiQRqhGMYMXrhr6bz5l2tOisVjZ5oNogSDb/gBX1x?= =?Windows-1252?Q?Cd+OlrS2MsTvMICHg7RAWHHKBrr9IqJw8qcR4w5yd6jv9aNq6dv9qVWa?= =?Windows-1252?Q?DLuqAJwM+5ZOiqwaVVQ8u8wa9DIlPofjK0XB5x3vFlMyuEZFj9dfEG/X?= =?Windows-1252?Q?o+oOnP42FPStAq0p5f80SckoNcYE0/bp829iEsVsaeM7/xZAiYjnSCDM?= =?Windows-1252?Q?pfdTvBXDiRFNKJENNJsuDKw74Nt3TmqnDziUzfgVO1Xx1FvFBUFaNQjo?= =?Windows-1252?Q?t+vBk4N9uvpVstrkMRJ35c=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB0781;5:WEG8ZY0dS4BoSUfnZao3mQA1PAVpKvisTsuZiWXqj0S0xWgABaSCDcbVwNoGQ0IvaiGVvxT6Y6jUr7ti7kVGWCjBDTkeVXSHBu4U9Ca4ycoB7lHUa7aLWPdZZKlzK8s7PjWOKjom8uTrRqMIvcWjAA==;24:4UYtgfDAM+A9KFoV3PPmRMtml/mOOWy/NL9R4T5F40Z3B8mQtO2gJ4OoansZbH2f+0pZeXbhhXGlFCGtOHoSlOY2smshNAsyg5lk1qsYVQg=;20:D6U1tdnRitMUUeOfG4GnqJWncs9DLXvbbMCYRMOSfVO5U54zyq9sOzoVNCK2Qi73+jaPqbhVKACS71xwyrmxog== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2015 16:55:51.3552 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR02MB0781 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1598 Lines: 51 On 07/23/2015 12:42 PM, Frederic Weisbecker wrote: > +unsigned long __tick_nohz_set_tick_dependency(enum tick_dependency_bit bit, > + unsigned long *dep) > +{ > + unsigned long prev; > + unsigned long old = *dep; > + unsigned long mask = BIT_MASK(bit); > + > + while ((prev = cmpxchg(dep, old, old | mask)) != old) { > + old = prev; > + cpu_relax(); > + } > + > + return prev; > +} Why not use set_bit() here? It is suitably atomic. > + /* > + * We need the IPIs to be sent from sane process context. > + * The posix cpu timers are always set with irqs disabled. > + */ The block comment indentation is not quite right here. > +void tick_nohz_set_tick_dependency_cpu(enum tick_dependency_bit bit, int cpu) > +{ > + unsigned long prev; > + struct tick_sched *ts; > + > + ts = per_cpu_ptr(&tick_cpu_sched, cpu); > + > + prev = __tick_nohz_set_tick_dependency(bit, &ts->tick_dependency); > + if (!prev) > + tick_nohz_full_kick_cpu(cpu); > +} I could imagine arguments for a WARN_ON() if cpu == smp_processor_id() here, since then you should be using the _thiscpu() variant. Or, you could transparently call the _thiscpu() variant in that case. I think some comment explaining why the approach you chose is better than those alternatives would be helpful here, perhaps. -- Chris Metcalf, EZChip Semiconductor http://www.ezchip.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/