Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751863AbcDRTep (ORCPT ); Mon, 18 Apr 2016 15:34:45 -0400 Received: from mail-bn1on0140.outbound.protection.outlook.com ([157.56.110.140]:21907 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751515AbcDRTeo (ORCPT ); Mon, 18 Apr 2016 15:34:44 -0400 Authentication-Results: stgolabs.net; dkim=none (message not signed) header.d=none;stgolabs.net; dmarc=none action=none header.from=hpe.com; Message-ID: <571536C5.70907@hpe.com> Date: Mon, 18 Apr 2016 15:34:29 -0400 From: Waiman Long User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20130109 Thunderbird/10.0.12 MIME-Version: 1.0 To: Davidlohr Bueso CC: , , , Davidlohr Bueso Subject: Re: [PATCH -tip 1/3] locking/pvqspinlock: Fix div by 0 in qstats References: <1460961103-24953-1-git-send-email-dave@stgolabs.net> In-Reply-To: <1460961103-24953-1-git-send-email-dave@stgolabs.net> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [72.71.243.35] X-ClientProxiedBy: SN2PR10CA0029.namprd10.prod.outlook.com (10.160.12.167) To CS1PR84MB0312.NAMPRD84.PROD.OUTLOOK.COM (10.162.190.30) X-MS-Office365-Filtering-Correlation-Id: 7a13f2ed-6b57-4305-d922-08d367c07c60 X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0312;2:pwAA6At5r/UIigPUVLPcSCupEiV/wJL7wo0xurLby4RnS9X5dGLkQC4vQ5PxHDCEbOCr5kVesc6A/tMppr+l+QniuZ9kGmMGQXjEnxoxtDFElbr0JfFd5zv6magwC/5wqioXRVj2G6mjji5KT9F/Gypvyp5K+9/vcrMXYu9nVeod8RXBs02WcBR7amThTUNb;3:cKffEaLQ8HfaWMAGdasiM7qLSD2BIPJv/aBrUi9zYh9ctRR2BVDVoBWqdLoJgBezoErG5BLiMzah2gWw1AxvDWkenAPV43dKLWrQ2E/p+4pTUuBwjJLuaOicJBDEzxPk X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CS1PR84MB0312; X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0312;25:U4E4U2Eojwse0PsSLTqqvvLvnxZe3lO2l0+FK9s1UJvE0X/P83ot6kTNLTgAxoFXAn0H3IvP+8xnSUWT7ePJBFu0UMTXGD839BjaJgaNRFdErhQqAR7HdAvxmPOu7LhOLOQ64P4fFMYICXXTNh8PTuCrpSUcrDR0xPEYgEr9Gprs80HP1b6yVWg3g7h2SG7tDX0xg7Lcue9vo8MrUNh7+ZgDdaJTYR5d+aGt/3bMiqmEqea5mh2zEZGzKgGiNMZxeUZo1BbPhOVD4uNi3Q80IYjMXLeB0P1iQ3pVjlsfgg9xMuK8xYcKStnow/MO2aMkW2/ScKC1EApR6yYP7iaWAbSVoxD90p7JB9T8IsnKh+HTCu0wsDIT9XTS6SLiI67KE6ph7j1W+6DWjKjTN9d7WN0FZGPzQoQv0pkqq6x4MlnjWdFtrqZNQ0Xmlt7UsRcBcOBv3WjCegaxAQzr9gMc+aJJ2czABjMJ2NpcrIT+btwpAUeF4HzSogwgu998GT+HZhLeSHpuyRNpQyQsIWQHBImLF84tF/HIYIYjxBvHJbdTbLO8aizYDz0kXOITp48FladFfEzlCm7a9JgWXA0P7NT73DXPkGr+EojtsNpgPOrBuVtqFQdo62+TZfm83fWFAv3nyCpRNOqa3NuiyRlTWQ== X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0312;20:XYd2F1Sa3cCB+U3XB0/uwqvWUC5M+b+XSxkr6QikGITXaA+tS3cZ/cEdBtz6clQtVd1QkDUS0f4WeQPbiSe+Bv0Nc4wLPw9MLelLSaTx+st5a183YUiaFuJuS+OnZd9pgXn4EWHT9X46s+ktt91gGikQl0raujedQoVphwkZ0bXHOvCwezmvCfvJioc4Kw83Z0fycKCjDFc07PwTS9NiXz1PWz5s8z9BvfZgN8VpU09IU5qdQd/rYcF1GbI9kHzU3KGrtLnRPoXY36Ambhhb9st71jyMJMlKdqmRw8yCP5uce2nCq9/wGvXaXBIIuEQyx1lAithm9EANVtGdR9UN4w==;4:wMeIIlLLzICASy6S+cksSbrlHLA9DYxl0plQJrPeVpRqXIIPLST7J9WS+kDxm0xma16E/JaRHgYnewg+ATfe+ggrDPByKwkE5Ce274jSmTDJqTYH7b0eQBVNFJjoCj6vBClnPOBtRMUgU0xXTdQIYm49KClWdqjpZvKncMWDYsQvR7l+w9m8AD5bYJ6/OBfO2aruefPFQULsB5cewoNt0dGiu+ZY1/+PNsjwVFHh66UzIo2Ezocsy9P4IDGDs36plR2mb7414HpvqgevEieK/g6uyG0IC0xyqEHDGyPuYp2QlCxtrXkzMjb8bj7iWofVJ+34cqfQ871aYqUtk5WNYhvre5cC4cC+HOlEkviKv7s9XDrJepGdZbST83OHQ6WxqOOso/XPP2Nr6E3rCbzVgYE2HXE1a+BPBIBr76Dwf18= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(9101521026)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:CS1PR84MB0312;BCL:0;PCL:0;RULEID:;SRVR:CS1PR84MB0312; X-Forefront-PRVS: 0916FC3A18 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(6049001)(24454002)(377454003)(83506001)(2950100001)(5004730100002)(36756003)(92566002)(81166005)(50466002)(4326007)(77096005)(64126003)(2906002)(23756003)(33656002)(86362001)(117156001)(3846002)(6116002)(110136002)(586003)(65806001)(47776003)(66066001)(65956001)(50986999)(19580395003)(42186005)(54356999)(189998001)(1096002)(5008740100001)(4001350100001)(19580405001)(230700001)(76176999)(65816999);DIR:OUT;SFP:1102;SCL:1;SRVR:CS1PR84MB0312;H:[192.168.142.159];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;CS1PR84MB0312;23:cS5dcNd94XanPDs2LKEWV2w+W/pvHYE5v71uCSc?= =?iso-8859-1?Q?O6ALm0FNz3NpmTV7q2DKXRXp1XaCA7FuecmdI9M4pU5nKGpLCneks5Tz3Q?= =?iso-8859-1?Q?b3e9Z/AHlZORVJHD7wWKj0sq7uM0fM/dj74lgWO21pRnLQmYXiGpfaaqGL?= =?iso-8859-1?Q?cmkA3XgKq2X7lh3sEpjGvQF29qOGqwBsXKGap+5q4ogHBoNuCdakBNCOk4?= =?iso-8859-1?Q?wM2W3mP8DXwXiQkF5N2yILzity2ViEr7L1W+eh8QRJBX0KOnWoqmQc+k4K?= =?iso-8859-1?Q?6Ib8RxVHWBP+UO23f95/3ixs84huUyBud/o2G1pM2lqkejtzXWLSOMq9cp?= =?iso-8859-1?Q?lVu0kOjcdcsoM1QWGYdwF432wt9hDpCb5UyHujFByKNeLNMfbZOnKvr4s8?= =?iso-8859-1?Q?tUmJp1G3W2D/nMnxU+KI1V/4oVGlqeW8sT2OyhWRfhiH3ARQlBavA8/xMF?= =?iso-8859-1?Q?yzAOd9SavmjHrTqcrYevDbroUa+RDsC5CJ7nEr/CHSILk16ZZTz+U9Cnau?= =?iso-8859-1?Q?dZom0+uvRf9Ij62AG05ZJ7ktuctChG5TIgsTVA3SosaiVU9Ul+8yEXKBra?= =?iso-8859-1?Q?499CizgoMEyul2h6XKu5nzeP10RCTQ7seprJWzgGEPxPjiuRCU4k/ncDGs?= =?iso-8859-1?Q?sCqGS8J+2OfyM3Na1NAmmuCBUIqF+sg+G5VCgmhkculNkcXtCPib9Aju4x?= =?iso-8859-1?Q?eetsE4SMvTqfqrwH3cqEfy8mIhQKVQi96TqMv92qOgyix+hGelTaFXDzs+?= =?iso-8859-1?Q?z6I1alq6OuvxBKLk2SkeN2GjI70uCAc6DX+p+DEPw3/wuvyHwCHqMdXvgj?= =?iso-8859-1?Q?1CR7+SqbVWRQN4ry7OqOhNdMg8L3L1o3PlNGNL8DVQHsUuxsEmGsSmppb9?= =?iso-8859-1?Q?MbXe8noKjyJNM+r+HysIdG6GdFYecLc2W/ZIE7TLotAihxHJ+KOlqPFF+b?= =?iso-8859-1?Q?qj/xdIstwXF7rxnb+tDUOdt4jkUy8dL9UR6sRAs1efEQ5jRFUwoupwvOXC?= =?iso-8859-1?Q?v598an0H93z1qtNFcXRdClPDioBKJC7jY8iAeC2nSuM3weayr+VL0/nSx4?= =?iso-8859-1?Q?UGAxtxz9nGV2/IEwf0gSA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0312;5:PsTNCZEbfKn/csISX0OmWdIfO3SWCYbxfJljsWeldPvSV3xFS8bWf+c2VwAJP0+tElZQFqQddRM8Fp8gpvGAhjwEAZBTy6/nViVkckqpc1xCotRE0dXi/C6/Ar0cvJ1ySko9r0ymMjjqgqS8B+I/YYDjlUCjkwId1RsFKXHhI9aJniWWjT4bCMWH39UkYoYG;24:XWEMX7JIta+UO+C6rNtfBVQ+UU7mMXAzem0BddYCq9tuM/pLawDu3I0FN5X2Y+NxYYSzwbM2vOB5xK8PZqc5xp09POfPzuwzUbLiH2+qtog=;7:M05KURaQupjiQBkG7kIUwJxKvbv12+px7Fu6eOrU+V2/yfWGPseZ7tbGWenVclAmG1hWo6fgFaV0vfRQAnImU8RVwNr9fFf3zt6OI946WJELsUXZvK3sqc9WDYdPu4qtGC8dVKWo/SPghtxxa3KtD5vIo5SAojhi45Q/5zpZEY1BNnxFvSJIk9cvKeYocKPv/VpadR6CSNHcJNgkCoaKdfIOYtjlPL9tdJ5U+x8xE68= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2016 19:34:40.0444 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR84MB0312 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3733 Lines: 73 On 04/18/2016 02:31 AM, Davidlohr Bueso wrote: > While playing with such statistics I ran into the following > splat on a VM when opening pv_hash_hops: > > [ 25.267962] divide error: 0000 [#1] SMP > ... > [ 25.268807] CPU: 17 PID: 1018 Comm: cat Not tainted 4.6.0-rc3-debug+ #2 > [ 25.268853] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.8.1-0-g4adadbd-20151208_145348-sheep05 04/01/2014 > [ 25.268930] task: ffff88029a10c040 ti: ffff8800b1e1c000 task.ti: ffff8800b1e1c000 > [ 25.268979] RIP: 0010:[] [] qstat_read+0x12e/0x1e0 > [ 25.269043] RSP: 0018:ffff8800b1e1fde8 EFLAGS: 00010246 > [ 25.269081] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000 > [ 25.269128] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff81911640 > [ 25.269175] RBP: 0000000000000000 R08: 0000000000000007 R09: 0000000000000000 > [ 25.269223] R10: 0000000000000000 R11: 0000000000000246 R12: 000000000000df00 > [ 25.269270] R13: 0000000000000000 R14: 0000000000000000 R15: ffff8800b1e1ff28 > [ 25.269319] FS: 00007f3bd2f88700(0000) GS:ffff8802b5240000(0000) knlGS:0000000000000000 > [ 25.269372] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > [ 25.269411] CR2: 00007f3bd2ddc008 CR3: 000000002c5f0000 CR4: 00000000000406e0 > [ 25.269467] Stack: > [ 25.269487] 00007f3bd2ddd000 0000000000020000 ffffffff811cad7c ffffffff8119750c > [ 25.269549] ffff88002d08e000 ffffea0000b07140 ffffea0000b07140 ffff88002d08e000 > [ 25.269609] ffffffff8118d3b9 ffffffff811937a9 00000000102a46cb ffff8802992beb00 > [ 25.269670] Call Trace: > [ 25.269698] [] ? mem_cgroup_commit_charge+0x6c/0xd0 > [ 25.269745] [] ? page_add_new_anon_rmap+0x8c/0xd0 > [ 25.269791] [] ? handle_mm_fault+0x1439/0x1b40 > [ 25.269834] [] ? do_mmap+0x449/0x550 > [ 25.269872] [] ? __vfs_read+0x23/0xd0 > [ 25.270506] [] ? rw_verify_area+0x52/0xd0 > [ 25.271093] [] ? vfs_read+0x81/0x120 > [ 25.271677] [] ? SyS_read+0x42/0xa0 > [ 25.272294] [] ? entry_SYSCALL_64_fastpath+0x1e/0xa8 > [ 25.272904] Code: 00 48 8b 74 24 50 65 48 33 34 25 28 00 00 00 0f 85 b7 00 00 00 48 83 c4 58 5b 5d 41 5c 41 5d 41 5e 41 5f c3 89 ee 4c 89 f0 31 d2<48> f7 f6 48 d1 ed 48 8d 5c 24 10 48 8d 3c 92 48 89 c1 31 d2 48 > [ 25.274347] RIP [] qstat_read+0x12e/0x1e0 > [ 25.274885] RSP > [ 25.275457] ---[ end trace 8558569eb04480ab ]--- > > Fix this by verifying that qstat_pv_kick_unlock is in fact non-zero, > similarly to what the qstat_pv_latency_wake case does, as if nothing > else, this can come from resetting the statistics, thus having 0 kicks > should be quite valid in this context. > > Signed-off-by: Davidlohr Bueso > --- > kernel/locking/qspinlock_stat.h | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/kernel/locking/qspinlock_stat.h b/kernel/locking/qspinlock_stat.h > index eb2a2c9bc3fc..d734b7502001 100644 > --- a/kernel/locking/qspinlock_stat.h > +++ b/kernel/locking/qspinlock_stat.h > @@ -136,10 +136,12 @@ static ssize_t qstat_read(struct file *file, char __user *user_buf, > } > > if (counter == qstat_pv_hash_hops) { > - u64 frac; > + u64 frac = 0; > > - frac = 100ULL * do_div(stat, kicks); > - frac = DIV_ROUND_CLOSEST_ULL(frac, kicks); > + if (kicks) { > + frac = 100ULL * do_div(stat, kicks); > + frac = DIV_ROUND_CLOSEST_ULL(frac, kicks); > + } > > /* > * Return a X.XX decimal number Reviewed-by: Waiman Long Cheers, Longman