Received: by 2002:a05:7412:40d:b0:e2:908c:2ebd with SMTP id 13csp391002rdf; Tue, 21 Nov 2023 05:46:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IFBuxwQHRUqm033g1cwBRjlPJ9MqvaKfpfiVDB6iI0foAC+eG5NBJIsoKIkx8JkI/2fTnpL X-Received: by 2002:a05:6808:1888:b0:3b5:663c:9b91 with SMTP id bi8-20020a056808188800b003b5663c9b91mr6345100oib.12.1700574389479; Tue, 21 Nov 2023 05:46:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700574389; cv=none; d=google.com; s=arc-20160816; b=MSQuos4k/siGjcVvZhysPG/ckyZxATezBR+EKRbPRMaTauxT2KkPxWLGIv4VqOdBl7 Udte3yctNCc5Vinagrdl6kdj7y0gu75oKBcDW6D+7Bx7J8EnMDHOsxZORKLwgkBJQnVF mS6uFrvTAV5uLZvF0Jl7sVxxK0n3B4Z5NUib1fx69kIHrJ8+w2QkfOgpndd5Ot0mmzPR 1V0ZxLfAnPBtlTXFOXdZWh4QQXxuy1Ib/Ki+Bl8OSJqpc0gpwe3SlM93zCYBS183gUeB k9WX482oHTWZAGUb8/jVZkdTj4TfnRvHUD+67rxa5e7LaQF4S3bLKdR/DWcTGjG2nbsX sSxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:sender:message-id:content-transfer-encoding :content-disposition:mime-version:subject:cc:to:from:references :in-reply-to:dkim-signature; bh=Rq3mJEDmHmHA0JRTSCaQYOHbxYWrzjJptUUAddlbLuc=; fh=kqnmhUI72/OhTNFxW/Mp3EHegNo526ZgwLbrfgiAZBg=; b=IdsQYfklGNt6IaeBXls6I0jiQBy3kmnsShHriR2oteDgo4QuFlDk2yDc2rTFklDRn8 Xj/BrxE/dPbYnnIou6njJf0ctafbyXQEy/vpLZP0ozyh/5r25cPpIAh00r8pGFymNAn1 MenzQrvz9VCWKy+cQN/tfQJfJjRKDap6V5gfGcbLQ6vwrpavgUsaz2Ov1JsONqkr+/gH MizRdRn0MDrbX4Ef4EQAaXLDXQcfW/HYOUJekuOfAtQF6h0rwQD5SrngTELmeEfp6jfk NM0T2C/CU0CketgTjRm5YXGAVP4XgQJgSnv2CIbqKoXMGUGExw8qUlkz7ZAuBqsJEqar lnog== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail (test mode) header.i=@armlinux.org.uk header.s=pandora-2019 header.b=YiWzubxH; 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=armlinux.org.uk Return-Path: Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id q24-20020a63e958000000b005898699b2afsi10742036pgj.176.2023.11.21.05.46.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Nov 2023 05:46:29 -0800 (PST) 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; dkim=fail (test mode) header.i=@armlinux.org.uk header.s=pandora-2019 header.b=YiWzubxH; 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=armlinux.org.uk Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 840BE8068FF4; Tue, 21 Nov 2023 05:45:34 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234447AbjKUNow (ORCPT + 99 others); Tue, 21 Nov 2023 08:44:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53456 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234369AbjKUNom (ORCPT ); Tue, 21 Nov 2023 08:44:42 -0500 Received: from pandora.armlinux.org.uk (pandora.armlinux.org.uk [IPv6:2001:4d48:ad52:32c8:5054:ff:fe00:142]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 33340D72; Tue, 21 Nov 2023 05:44:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Date:Sender:Message-Id:Content-Type: Content-Transfer-Encoding:MIME-Version:Subject:Cc:To:From:References: In-Reply-To:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=Rq3mJEDmHmHA0JRTSCaQYOHbxYWrzjJptUUAddlbLuc=; b=YiWzubxHtHS7imqkJKpyUXjtK/ CYnkTUAuZsvA643hmcX2vFpN22hMXc6BE2ockNgi+690WfL7blcomEl9x4T6uxQxxN8a2xUtS6kwR 4mFwcJWO1yx/bQY+3lxx7JtSsMZlKxV/tXbPhdVFjp8tW0esTg4YGnzpIJYNEbIVFbvbxy2CNDuWG V4r18XCCdqvLiGM16VLN7pbgU44kNoS9qqqxC1UWkoZLUZBT8+zbtdeiGS0/od3lrx8qQ8d18/AJm wdHd4nBV3sJytGzKByj/oPk9+ZevGNFJB4jvjqFD5HkzJUmxGrLxvVJoKGUarjrpvwr30Fnhuju8T fkA6B3QQ==; Received: from e0022681537dd.dyn.armlinux.org.uk ([fd8f:7570:feb6:1:222:68ff:fe15:37dd]:52662 helo=rmk-PC.armlinux.org.uk) by pandora.armlinux.org.uk with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1r5R34-00077I-2n; Tue, 21 Nov 2023 13:44:18 +0000 Received: from rmk by rmk-PC.armlinux.org.uk with local (Exim 4.94.2) (envelope-from ) id 1r5R36-00Csz0-Px; Tue, 21 Nov 2023 13:44:20 +0000 In-Reply-To: References: From: Russell King (Oracle) To: linux-pm@vger.kernel.org, loongarch@lists.linux.dev, linux-acpi@vger.kernel.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, kvmarm@lists.linux.dev, x86@kernel.org, linux-csky@vger.kernel.org, linux-doc@vger.kernel.org, linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org Cc: Salil Mehta , Jean-Philippe Brucker , jianyong.wu@arm.com, justin.he@arm.com, James Morse , Greg Kroah-Hartman , "Rafael J. Wysocki" , Paul Walmsley , Palmer Dabbelt , Albert Ou , Guo Ren Subject: [PATCH 06/21] drivers: base: Use present CPUs in GENERIC_CPU_DEVICES MIME-Version: 1.0 Content-Disposition: inline Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="utf-8" Message-Id: Sender: Russell King Date: Tue, 21 Nov 2023 13:44:20 +0000 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE 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]); Tue, 21 Nov 2023 05:45:34 -0800 (PST) From: James Morse Three of the five ACPI architectures create sysfs entries using register_cpu() for present CPUs, whereas arm64, riscv and all GENERIC_CPU_DEVICES do this for possible CPUs. Registering a CPU is what causes them to show up in sysfs. It makes very little sense to register all possible CPUs. Registering a CPU is what triggers the udev notifications allowing user-space to react to newly added CPUs. To allow all five ACPI architectures to use GENERIC_CPU_DEVICES, change it to use for_each_present_cpu(). Making the ACPI architectures use GENERIC_CPU_DEVICES is a pre-requisite step to centralise their register_cpu() logic, before moving it into the ACPI processor driver. When we add support for register CPUs from ACPI in a later patch, we will avoid registering CPUs in this path. Of the ACPI architectures that register possible CPUs, arm64 and riscv do not support making possible CPUs present as they use the weak 'always fails' version of arch_register_cpu(). Only two of the eight architectures that use GENERIC_CPU_DEVICES have a distinction between present and possible CPUs. The following architectures use GENERIC_CPU_DEVICES but are not SMP, so possible == present: * m68k * microblaze * nios2 The following architectures use GENERIC_CPU_DEVICES and consider possible == present: * csky: setup_smp() * processor_probe() sets possible for all CPUs and present for all CPUs except the boot cpu, which will have been done by init/main.c::start_kernel(). um appears to be a subarchitecture of x86. The remaining architecture using GENERIC_CPU_DEVICES are: * openrisc and hexagon: where smp_init_cpus() makes all CPUs < NR_CPUS possible, whereas smp_prepare_cpus() only makes CPUs < setup_max_cpus present. After this change, openrisc and hexagon systems that use the max_cpus command line argument would not see the other CPUs present in sysfs. This should not be a problem as these CPUs can't be brought online as _cpu_up() checks cpu_present(). After this change, only CPUs which are present appear in sysfs. Signed-off-by: James Morse Reviewed-by: Jonathan Cameron Reviewed-by: Gavin Shan Signed-off-by: Russell King (Oracle) --- drivers/base/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c index 9ea22e165acd..34b48f660b6b 100644 --- a/drivers/base/cpu.c +++ b/drivers/base/cpu.c @@ -533,7 +533,7 @@ static void __init cpu_dev_register_generic(void) #ifdef CONFIG_GENERIC_CPU_DEVICES int i; - for_each_possible_cpu(i) { + for_each_present_cpu(i) { if (register_cpu(&per_cpu(cpu_devices, i), i)) panic("Failed to register CPU device"); } -- 2.30.2