Received: by 2002:a05:7412:31a9:b0:e2:908c:2ebd with SMTP id et41csp4970948rdb; Fri, 15 Sep 2023 19:54:29 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHWeVnQ9PyBXkQhz1+P4NODnKddn3EP4Q73hsca21DPoKhax8DT3T5K+89mg/KMYyyStfQM X-Received: by 2002:a17:903:2311:b0:1c3:81b7:2385 with SMTP id d17-20020a170903231100b001c381b72385mr5049551plh.11.1694832869588; Fri, 15 Sep 2023 19:54:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694832869; cv=none; d=google.com; s=arc-20160816; b=fSFZfdPu6NNtl9pS71SiO5HFOF3MXV785TFEjMCpo5jdRDYiO1SorJZCi0fMwq9VA8 ra+1qMrtRKC7l3ZZT9N0lt8c+Iq8SbB31lVZpyKnw43iP41LfO8WnT2ceoG3c1X5y+VX k0v0A9BPcfn3jXAh+Kh1D5vGKKR56SQg8+i6xuG8tFs1m/aMq5ZKsb2FfGZ0WLRTDzbm Hm4GZ+vHHVIWSS/FhduheClHmkPuBxWER3bTpnaF4LlPsbiHNdiCpRuU0W11Oq/cR4dG NH/cIlbR4xnX8vyMtXL0h2zEWba0QBi/vHN4TwOYx8ol1SYBtyjrOFE6JFy9jbQS+ByQ yaig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:subject:cc:to:from:mime-version:message-id:date; bh=y32gnlb3oryldBhW8tsljmoAmVF/rLUVsot3BFN5O3A=; fh=woCpRK274ZhnjqMbZE9q8M63Is2QpuSLMNjMovWB6TM=; b=pQpOHd3ZPFS6cUoA0cpskOx/Gd6BtWs1UjGBCz8TCsmIKLsTQjjXegIp/wpUTrwaM7 SYxveK8Q6VtrdNdJbIH1cSuWI8RyqRNCcRn1RQ2W9SHxjzyyZwbnLaveudEXQWH04vf8 z8hx//uou98ygVoSftsbJsszG4tDNk+/dD1MM4aptmi2szy1Djr3FHssEtUDopRNafi7 hsYOvKtGgbndtsiZypfgIgCrv3d3TpFYgfUZapGosPbox5ROedKMrrPkOE1kUVjjkfn8 MVyaTwjRh53Hm5VzXmJUsAQs9+3kRu4stjLy+VwOzOOBb3cfqXpqkZQjwQSXsRQop0c/ jVJA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=zte.com.cn Return-Path: Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id li6-20020a170903294600b001c3267ae318si4148486plb.247.2023.09.15.19.54.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Sep 2023 19:54:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=zte.com.cn Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id 43090853ADC6; Fri, 15 Sep 2023 19:38:29 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238686AbjIPCiA (ORCPT + 99 others); Fri, 15 Sep 2023 22:38:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40782 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238688AbjIPChw (ORCPT ); Fri, 15 Sep 2023 22:37:52 -0400 Received: from mxhk.zte.com.cn (mxhk.zte.com.cn [63.216.63.35]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DA4E5FA for ; Fri, 15 Sep 2023 19:37:46 -0700 (PDT) Received: from mxct.zte.com.cn (unknown [192.168.251.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mxhk.zte.com.cn (FangMail) with ESMTPS id 4RnZwR0FPfz5B101 for ; Sat, 16 Sep 2023 10:37:43 +0800 (CST) Received: from mse-fl1.zte.com.cn (unknown [10.5.228.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mxct.zte.com.cn (FangMail) with ESMTPS id 4RnZwQ4t8Yz4xVbq; Sat, 16 Sep 2023 10:37:42 +0800 (CST) Received: from szxlzmapp03.zte.com.cn ([10.5.231.207]) by mse-fl1.zte.com.cn with SMTP id 38G2beqw084113; Sat, 16 Sep 2023 10:37:40 +0800 (+08) (envelope-from yang.yang29@zte.com.cn) Received: from mapi (szxlzmapp06[null]) by mapi (Zmail) with MAPI id mid14; Sat, 16 Sep 2023 10:37:41 +0800 (CST) Date: Sat, 16 Sep 2023 10:37:41 +0800 (CST) X-Zmail-TransId: 2b08650514f5ffffffffa81-afa4a X-Mailer: Zmail v1.0 Message-ID: <202309161037416349176@zte.com.cn> Mime-Version: 1.0 From: To: , Cc: Subject: =?UTF-8?B?W1BBVENIXSBjcHUvaG90cGx1ZzogZG9udCBvZmZsaW5lIHRoZSBsYXN0IG5vbi1pc29sYXRlZCBDUFU=?= Content-Type: text/plain; charset="UTF-8" X-MAIL: mse-fl1.zte.com.cn 38G2beqw084113 X-Fangmail-Gw-Spam-Type: 0 X-Fangmail-Anti-Spam-Filtered: true X-Fangmail-MID-QID: 650514F7.000/4RnZwR0FPfz5B101 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Fri, 15 Sep 2023 19:38:29 -0700 (PDT) From: Ran Xiaokai If system has some isolate cpus with "isolcpus=" parameter, and user try to offline all the non-isolated CPUs, kernel will first report a warning and then panic when taking the last non-isolated CPU offline. Kernel should not panic when user managing CPUs with this meaningless behavior, so we add a check for this, which prevent user taking the last non-isolated CPU offline. [ 19.415123] WARNING: CPU: 4 PID: 80 at kernel/sched/topology.c:2366 build_sched_domains+0x120c/0x1408 [ 19.430451] Call trace: [ 19.430792] build_sched_domains+0x120c/0x1408 [ 19.431334] partition_sched_domains_locked+0x234/0x880 [ 19.431878] rebuild_sched_domains_locked+0x37c/0x798 [ 19.432436] rebuild_sched_domains+0x30/0x58 [ 19.432902] cpuset_hotplug_workfn+0x2a8/0x930 [ 19.433383] process_scheduled_works+0x178/0x3e0 [ 19.433878] worker_thread+0x174/0x2f0 [ 19.435204] ---[ end trace 0000000000000000 ]--- [ 19.438650] Unable to handle kernel paging request at virtual address fffe80027ab37080 [ 19.456414] partition_sched_domains_locked+0x318/0x880 [ 19.456899] rebuild_sched_domains_locked+0x37c/0x798 [ 19.457361] rebuild_sched_domains+0x30/0x58 [ 19.457761] cpuset_hotplug_workfn+0x2a8/0x930 [ 19.458175] process_scheduled_works+0x178/0x3e0 [ 19.458599] worker_thread+0x174/0x2f0 [ 19.458948] kthread+0x10c/0x128 [ 19.459268] ret_from_fork+0x10/0x20 [ 19.459728] Code: 1a850042 b9441883 f862dae0 8b000021 (f945003b) Signed-off-by: Ran Xiaokai Cc: Xuexin Jiang Cc: Yang Yang --- kernel/cpu.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/kernel/cpu.c b/kernel/cpu.c index 6de7c6bb74ee..09ecc19d2999 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -1502,6 +1502,7 @@ static long __cpu_down_maps_locked(void *arg) static int cpu_down_maps_locked(unsigned int cpu, enum cpuhp_state target) { struct cpu_down_work work = { .cpu = cpu, .target = target, }; + struct cpumask tmp_mask; /* * If the platform does not support hotplug, report it explicitly to @@ -1512,11 +1513,16 @@ static int cpu_down_maps_locked(unsigned int cpu, enum cpuhp_state target) if (cpu_hotplug_disabled) return -EBUSY; + /* + * Ensure the last non-isolated CPU is not offlined. + */ + cpumask_and(&tmp_mask, cpu_online_mask, housekeeping_cpumask(HK_TYPE_DOMAIN)); + /* * Ensure that the control task does not run on the to be offlined * CPU to prevent a deadlock against cfs_b->period_timer. */ - cpu = cpumask_any_but(cpu_online_mask, cpu); + cpu = cpumask_any_but(&tmp_mask, cpu); if (cpu >= nr_cpu_ids) return -EBUSY; return work_on_cpu(cpu, __cpu_down_maps_locked, &work); -- 2.15.2