From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1165198AbdE0BOF (ORCPT ); Fri, 26 May 2017 21:14:05 -0400 Received: from mx0a-00010702.pphosted.com ([148.163.156.75]:51089 "EHLO mx0b-00010702.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S944899AbdEZU0D (ORCPT ); Fri, 26 May 2017 16:26:03 -0400 Authentication-Results: ni.com; dkim=none (message not signed) header.d=none;ni.com; dmarc=none action=none header.from=ni.com; Subject: Re: [PATCH] Revert "timers: Don't wake ktimersoftd on every tick" To: Thomas Gleixner References: <20170203165151.qbpjothhaqctuzx5@linutronix.de> <20170203182112.18053-1-haris.okanovic@ni.com> <20170210170207.3kzfqyfa4ueh7mih@linutronix.de> Cc: Anna-Maria Gleixner , Sebastian Andrzej Siewior , linux-rt-users@vger.kernel.org, linux-kernel@vger.kernel.org, julia.cartwright@ni.com, gratian.crisan@ni.com From: Haris Okanovic Message-ID: <4b4df775-53b8-cdeb-381b-af8cabb364a8@ni.com> Date: Fri, 26 May 2017 15:25:50 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [130.164.62.171] X-ClientProxiedBy: MWHPR21CA0052.namprd21.prod.outlook.com (10.172.93.142) To CY4PR04MB0697.namprd04.prod.outlook.com (10.172.137.14) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PR04MB0697: X-MS-Office365-Filtering-Correlation-Id: c71f0d66-3523-4d2a-a1bd-08d4a4756923 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:CY4PR04MB0697; X-Microsoft-Exchange-Diagnostics: 1;CY4PR04MB0697;3:E3XYztqwCF6/P2B1CW6KzRkbcRfQNBJCPSS73YaVL5/BjGmw0xPK298oV3ftEEOd2V2/GuSHRhK2sB1BY6sRREEkQB0WxK5AYoZvZLcye+6iJplFTWZ6I7IpPeXZlE6yvK9Dpj/H/9AZJNTJMb59n5g4FaYQejZOPiGCAd0DNbWIZJzXZo+XECWauR+oW/DTnniPGgF/Rm3HCK6XzeAfy53rpElyezyfjMWRCkv+rl8qPTtZO9jDRmhv/dpTdMI5DvVMmBiS2OQjd8Q89IaEvBmDrkLPMn0UdmMnGVW1NKWERsqLnl6f9kKegrQ/eUVhF7+cSrUYLw9D/Ig+O2gaOg==;25:5xSe4BqHonQq08d6Ipn05wg/gG/DyFq4tBj/kQHyMTNFZoUnkNZr9hsrss2ALDqU77E0Tnha792vEwFf0QMqSOlJ2Yj7KaI3tXjcfOQiisyBGVFC0Yig8f/orLDSEF4rAvkIbrmYcTcH8KSO8P7zXxSCCLneqAK7LV0Tyh4Z2g9ZaKx3DO24ckdYfWzZJPla8aJTUpeycLmzZzcWQdsM9SaOUQc4Lcr2f11w68+uiavg/5hdzP0Oyb05NROYIHO9/zk2lme1TxwXTdUw0zcwXdSv6UdZ+0ANYuKLgfjV6CPgDrbJ/m1mW4VxSz82BjVpnvbzQUOQHydrbYyAZSXLdtQWtWPU4IJleBCh/zS8b1lUirEFAzrunWOzZcoBkdKc5kduBP6z2eQKwCB4WT+mGqHytbg+jCeW+nXyXaLe8YMU4xnaW04dU7wHB1RyIujC2kGifNF7BZZFiBK+p9sG5BLUABu7e/dBfDdEeQa/KUM= X-Microsoft-Exchange-Diagnostics: 1;CY4PR04MB0697;31:bsbvefOw7FHlFrUO4UH99yAkDJ0sY8gMt9ejJr7CsmQSLbcLr1fV2vKEa7pdxAlrqXPb7QlIXduTezNJbaH9a17zVjeXOaKg517CNgyoiJ5XivPXwnYXOOHXAWa13QWw/9Z+jb6M8GFNep8osmVXNg1++PfZf6IjMGrLAcTBgD/V83DwKHSxtrkVm1bWSQ+xR8nN4RnARAlRybnnpUyju7+hfR0mt7ZoixiG4jFvtaw=;20:zN7jiTcFhHqq4mjvj9rkpx3z2m2HwgmEbCl7tOZlgLdgP1W4tw/DTmikUiZ0smXyMOz7Wr/stBorUbpyje5UHnSxmW/JdnlRSCHCNkzN6z2+D4a/mBKQwedii6CZpGIeDXPhIUnicuE9dyjSwqKFYB4f+8UzaCjTUAAEHe9Xn+mn1PvWtHTBG/2zut7QipF+SeilahyOVBSaapjNEN+4FYTyxHmZNGSIsgaZud9TA2ciYuu8fdUKy/edEd4neZgD34aJwwDNDECfLMdbS1wO2qpsa7LPrxjviRDGyq25f6Nea+Z5AR8/G66TMEC0mYPWn+AtxcmFc/sCHuu2Jyb6iTnwPVEEohemno+rnepmtEZ/VO6aTCLZ4WMtXme5cmPCsO9LJNdmJ4AKZvANV++sTgicn7KooV2nWF17sOSCxUB3wbdYKUOhPLS2c24fNJ1KYmnhnKDdJ2OeE0AA8L26zDXF3/Bst1MOO1p/+tFlqhR0jMcwP0qdUqdyHftm1nvPpNxa4L8Jh6U1FF23S5aA+y6XMcQLHxRFlksYSvAA8dwcA/kM92h2FJHeP4VowGSqhgTI3fH9G+zQubmQARR7xA+VvyZ1qDIOZktzUfAUUFM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(6041248)(20161123562025)(20161123560025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148);SRVR:CY4PR04MB0697;BCL:0;PCL:0;RULEID:;SRVR:CY4PR04MB0697; X-Microsoft-Exchange-Diagnostics: 1;CY4PR04MB0697;4:zwvhyGEKMtcOlOuf7rg4hap5UWj3VZqNJXQpX6d61DsGPFJ9tr9itHLsKIsS9P0uVUiKYaf7QvzERRz16v39mfTV+zcupdR8W/9LDDxE+6NIgnBXITbcqlYZLwld+GCeIeyXwYZ2XQiPwO/RpMbDWJ86r0zXwk6RLQk7GORlxhbcl9gvIdT2080NW0KnfEu+FGIlbEB900JZfYpw0YZci+JAyOcbyG4OwAUGYcj020pI0U9oWWU695jNjIqbYNSuPz2qITeM1O2XMoA79pEbqaWKqdgzJmiMWJUjwnxjNSABlTlpB5n5Pcy3RMFyQ1gKKCymZGGWsLhpiRO3obQfdBz0eOMOh3pl/TSVYdqsyWFZIYnyTxWDShVK2W8ZNzP6JahXOlu9WqOlMNY0Jua1bleYzg3pes22EoeYj5sOA+juQvAScKSbil2huKt9k5XPa9Cgx6pbyxHLhi50SIW8H6hSQdmA1SkFdb2MqmmJzHlsDSEumKPGnDNBh41I8t1TfT4p7Lj2CNhRS7TC5U+dwJ3457ltTjLXVEH+2ld/E3yEXMmy6oaQnIKw+eJq0zgzttxlHBnQEZE7Xq36OK0bg93T916T7Rs8KgADs5Vhcfzadhy2gOt1OWuf2u2MKe30JAJaL14Dao8BvOS3P+JBHiVhoYLv8KQGFvNtoL/RWALkZgzQIp92Eo5ec/LpIO8C35SKUNletJ+zkWtjRmLdlUAtA/Ge1bI4ATCbsZPeC5wgyQHxLC+g+N8eRSPzhRqpEORURAJNOJ8fJkOt0kX+i8w0gfLubawJW987BbV0Stk= X-Forefront-PRVS: 031996B7EF X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(39840400002)(39850400002)(39450400003)(39400400002)(39410400002)(377454003)(24454002)(47776003)(4001350100001)(6506006)(6486002)(66066001)(76176999)(229853002)(6916009)(83506001)(2950100002)(23746002)(6666003)(53936002)(54906002)(6246003)(6512007)(2906002)(86362001)(189998001)(50466002)(50986999)(36756003)(305945005)(54356999)(25786009)(93886004)(33646002)(230700001)(478600001)(7736002)(38730400002)(110136004)(81166006)(42186005)(31686004)(6116002)(3846002)(65826007)(5660300001)(53546009)(8676002)(4326008);DIR:OUT;SFP:1102;SCL:1;SRVR:CY4PR04MB0697;H:harisdt.amer.corp.natinst.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;CY4PR04MB0697;23:VMTlkWIidAtuTJwHKHYZpgKYdu39IcWBbEjLG?= =?Windows-1252?Q?8IR2oObRS29U9UuJYg8u7/FPePqYgoJlsX+ggvmWBt0gZQxLgdEMJDUI?= =?Windows-1252?Q?VltHfSz423icCzNfIlP4J1Lqj+6xahsuhTciKR82vRrtXm/SVSrv8gN5?= =?Windows-1252?Q?7LnGU8KRslqSLXKs52T63oOrzupxymxyN+9BmtjlmCJ02OdG0mpFFdt/?= =?Windows-1252?Q?m4vT4XjnroDznf8eDnm8/nM1M7DeRxmTg5ymKesWozvPDR0UlY5bjJ52?= =?Windows-1252?Q?MGrz/YAWaC5NUHjz7U5vtz1nkFy5CxlIe9CF+gwErnr7Vrboln7zpx9j?= =?Windows-1252?Q?08zI+ZdYaISA/cadgaS8UnB8zy4HHilEvOmIP/l8rHsYbblVyEw3I6/5?= =?Windows-1252?Q?V4+1qg/2HYV+JqzWHHkpl+BAJDkIP3lpYEaGxqgu7VtzguKY1mj2yNxz?= =?Windows-1252?Q?AXnXwhYgw2es8ic3rhMeeNQryqn/r8wfNGidtnOGnG/1NJWhCT/08pt9?= =?Windows-1252?Q?D+VQIN/JTfVPYr9MHB9aVXnO0oMSpbslcU8R9prImr6fG/K3loC2u2it?= =?Windows-1252?Q?4z5vHLGTZXUP/GzLh63QwEtFKTjjD30K1DygkDkC9k+B5MI2zUBu29wM?= =?Windows-1252?Q?idGqFP97k3fftcYSOTkTm01LcKLU7eZH1aVv/Lv/1JiEEo4e6MDTn4pO?= =?Windows-1252?Q?KcNig323cW2RHJ9xD68wfF6AZjQvwuU1gzukuPasFJxEZ2fvm/SHh7HL?= =?Windows-1252?Q?tDyLJ9ITeemAbMB5f/9o/+0OE015pM8Uh0741tAJI+1yhgoeHMnRz+a7?= =?Windows-1252?Q?AREJAO1pbZQuHv+Il7a16JIpyzytRwR3TABoISEYCnfJoNz8kigp75e6?= =?Windows-1252?Q?0p+BEs9cEZBVj0GS6Ahu/JXG4QEBp60UsYMzknBwGZzuwuElOd6EgGcw?= =?Windows-1252?Q?cmCsXwyqSLkYIp5Wu1KMfajVDQDtvJjekV66p2M+nGMeaMrDNvKxqk/H?= =?Windows-1252?Q?8FJPyezhgI6NnikcZpqLRA5v5M03D3CRBvsRu6dohv5Qo77nmZBm+Drp?= =?Windows-1252?Q?4PnSJbRlwXVPt64GXixwUDyckKYDQOXERUQReSfPTM7ItbM3rZrDppkg?= =?Windows-1252?Q?Dvxzt9vepOiAArwOiEQLR3Wk2oQqoKBTJx5RL179um+fC1IqBcAwKx0b?= =?Windows-1252?Q?+vLkbRhvD+mBsQjrdkptLAljQrDhjzMKhHTJN1KXJi8YLfZrUyh5b8Y0?= =?Windows-1252?Q?FOZs3m6VhyueQfrmNbLS7QJRK69QtC0KnzbbZ786mriXbn5ytEGRaYV4?= =?Windows-1252?Q?8t4AcconomY6s3/PB4fJWJdMs0pt67z9jXKcfii+GEISAUMGVeyW6SUc?= =?Windows-1252?Q?g0x5wguQpPN?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR04MB0697;6:+7J6rhi7RBPxR6loeALaH6TDWVTb6umG7/cs2wD26auqYAe8R0gVnbZ8CzgTLxpEMYXT1h0GIImVW35GOMFfoom+tCy/+7PNEnOzswg1K70hgWGaKrnVfC3ydAW/pX0J7XgYKQuiWFr5E4jxq+5iJDx1dXiNIL8pF3neM2UBJAmFu3DNyXPRHoE+xBbbrnDLQYz2l4HPnsDQZHYEDulBRQTF01er64uOmO5gCc2cHjcM196ewdTlAr/WUQINmfhuEIxuQnXBy6mCSQxwNlbs+EC2HUrrHsTfphLEtBIVMdrKcuxDeZfikieYvyEyjWm5SAMW7ORjiVGuVxTRxfZ2NKBCkxA8VtWxXyMa+pN5fWuZvO+DXuWjP7XiFHok2BcX0xdbYaxVa/PC8554jmzChD1mybJ/zw5nJkWsUTMGywBK5L6aOa7wKVpHlMGAhl1lQhll+Jh0Qhbf0MmwMWa8jKAIsrjCFjgbFZVcUVmBlTgHdxP/d+YalMQugkc7dSKg5nRz08LhZAxtit6y7wyGNA==;5:9NaMg4PRQXKZM8zHFfCTcC6yJX81F23GoiwlgZnHEDRz4JHH4evsT0KivSqmLVKdNDW71GMSH27dWzL1V19A0PUzIJZWyUhknXRpDa0w6WD7Ej7RwX6v3Sp+lx2NOkDLUKHbdH2Mgh4wE0U6T1go8P4pICFZ9e1adSTcfXPzSkA=;24:x/LbLFfVnFtn7R449G6Vn6mwCBo3l/SkBXhilWNk6xTvX5bL7f/w2iVCf5fe9S4Ld72xDIWBfyK76XLI1aE8YjvoFUUQLkEiBu4l1f8SxXE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR04MB0697;7:kiOmiW4r2zG8H1HPyi14dFwwyTjDzbS6isJcbauTL0vjIuY+xuQcqLrXAf/DtuJQuoiDzJT5rZp2sBee+MtSbsu9WWEJPpuc5NDo+t2F95ZJaQapG7Q6VhgUiu+GyvNNr7DRiBKoAMwHPyQ7JimTo4c9joHXpE2aO6V3IYvaDYz69qZ1endgJxB0GNaXZxwqGw2vywGz+EsncnsSo5dFay3hyfTAw6YPEWdlvJOR0v+bclS0Xp4jRK+X2F1lPaNsSa01oDSbcTFklpg2CQ4b2AXwBXVv2y2eL59bwJP2PNePb6xwgwdVRQf+64x3aeyp/8K7SrzHkj5N1j49mqsRHQ== X-OriginatorOrg: ni.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2017 20:25:54.1188 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR04MB0697 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-05-26_13:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_policy_notspam policy=outbound_policy score=30 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=30 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1705260366 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Oh crap. I think I see the problem. I decrement expired_count before processing the list. Dropping the lock permits another run of tick_find_expired()->find_expired_timers() in the middle of __expire_timers() since it uses expired_count==0 as a condition. This should fix it, but I'll wait for Anna-Maria's test next week before submitting a patch. > static void expire_timers(struct timer_base *base) > { > struct hlist_head *head; > + int expCount = base->expired_count; > > - while (base->expired_count--) { > - head = base->expired_lists + base->expired_count; > + while (expCount--) { > + head = base->expired_lists + expCount; > __expire_timers(base, head); > } > base->expired_count = 0; > } Thanks, Haris On 05/26/2017 02:49 PM, Thomas Gleixner wrote: > On Fri, 26 May 2017, Haris Okanovic wrote: > >> Anna-Maria, >> >> Look-ahead is implemented by tick_find_expired() and expiry by __run_timers(), >> both of which hold timer_base::lock (raw spin lock) while running. Those two >> routines shouldn't be able to run simultaneously on the same timer_base. Are >> you sure the race isn't in another code path? > > It happens when softirq runs and drops the spinlock to call the timer > function. And from there stuff goes down the drain. > > Anna-Maria will send you the test case on monday. > > Thanks, > > tglx > > >