Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932328AbcLLUsp (ORCPT ); Mon, 12 Dec 2016 15:48:45 -0500 Received: from mail-db5eur01on0115.outbound.protection.outlook.com ([104.47.2.115]:27776 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752683AbcLLUsk (ORCPT ); Mon, 12 Dec 2016 15:48:40 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; From: Dmitry Safonov To: CC: <0x7f454c46@gmail.com>, Dmitry Safonov , "Thomas Gleixner" , Ingo Molnar , Rusty Russell , "H. Peter Anvin" , Jan Beulich , Subject: [PATCH] cpumask: avoid WARN in prefill_possible_map() Date: Mon, 12 Dec 2016 19:11:18 +0300 Message-ID: <20161212161118.1095-1-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.10.2 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AM4PR0501CA0011.eurprd05.prod.outlook.com (10.167.83.149) To HE1PR0801MB1738.eurprd08.prod.outlook.com (10.168.149.150) X-MS-Office365-Filtering-Correlation-Id: 3bc6e859-8d1f-4fcf-027f-08d422a9f956 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:HE1PR0801MB1738; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;3:H3aJCn38G7q3vaMYDpx7W+OEe9VURDm57CRvjpLhCMycgKAbmRAKQ8Pfy23Pg1tdPlKFgJ1TsHz/He5leaSEPMSJggVePc9w6Fk2cq8BsWDeM1EjBSmeda08Z+HBb4cZ5nBz3sRzl/+VDWEvLHGfTLFG4ZbF04K8iJlpUgTCzBA6SmfCrjprmMS6LR/dmgOoPgksXbLV+nTZeVnazEXF1ED7UuEx+OeIfcHNxYCRWBrr/8NGXeX6AyCcF1b82hNOW2q8l6TyPEABezWn8/qE4g== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;25:YdpyqUXuR62jrsYUoMfsgInPZp9GnTeyInONn/8NQ1hjLA03jW6NUkmMuTXJUNfsJszEngw64AYG0R0pNsx6ZjnaXba5EwcJoWI2X4sNEl29xyXEQ2aM+WGImWOqSi/FkyMi8yAnIabdQ6UjxxZ3YjlmACF9d9JasXupewnt/OQ3QI6qvXAjALXlczaraO4l7ToZv3EuNmZEpIwzqMexZJohWAO9nX/WYejkUJLBg67rCC1QwOnM31lzvd3WtAoORnEUQz+bI08rXQfLIuJcIwMrag7RiwhVNm76a5ZkQt4PYO9SONfjpbkCPh8ukXVL7Coz0gVr0pNVmo4KEPQZV7LFliRIwNEzqbYEA400sNuSMxIf3xyXTDqDH7xXWnksU8R3nvNQ8QG/7ke0d21J19pgix96uVHlcDfMsyOteZxvFRrFi79oa7+xvfamU9dV4G1+gM7QeFRY7eZv/SfywQwlB0Het5GlGU4Ld+TYcmdiah6ZLyevfirhFfXRGZICOLPcqmb9jGYJdYBtcMfzNtdaLs5hS+ln/GMLvvXSuVBiSc8bnfBjbTaZukAAC8dWopQoTY2GOk8i6MFfIPDYdUqJYq4u1uQCi4f7VdkBBYey8pS9ctuLxF1tYcGzMUsNvcEyOs2Zn8avQLRjgpV9GSVdP9UyZ2Tdu8NI68FP2uZex9eKTnl3V6NhQFCy9ylfbqIJuKScM5cyZI5qLzF4UPEw8xyZLKPc1eIW72EMBVvBMlX0mQLoiBE5GXWzEd5P X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;31:5EyRiicAK6ETvJTk6/JQXo5uYRsn2kP9VHlfE+zKQnvM9DI1i3DE6wc5MjtvpaijF9+PNyy+iwKWlXJ9tCRkIE2zsZz1+U9P/Vb23WOVe9Z0j5ynAbJcaHdV170f0zbX0Jdj9K5wgpMZNXEH9lIIzJ3mNfwrHNBfevAXDEmBrcTkx6R9KlVWSFCbmdY1dUk9R9qHK7OrBl0m8gTqRsbI3R/yC0khupKF03N6QojO3u35xWBChpGgxliDqS9ZUuVsC3Zr8uU/y9BAXGd3tzbYbw==;20:axe367gqrZiPHYQHqTwC2WE6GxJAWd/p47l+i2B1A1+HBe3BXLh6I/2XNpbhHqd6gf60TUGvW5UOjjb5dOTxLvC8HYXkn++BPs52H2B+Ho1fk9dkZKdA2qj9xVaWbTD4f9VedyYlenUPvKx1cgN9rlt86nT5yyt5Bz9gy/jRVy1+4P7vlOV+FZ/Sx6NY2xai7N0yUM0TkKi3orUPdi3a1KXY48qkQtkCSo3zqkbiYZOczTn5+d4tIr8yEIzbsQes X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(230824228335337)(46150409022019); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123564025)(20161123560025)(20161123558021)(20161123562025)(20161123555025)(6072148);SRVR:HE1PR0801MB1738;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1738; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;4:LIFx1zj1NpcBXzP87nOyhhnDIYqJ7Pl7GGabfOh7+SloVPxHxjhWPzRYYT4ZtCAPtqSPUbRHBcCoxBmcnehJmemZRbxDkTbAU4M/MepSC0asp+Jb/N5popCKdQgN2aF8WQ+t91TuuqUaRfhhAYmhEQURvi9mUb0wd1SSavR280l9OgXA3cd3Ix6K5th3zlI8Cc8ea9S3unCkQfydekuCnb421PK0kHbb4TSDYSUoI2/jWEkSgOk8HgyPFOHsZms1MKQMOXHTTA2ZhmJrPEGZ/KaXdXUVfkqtI8TOEyM5SwJIyKpzn0lFrsKoP4U+4ehUYBXqUfNxTRTE7vYwYg3eQXACvO5rDI30Nm5RdyVBoJ7AJipY0JHHQ5TI77unwTo/GAmRnhpawdGAnkwhmsL80NfIvXFeZ/Ot0MxT1N7TfqjLUto/rcW5wOInu7M2hpaBiBMN+H88LkJEGEx3pOMYEfOY3+43flCg/RJiDyp2tq+XxWkELQQrSt6lZxFGdGz9MWPBHoAJ0XehU9BjtxwDBriTH8L1mc5IGJvfqUxtm6Bjf83r6NqOZSexHNmmQ/z2dYVYa8eF1Bf2KrAFBHnpYYzNNg2WGHQwHDBMOzpg1Er319aRS+NlVRjuqIjV5FtIl1IvHOl/OsPeLpQyj8R+rIv9Z6psi94pomnSbcZqDu9AU5A5VILp9wp08Aj3f55h X-Forefront-PRVS: 0154C61618 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(39450400003)(189002)(199003)(101416001)(6506006)(6916009)(106356001)(36756003)(4326007)(575784001)(1076002)(6116002)(69596002)(3846002)(86362001)(2906002)(92566002)(50986999)(110136003)(189998001)(81166006)(8676002)(81156014)(68736007)(50226002)(5660300001)(53416004)(2351001)(42186005)(97736004)(50466002)(6666003)(105586002)(7736002)(47776003)(66066001)(305945005)(5003940100001)(39060400001)(38730400001)(48376002)(33646002)(6512006)(6486002);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1738;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR0801MB1738;23:a6Bu1K6rlW0CfCcyWfoXUi/gfHFQnSwHn9YLb6R?= =?us-ascii?Q?vG8GV2s6VzWvOe/tnyJV+yBx267JPRDzi3JfdFC0lq/lxm7xRlk0U/hvGKfu?= =?us-ascii?Q?T/u5w1M42Hnsi9Ui4lB7GM23oDZClB0o3bt1OdAhmJSxfMV4O6jpZ8bhV+zv?= =?us-ascii?Q?FbZEPgdmg2YfqPGosJPCaQsvoKdjMz3wj2aOEDMEExj/dZT9lzKBUOY6E++3?= =?us-ascii?Q?FhfRDauH/hl2XFnDy7m9pSh23unq4csDy+UzE66Zkco+FxBzeHnqUvH13B2q?= =?us-ascii?Q?oqjhXrnkmgrux0xAIHL2FLdbEZ0j3jCkIVjbmeTuKBtkWDRHd6boKbl1xw6b?= =?us-ascii?Q?V130T+nTkJqaggQk3W7PihTUKBBcdSPhHHbCzpqAQLSvqk/CI97gnGuckDqM?= =?us-ascii?Q?fT06MoEwU4JDd57K2AgPJUDVcD7QAf9cs5dcio3zoGUuoub4w6fr+jmKB5rN?= =?us-ascii?Q?t9Vw8rh7Eiw6qum9k4IruRwoK9+slsssZ/vHmnZw0I/r8VCdgYtbeX+bq/RX?= =?us-ascii?Q?U2GCVB0FEAig26MrqdZbsPbfgB7SkPnDeMbMxe26JkvvbeYMyOuHCge53jzy?= =?us-ascii?Q?eORVF6P5C3dFSX2JVPJOxLUzq8BrhiOK8Cz+S2w9M28cvSzkhSFMIriif4Lz?= =?us-ascii?Q?PHAEkxz57Ctzn5XesHOSnseX3rzWPESsTg3uyyOlkbPSezk77cQXx5H8jhSZ?= =?us-ascii?Q?gpTQFjBsBzk9f0P2kQsGLN71cb5JAifyM9Q0mZDEjPN+qYztR9MT2H7zSmjj?= =?us-ascii?Q?lPaXd9bZQ4Se1rFOCNN4oBVFXh648C60p/V1afUi8pIdEhHINhlLPOaR1CzP?= =?us-ascii?Q?XVUD4hEv+3p9PgA+/Y+P1cAuCyBKT1rxhAa+0pQk62SEM39cgluHL47vopIu?= =?us-ascii?Q?/PgZDOcPGb4j+KNizAhh4QS8dCGXRE5vGCl4iFEzgOzwD8ZHMyNyTpFHJ6t9?= =?us-ascii?Q?2sCyDDmuUExwvovGdJ1jsIA20NUtKyXGr94Zt1AtOd4aTUFzrxU832FtHX8c?= =?us-ascii?Q?xjTYVd1lcl9k0XV0M1fcBi1Ve0SluP36hCm2qcO9YMHjfJN56o3Z1+NSQCZZ?= =?us-ascii?Q?N6Czs0ygWUtiTk+M4JK2FPmfkIeo9edG2PALbGPS1iDYZQMH5H6EvHbWHREQ?= =?us-ascii?Q?jxdvViN9lOeoZ78HmwjmmC1Vxzr3vyPjJ?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;6:3JVs+Wp73ueOVOvmoFN6r3JnSF1JehJ1IDF87v6FAZcmiGBvdWiohjqBS5Z+ErBR910IcqBWLGv1uY1trRNz7e+BsZgEBUFjczMP9kwniioa3Kc0htygyXXyumMj/5rQIY0iueIY58Jj235DhuBuK8Zmu09AaUATBNtL84Csi46RJvvL3KRYg8SyvIxGjTZSkNln8VNt0HiuWWjUxA+EZ7ADbq4LJxvVJ7lir4uNOyDaDXKMuQZrio3q6FUQUzM2XeQLobj6QdyDr6BeF2OLt79DS0pk+xcYymOUtOMmEOKy1bs4pgwGDJt51EUaKA070LA1uGBWMauO7LzFMfwQEVguNHo4ZWHeTmsXL9VqgPxTKuFFJ5D+ZPm5jl4e4SFxRpHA1rs9tCa+B04ekDKVGvbE5ZfJ1aHKzjvUblKdVyo=;5:TcYZgIApaa9GF9WCOyU9QBJqQUocLfrgGvBE4AMYXnTTju/6zy1ge483ig+u8JuzSyZ3ElYE9dg+HBPULDv2K7Cw/6y3ofTrbckjTy9vzGyqxyQNBEMUhNnoIOefsGpBuE2IrnlJ/7U0ExSGO5W/Xg==;24:8u13lVASHwlhtGtHPDhT6hAjhKa0Nz5dcs1qlyUGRB+CVPAd3Y1ru6oDRQAqzz8yAP3poJDGzqYf1pVbpDi6i7AdbMePPN6euMnBFxp+zpQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;7:cBfTRuHnitqsVGAr4ymPEvV5afOCt5Z1HEcV0wOIsjRc3wJ2DOfmuNA8Q9j2R9/AKAffj2jbtrJg1HQZx8aP7/TdUH9ogbbmQk4PhMhlDhIqibt5csLsao6y5NK9ZJ4AskzNo1x7oYp82UgI/mWHMwVISAxrWOBbKDHXOeejqL5q5EFOT5UT62BffKHV8LQGKPIF4YHoQCYzqH0RIkBUJuRP9qkp2lZYaZc+7ymbfagLbLR9InbXNYgYK10pv0XdCFw4gplTXVUhPCqo7TrQCN64ipO/whK245QPFKSwmK27+aH4bS5Ga+0SLHpdNonb+NBNrllA1KwsVKA3cSutFovFVU7pkAM5D/Uc0jSJLkYMXpAcC7dnSh/M2bPBux85a4jKtcTsDpP9n4AwoNzEJTEjrY/iHgQJN/Uv45ldCy4gwzdgocfS+ceDjHKUwTjMD6jz0ik7w2xyxg9MxWhaPA==;20:DaZq+k0TR1n4q7w5SPEdJv70T+4hfMdLnpM55on9odtc2wDbMOblg5ciKrYv896Z34BL8gKq1HiOZrXZta/mv/jG6EO4xoZyoRzXJvc4Ver5+h1QqFupkGYFBn7iu/ZiNtPDvZJzhBOaLottNo+qyu/6miSYwy1JNcLB5I/loqY= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Dec 2016 16:14:38.5436 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1738 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2526 Lines: 54 With CONFIG_DEBUG_PER_CPU_MAPS and CONFIG_CPUMASK_OFFSTACK enabled fixes the following WARN_ON_ONCE() for booting with nr_cpus=1: [ 0.000000] Linux version 4.9.0 (dsafonov@localhost.localdomain) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) ) #36 SMP Mon Dec 12 18:05:46 MSK 2016 [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-4.9.0 root=/dev/mapper/vz-root ro crashkernel=auto rd.lvm.lv=vz/root rd.lvm.lv=vz/swap console=ttyS0,115200 vsyscall=none nr_cpus=1 [ 0.000000] smpboot: 4 Processors exceeds NR_CPUS limit of 1 [ 0.000000] smpboot: Allowing 1 CPUs, 0 hotplug CPUs [ 0.000000] ------------[ cut here ]------------ [ 0.000000] WARNING: CPU: 0 PID: 0 at ./include/linux/cpumask.h:121 cpumask_check.part.2+0x1c/0x1e [ 0.000000] Modules linked in: [ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 4.9.0 #36 [ 0.000000] Call Trace: [ 0.000000] [] dump_stack+0x67/0x9c [ 0.000000] [] __warn+0xd1/0xf0 [ 0.000000] [] warn_slowpath_null+0x1d/0x20 [ 0.000000] [] cpumask_check.part.2+0x1c/0x1e [ 0.000000] [] cpumask_clear_cpu+0x2e/0x40 [ 0.000000] [] prefill_possible_map+0x15c/0x16a [ 0.000000] [] setup_arch+0xba7/0xc33 [ 0.000000] [] start_kernel+0x63/0x448 [ 0.000000] [] x86_64_start_reservations+0x2a/0x2c [ 0.000000] [] x86_64_start_kernel+0xea/0xed [ 0.000000] ---[ end trace 5876da8d2ace83fb ]--- nr_cpu_ids is set to possible two lines futher - omit checking in set_cpu_possible() cycles. Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Rusty Russell Cc: "H. Peter Anvin" Cc: Jan Beulich Cc: x86@kernel.org Signed-off-by: Dmitry Safonov --- arch/x86/kernel/smpboot.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 42f5eb7b4f6c..17167bec7c61 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -1459,6 +1459,9 @@ __init void prefill_possible_map(void) pr_info("Allowing %d CPUs, %d hotplug CPUs\n", possible, max_t(int, possible - num_processors, 0)); + /* Avoid WARN() in set_cpu_possible()=>cpumask_check() */ + nr_cpu_ids = NR_CPUS; + for (i = 0; i < possible; i++) set_cpu_possible(i, true); for (; i < NR_CPUS; i++) -- 2.10.2