Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S939000AbdDSTyH (ORCPT ); Wed, 19 Apr 2017 15:54:07 -0400 Received: from mail-db5eur01on0105.outbound.protection.outlook.com ([104.47.2.105]:30496 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1764089AbdDSTyD (ORCPT ); Wed, 19 Apr 2017 15:54:03 -0400 Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=virtuozzo.com; Date: Wed, 19 Apr 2017 12:53:44 -0700 From: Andrei Vagin To: Keith Busch CC: , Thomas Gleixner , Xiaolong Ye Subject: Re: irq/affinity: Fix extra vecs calculation Message-ID: <20170419195343.GA24395@outlook.office365.com> References: <1492104492-19943-1-git-send-email-keith.busch@intel.com> <20170419162027.GA7428@outlook.office365.com> <20170419170359.GE16224@localhost.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset="koi8-r" Content-Disposition: inline In-Reply-To: <20170419170359.GE16224@localhost.localdomain> User-Agent: Mutt/1.8.0 (2017-02-23) X-Originating-IP: [207.91.133.10] X-ClientProxiedBy: MWHPR2201CA0060.namprd22.prod.outlook.com (10.172.59.34) To DB6PR0801MB1973.eurprd08.prod.outlook.com (10.168.85.146) X-MS-Office365-Filtering-Correlation-Id: 44b2907f-38b2-48be-6018-08d4875dd19c X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:DB6PR0801MB1973; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1973;3:S+kxkauHxdkGvLqegOj4vjRLaHC3NFv6N/0Hbp4NoEUsI/1R1yL8Xmn9hvW0ABQbt/iq6omFiykhJaLYIrOvvSiMO19ZT66hjq8+2By6Fp4srqeUZB/o4Ow0I7hRXLX8KeN6C6XyUkCKreS3ZrKKE6Y9n3t4UpqaYOYWOSB67t7XLS0liYz93/+1BAxt7P9FuqVuAermzEXk1tXNxFUDKgSwQCwQjC2ST1yNxPDbV/vqKPQ4MpI/ibAtAsvEP6kX2d8TUUVRAUPqQ75aSeoyCWb5Nv8fEz3Gw943/UvhMmmhrKTwTn1CVmpiWhL62kTgrtyt6CvIQxQ8LVeyf7ADqw==;25:A7WY1GU1nFYeqHPrbT+Tm3nAfkadvS3V1n9rSX7ol1dn+KkK3TMP9FFVS5gqo+++v+4QA5QMwxt9OhbVWu9JQ+7OZjkd1yslQQlaB6XyS7vadtQ10IDU985dq4ns2i4a9rP7B7pMwMRBZXg5x4vtqBd5nYfdz5Ab7Y8ddgU4h8mDF2kZ9J0gdKK9zAoOd0tQJFBAVgUd1nVSHVY2MRWqBZAX1gH6HJMl9P9fQf85fkDFJBf4Hee2yvkzxSnuPqe4x/tLlisxBsNgy++S+h02N1XPaJnFczqPM/2jjlwx0sbP3KvK+Ye4X2UJ/+GC0QjUyG8F2kal0V5BkfcGWiq+B/PJZlweLGy7z/qF9+mD+xGw19HzhYrXd0IrKS2jpISQxV9oskafWDkAPlUos53+LaL0Kr9tqd4vgdzjCkDRE7HIFl+jahJQgeTt6ACggx5z1lEiU/tCwFIk5dtASpK/CA== X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1973;31:BmVAaJUa4fkkMR269dKQEfzb9PjbegMjVCGP9awpqhFvSan+74SAmpCqhg8/+y12Jg/PR8hbLpUYgAVi8srEYlQVa4OwBZn/M3U1lZECceR160oUL+QVNthW3R1iPoiYFl+boJsQGutvY97WVYwKc+BoW2N1grJpiXCAaQWed2uEa7epQe0mr/+2Sb20ZuG/bc4nQ3+kMKR4av2FJp7ikSwjSd6L1PhgV0kg6jG42OSc4Vcg61VfSoA/V1WmS3YjD9pk4jf8gSJcGJ0JJ5dO1Q==;20:KH/cxWy++PW5/iM0sGeDki4FEC5eLRiE883DE37pjNIQr+5sBoSIC9ymwayWogYA+6j7BUVL4J+x/gFg8HVemgHw6sF4fUXoy3PbGfYLq/Et2FRE6RGGn7Q/EALfU3I/fUHTRhri8D+qXREkjPOTH2Yqw7LDbbl7hK1wbqFQIu28wL99PEOUe21msrVY51Nuupdhw3R6y/i3Isk2F5mpwFM+FEiyPEM+lzGuSejQQRTYwaPQRRklkstnxCpwhx0Xw09BjcmysE/D62W9Bz/WdWn9J6GdXsVIsxk3bL0LAvNVnF15GvXgQUjD4KjT5gQ+kBUEzua1GlMsKswY2QrWdmaA+QGAWg3H4XMxd4cyvLGnSl6OSfoQ0C/FLN1DMMcCsrTG00eRdLeAHZMGyKK0xhSFaSs0TD6RJ5ZnrR3rFGk= 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)(10201501046)(3002001)(6041248)(20161123560025)(20161123555025)(20161123564025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(6072148);SRVR:DB6PR0801MB1973;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1973; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1973;4:aqG6M5PTRnzWG6RPHfJwvvcyNmjyXeM43kALslsaXpa6LeqbaZkfgW4n4Ic8Juh3Q7yyQU88o5MpyU7IwhIaUGdePTTMO6TGYB0jclf1gINBrjTgsiaAhl9/48N8ZrqOvgCvRGYGDRr+1I6f+5XPMcAywzVt73zRodgni81G+65GW5v+cPZ711Yp3vYQTPN5gjmLNTgcATXgF69+aI8NPG8yd19RQ65bNhI32TLuw0SEP+xwffnCef0DRaMPUQMAuxwtdVpkXRAPYpdOpQDdjafM0gz10GkM7fi7rTmWAboFlzGfOMwFw61mDxir7XjrmMiuAWEFmUuYaQkJU6JYc84X1wxcYu25cfYUMEaK/wo2eGPE3iDbn3sWOZfJ0QHUqN8Nmpd/oAIm49BLUbFVNzS2xHdAeuAblM9vfJTjZ9OJEzFGcSqO4vvq7JcvtUvaiYo4FZ8uKQriNLoCvzhhhjnG8dyjfQwhtQzo3tki/0H0TXQuhnSCqlgIrtRrUfWbKEWfgc4vDtcfZ1neGOtEtbnQCt62gtID1Pr0QFOg9Fr5fOMpD+UtzA4zb3KUtJpza7pj9kkrJsaraxRAj0nCxilbYrABHBcbnONLZXoDVYJJdtm9Sc77M7F9uK148VRmlTOUgNmHW1UjW4ov2SEL6beMqs+pR2vjeg/tErFYE7DhqZk/gNB9g6KwyE3biptsya+65rd4e7pJ5AjVGIYyWA== X-Forefront-PRVS: 028256169F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(39410400002)(39400400002)(39830400002)(39450400003)(24454002)(4001350100001)(53416004)(2906002)(54356999)(42186005)(86362001)(189998001)(50986999)(33656002)(50466002)(76176999)(8676002)(81166006)(47776003)(66066001)(55016002)(9686003)(54906002)(1076002)(3846002)(6246003)(53936002)(6116002)(83506001)(38730400002)(229853002)(6306002)(110136004)(6506006)(5660300001)(305945005)(7736002)(6666003)(2950100002)(6916009)(23686003)(25786009)(4326008)(18370500001)(26326002);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1973;H:outlook.office365.com;FPR:;SPF:None;MLV:nov;PTR:InfoNoRecords;LANG:en; X-Microsoft-Exchange-Diagnostics: =?koi8-r?Q?1;DB6PR0801MB1973;23:0Ns37kiGqbRH/AeOJfkpscJcrTEJH+psT44Ux1hj0?= =?koi8-r?Q?ORT+qGVuCBn4KZE9IGXNxGwirSOTvO/Ibsw6AbQzvfBNuMWYDsvrMnR8MZJIJ+?= =?koi8-r?Q?w6VOwUvrxHzmcICRbk+IjmAOKu9/Oc/1uiWk8QKl9wX+5mRlEGh9fP63xHWdvv?= =?koi8-r?Q?+1Eze0GRP0ybypZhijkSIHa4yRgIPM0Vl3JgCILrtGmdFNpILyj9Y+ZvOGgxl3?= =?koi8-r?Q?hIkT4cL6PfkV0mYfw5O8oDD0Oe2EswidfnxTfOhfvWJ6aeMyclqz0E1au1acLV?= =?koi8-r?Q?SNmvxV9vWchHPdQQGmMaXVCHzY2Y9A4GH/qVHV3lj9rF9NXuurk2pQl8FPPCfJ?= =?koi8-r?Q?oDz2g1oeD7kmNiaCD10KLvIeHDKOQpxMYR7QXxq+jds579QPMEU/LG+77HSWkw?= =?koi8-r?Q?nJeuPVCIAnvgWyY4T4d3MmVr59iwPJ9XpSN8gBAQ28kiw0UIHpr4w2NOISqFzf?= =?koi8-r?Q?wH73ShM4cVp7BApAIF73WfVD6iRDdZeq5hf0Ahix39ZshPt8jyF1hdi89YRHK2?= =?koi8-r?Q?6XYs3HzdnsxK/WF9kdncyWSJe/TIogQGcxzJVlMYLgI7srZ4Pro7dAsojzpHpw?= =?koi8-r?Q?5JRA47doqDP56LbmH3FW0cmDutF7Pbtp/7Vy1+M47LbgrsiPLd6tw2ojYHgYss?= =?koi8-r?Q?2c36RWisdYo50hBgazbucHIKzcjnf0UEEDPkVGnRsKd6npAUto9b3mClBhBfrJ?= =?koi8-r?Q?w/l2SMXoaKdc9b3bjUrWzHirI7e/QLd31dNx/WEyQbRo1otnRzRLY80xq+luiX?= =?koi8-r?Q?B7lhmLqL+WJAuvC+3K/JaqBIMQuB/Wg8zcfHzS5otlqtL54OvQGaLYKeZXzBOq?= =?koi8-r?Q?IXxjT//T0nsiWmVFOce5avtWYDYMpiMcfKOZNFUIHhJiw2aLsCRfggJtXnSc1h?= =?koi8-r?Q?4E1eQRLhL+sft0bn3c2O2Gt1yH/uz+hfA8HMkctLjiahepUoX8GbxwvfXmKjjk?= =?koi8-r?Q?QBgy1aYnrYauRnF9HvrUD2rwKV+Kyn7DGO73PcwxBk48qUOMSovrg9byBVenD2?= =?koi8-r?Q?+bXiRY2H61U4i+ECuICDQVuYSqbzfwT+uFC58iZpXwKbO8tVqKsvBGAiSGeWcU?= =?koi8-r?Q?rIipomrKLlGj3xIQ+TgZoOFAzTWiDY1cW2qG71nwbPsyBTYNeZJl7sTMAdzjnW?= =?koi8-r?Q?9YMus07cj/13oVMhw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1973;6:gelaPHglPgh5T8aMBf+n6YaahL79yyxKvunFd2OMR1b2i9s2jWrzZCSl3Wy6In8hIpmdkKdXWESJPUj7ERxV1twJv5GyxrK75xtumdq8/1zm1SgBad4PEny8mtoLHNf2WxNFvl3Njoaw7tkipIVDHCJo5nDJquQAJohU1H+kl5gyOOSd7g1lwwwExNiBlk5u3Mp3iml5XfkKhkVCuJVUxwmlljPotV1OrYr/BJJuZGp8xXiVD5GvScnrenpIEZbti2ocRgVdLCG+NJa8v0QZIEtv7k/3cH1f5lWTp9L2BvdXcrY5wsduYZSxy5Jezc866gHgU3IGtK1zW9mDyPmsdvMD+GJfq7arHN8M+QD9cAYwNk3mbDg0ARUHEgNgtvbdP/C+NMfwlY2rQdCG1rhIk5tifHRB7mKgWVT7ip0kwwyM1u0+gQK0KxCn4E68rXOgBHm37pu7+6EEcYEa0EalrETMwBclNwHShebVWYLDkdXkVbGDkIsgxnf4LrNyfoQxIL6h1XNEglGRHs0nVc0Tug==;5:6qbMGmhPw9dWEcl0V2krBe2uYQitOpnIaz4aYWAak9Y0A3s15q/ufpMXjDeImDeza0aAKFC0gQI9C0bgJIwn66ryrIqksTlJ6fYL/J5aQOShqodj0GHl67PXdY3tdPQ5ne8MX8QoG0pAswzJlDjuxg==;24:eynlWXCfpav50SY7fS41oFLNU8d6BgGwzGNjPbEPN32AQ76+PxquwUxGPO2tuXOwM+MAOFuLTLhM9UC3CNwbxGs0qV3+xdjVVH+UPT67OmY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1973;7:UC5g0FUXcHJ4KJyHDe4a6+HgttDSf9ZBWHecsBYY7l/eIoD9qbsOzrvgzMzwd8h6E8GoaPQYjbfdecORdVAZcyUid+mtxFA4jsvjQpM0E+ZxIdtsCS5RXLbUa62rwT+v5M5YsQ6i0KAlUBDyTaT3WUcPdAKy3eH101soqGu1k/xYivXyXReXpFOeEBwCZ8miAdtrmopg5h0/91ehWOUbGmALcsd96E3T7klqUsocRd4jrsGu5wtlW0t1U/SFP9eF4Ft755ghD6fu+1+5fDMu/yWFdVgxQDqsUkAYAjXlgTuAcDVXSrxpLbq6hwkDW/pgL92bwwtqMtkeqYeml4N5Xg==;20:IRaY1sjsHHy3Cz918eNzxEqCR6oqTwuzjj/1l0Bp3HOn2IejvdLCbGfsLmwf0u9YPUn8rpyyMaEV/uVFcC5MbztwAIv4liMAIZBqSgCgcz5Cpc1GVPe6H0h2hjE5XEh22Ydl1Gxl/smBADRFKP/cIsWqyYYc+TUkUehnZWTcmyw= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Apr 2017 19:53:57.1786 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1973 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2665 Lines: 67 On Wed, Apr 19, 2017 at 01:03:59PM -0400, Keith Busch wrote: > On Wed, Apr 19, 2017 at 09:20:27AM -0700, Andrei Vagin wrote: > > Hi, > > > > Something is wrong with this patch. We run CRIU tests for upstream kernels. > > And we found that a kernel with this patch can't be booted. > > > > https://travis-ci.org/avagin/linux/builds/223557750 > > > > We don't have access to console logs and I can't reproduce this issue on > > my nodes. I tired to revert this patch and everything works as expected. > > > > https://travis-ci.org/avagin/linux/builds/223594172 > > > > Here is another report about this patch > > https://lkml.org/lkml/2017/4/16/344 > > Yikes, okay, I've made a mistake somewhere. Sorry about that, I will > look into this ASAP. > > If it's a divide by 0 as your last link indicates, that must mean there > are possible nodes, but have no CPUs, and those should be skipped. If > that's the case, the following should fix it, but I'm going to do some > more qemu testing with various CPU topologies to confirm. I printed variables from my test host, I think this can help to investigate the issue: irq_create_affinity_masks:116: vecs_to_assign 0 ncpus 2 extra_vecs 2 vecs_per_node 0 affv 2 curvec 2 nodes 1 and here is a patch which I use to print them: diff --git a/kernel/irq/affinity.c b/kernel/irq/affinity.c index a073a6e..c43c85d 100644 --- a/kernel/irq/affinity.c +++ b/kernel/irq/affinity.c @@ -110,7 +110,10 @@ irq_create_affinity_masks(int nvecs, const struct irq_affinity *affd) vecs_to_assign = min(vecs_per_node, ncpus); /* Account for rounding errors */ - extra_vecs = ncpus - vecs_to_assign * (ncpus / vecs_to_assign); +// extra_vecs = ncpus - vecs_to_assign * (ncpus / vecs_to_assign); + extra_vecs = ncpus - vecs_to_assign; + printk("%s:%d: vecs_to_assign %d ncpus %d extra_vecs %d vecs_per_node %d affv %d curvec %d nodes %d\n", + __func__, __LINE__, vecs_to_assign, ncpus, extra_vecs, vecs_per_node, affv, curvec, nodes); for (v = 0; curvec < last_affv && v < vecs_to_assign; curvec++, v++) { > > --- > diff --git a/kernel/irq/affinity.c b/kernel/irq/affinity.c > index d052947..80c45d0 100644 > --- a/kernel/irq/affinity.c > +++ b/kernel/irq/affinity.c > @@ -105,6 +105,9 @@ irq_create_affinity_masks(int nvecs, const struct irq_affinity *affd) > > /* Calculate the number of cpus per vector */ > ncpus = cpumask_weight(nmsk); > + if (!ncpus) > + continue; > + > vecs_to_assign = min(vecs_per_node, ncpus); > > /* Account for rounding errors */ > --