Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754487AbbGXRoK (ORCPT ); Fri, 24 Jul 2015 13:44:10 -0400 Received: from mail-am1on0089.outbound.protection.outlook.com ([157.56.112.89]:48298 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752391AbbGXRoG (ORCPT ); Fri, 24 Jul 2015 13:44:06 -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 References: <1437669735-8786-1-git-send-email-fweisbec@gmail.com> <1437669735-8786-6-git-send-email-fweisbec@gmail.com> <55B26E07.1020005@ezchip.com> <20150724171655.GA20925@lerouge> CC: LKML , Peter Zijlstra , Thomas Gleixner , Preeti U Murthy , Christoph Lameter , Ingo Molnar , Viresh Kumar , Rik van Riel From: Chris Metcalf Message-ID: <55B2794A.8040707@ezchip.com> Date: Fri, 24 Jul 2015 13:43:38 -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: <20150724171655.GA20925@lerouge> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [12.216.194.146] X-ClientProxiedBy: BY2PR11CA0032.namprd11.prod.outlook.com (25.163.150.42) To VI1PR02MB0781.eurprd02.prod.outlook.com (25.162.14.143) X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB0781;2:2qapHf8rLq9dSi7J/zNdzd4jRFsyQsIZCdYkpeMtAc+VZjdSTXjVcmdkFNGsRyT0Ae0+mJ1bVPxgviYBjL7OVaUqWoMLK+INdCC90p55Z+P/CkTpkKvzCuJ/fR/VzDh2KpwHmptQoWHs88z9htygAPTZKEcp1hBR2OsMja/d6/o=;3:dD1Zm/PcDAthDNTrnk8wcs+OtdQm2eMvRos4c/4AsJq4IQy3qGxMb+8A+cNKrYbiPGT2zKb3cbsvPDz4DJy/h1IO6z74SbjXbvRah/LsgJpaYmHXHn/SIygjQvMxet/+5lvlvMUCdziOP3C4x1bzBA==;25:G19lidqNTnK3FxgXEyERldKuRkUe46i/p0XnMLgQSa4fCHRC6jILKWrDd0s+Eeq4bAY1n7NsnlSA8aC4q4YdC6HJdzJ3cR2vG7vQGX2PlC5TBSAWNVK4RZQzDo4/zSxFGnVyGt7anLvku8Ktl0RPmMVMIIlnyDj9HGGoJtjfl3wPajtNXZlWWnDovKKhJQGeyaHiK8YInZD+oODP71EcsR1DVbfDyOxJ9YJt5b5rIr9konhWhD5SOptjiF5HGPfKgh4tw4cGzemMlQOXJcwOMg==;20:wUYbqFQxEeieqAU6RU2W5NB2SMH6iH56p66+cseHwHnVoTsd9Tj4OUNm4o/rN3ik2NyPR9/DsMm4qVGf2LLCdNZ7aeqMRt7oxij6TZ3mbJNCdqAFhbVTqm8NYLHw3in0Tbg/EOJvHHyKa3Vhgw8BA022QiE1F+xI1001g3AMrac= 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:1dstxlxi7N1DyqQmEjz5QA67NXDd2Q2XPshAolLZJKg+PCiebhT/z7hH464/rAGxUcvbj7lFouMdZnGeiiMOxgl0mzSOnUXGIkLZ/nvtd4Oh/UEcoNhY8FQOTu4JlVKNxcCngchC6xrMk7lJVB191uZTLV20MH7gScH4gHSbN4gvyxswoLFd1QOFPxV+SIcrA0Y5XSTWLpdIYVmNEU0aEjTuRBDzRbQCvkbvCw9sU9nEtd28hKdr/pZfR0eULbwoLQn7Orc6d6u0lpYrw8BDxM6qEnjPtx2fiftShnmIOss= X-Forefront-PRVS: 0647963F84 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6049001)(24454002)(479174004)(377454003)(93886004)(92566002)(40100003)(47776003)(83506001)(66066001)(5001960100002)(87976001)(65806001)(110136002)(122386002)(77156002)(62966003)(65956001)(2950100001)(23746002)(42186005)(50986999)(65816999)(80316001)(33656002)(76176999)(54356999)(87266999)(50466002)(64126003)(77096005)(46102003)(36756003)(1411001)(15975445007)(86362001)(189998001)(19580395003)(4001350100001)(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:jtt3YYPhlaU5+qiehvy8LycbN4CDUqzIGcLt6?= =?Windows-1252?Q?cRAo8zzbQcQzKM0wJMkz7+GupZRpht10mvWcwIvha9Gw4shbCMDGyTXr?= =?Windows-1252?Q?IdMw5z2x/2/3E0W2J500ug3UO22zoHRxCVn/ZhE+iUM1GTdiT1xyJLY8?= =?Windows-1252?Q?X6mgfuvL0Voa5c9wPdwdXloFWycqPjJLCe6FOMuGyZbNhCrucm4bgPJr?= =?Windows-1252?Q?Rbh7bZohPt388OPKvrFwvP6qobc60ggGkiwlG6JUBEoXbyxImq408yhi?= =?Windows-1252?Q?lCJCWCyiuyTmkUFXuBgBgRaiPPHObeXeuBAFNvBMLdwKGZFSfMSWlnCo?= =?Windows-1252?Q?qRCSS8df6z0NpUKwPlI+LMOoqyuLO//MlqhSoQofPWNmSF1hI7kh+m/v?= =?Windows-1252?Q?HMli0a1fcjKX/SuyGo64TFOZRuY8p2D69u6w+wP6ZpHfgfpfhZAIduBJ?= =?Windows-1252?Q?B1ts5jTsrdumuYKPgjwk4bGlnYrPW6Z7v3SFBJuY15Ut7+rLWCtgd++d?= =?Windows-1252?Q?CGQ340WGXqORaRpBuGXso28u6mtI5VPiU3tb38lUXoc0kSaf18/BA5m1?= =?Windows-1252?Q?53/5nb/75p/akQa7/6HkFa4Oz1GSH8dQ5nfKUzEki/lccrpAi+jvxQHq?= =?Windows-1252?Q?43CajNoZJbVuYf18oBAC2vKoinmkH6tpKxCqBYV+DkLNUJlJ49r/k/Tg?= =?Windows-1252?Q?SdKBmQ0YT6vsvPcD07PYq5CyVrlJcGL1sKRzO8VLXyi6e/eD4xcuGmN4?= =?Windows-1252?Q?778IA+nw8GrpjX7dtypcpqcm8razbm6gU/053eMMaZQKOh2i6iFINIYh?= =?Windows-1252?Q?vzEo3zI56xCHjueo91n0lzJVGAogIowengiX6+wVna1TfwKFv8vXmY4Z?= =?Windows-1252?Q?pF0et5MacpZKtZwtYpoJHRmkutQfy1E5kV8Ua1lqO79THSINrLcoy3rt?= =?Windows-1252?Q?bgOAlTTF5r8T38+c8Rf2vZCWi2pM3uGHr57QGr5vHeVzw/IXeHx3K9wf?= =?Windows-1252?Q?bWLKUdpywxQFcbyg73As8qWNKOQN+lCDl31X704gGHViyqLIURaSpjGX?= =?Windows-1252?Q?zSOujvcOKYofwUXcVUIDBRCJYF/mT8PYizufnmVx2B2JEsI+Bt56gO7h?= =?Windows-1252?Q?p8qnexOgVVoVWFfS6zPNLFSovxs855KPEh/2eTKFKuu?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB0781;5:g19Uqq7BB7ZsGYLLOIvoFhNgzvouJ5mT3V0JU1UISPx8sY/h+9hPS7Fw2jhYEi4/lC0LiBeg+L2LfmkKYJArs/by0Zr+J38PjpkZdQae9Pe86ddEjauPvSWDhqy5ImCxdlWkG7pYOcn+ObGfBpFjEg==;24:oZe+5cBbSpjbhWtxfKqK7O/RR0H5ws2PyZn7kWWyAjlbmN4t2+rLWGxwNdUGj6SLeQCdVBtW7Xito0Hol/JCeB+oCN9d98litK6oEcMri3k=;20:TyUP8DjGTEVgQZlMX/WzFkBMpZNiLro1Pqy9KwqIEUupb3/XbIYVEsdS8nrCryDfYEnptyD6DiC/KOL+cvakUA== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2015 17:44:00.7734 (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: 1346 Lines: 38 On 07/24/2015 01:16 PM, Frederic Weisbecker wrote: > On Fri, Jul 24, 2015 at 12:55:35PM -0400, Chris Metcalf wrote: >> 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. > Because I don't want to send an IPI if the CPU already had bits set in > the dependency. > > Ideally I need something like test_and_set_bit() but which returns the > whole previous value and not just the previous value of the bit. Ah, of course. Peter, maybe we need atomic_or_return() as part of your new atomic_or/_and/_xor series? Certainly on tilegx, and likely other architectures, we can do better than Frederic's cmpxchg() loop. -- 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/