From patchwork Sat Sep 16 02:37:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Yang X-Patchwork-Id: 140893 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp1443358vqi; Fri, 15 Sep 2023 19:42:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFPxjbEV2eK+iGGOurQbDGEg+1AfqpZrgBlNK82PlTT/gV4K+aZzm/DI33ersOpebTxGNr/ X-Received: by 2002:a17:902:e5c8:b0:1c3:868f:5958 with SMTP id u8-20020a170902e5c800b001c3868f5958mr8864248plf.20.1694832134991; Fri, 15 Sep 2023 19:42:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694832134; cv=none; d=google.com; s=arc-20160816; b=zVorp31OoTBd7IQycGf+0uufelEdITwilj+zxhrwMpZQKd0LhO/8LlGzRzb+X3OdhG bXGDLmwwviM9yWAIMSRkyJkFvd2jaOOSRKxvyBIKI/oCeyybKGIvjxvzFh7+OVqSnMMB frBxZYDtURXUgEf7Y7fixVwu1Q4+B/mcNoExZoyzfHkMYlGf1NhUHpEzSmxvQ2SPwwdh gfaGAx5FVcDSu6DMUZNvTGcRqo54siXeL5zk2EnV05DuRj4ph9O/YedRQu0JLwauftum zPHre/pR0CdO7LC50Z85D+AyiT+qwh3h/BHUdMgvmQWnRkjR5iiUNLKvw0mov8ztvw6/ 1daw== 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.35 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 groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id q6-20020a170902a3c600b001b9ffda161esi3313656plb.451.2023.09.15.19.42.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Sep 2023 19:42:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 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 groat.vger.email (Postfix) with ESMTP id 0076583CDF5B; Fri, 15 Sep 2023 19:38:33 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238693AbjIPCiA (ORCPT + 27 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?q?=5BPATCH=5D_cpu/hotplug=3A_dont_offline_the_last_non-isol?= =?utf-8?q?ated_CPU?= 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=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email 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 (groat.vger.email [0.0.0.0]); Fri, 15 Sep 2023 19:38:35 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777160300476032401 X-GMAIL-MSGID: 1777160300476032401 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);