From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EDEE2EDE9A4 for ; Thu, 14 Sep 2023 11:27:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:CC:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=9TZAaMPA2t+hp/lytoCccM4gCAshySsPBAhy991H1Ww=; b=4FVzN3dmXVqQnd Qnjsd4ok7I7/QtgoG7KNKt1gLd9UuIDDA/QCmNxTmrbGRNAEjuVE9H/x4zIrMZuNt+PRG1oO7Axss c3kvU/CIimVDT7r16o8MjvmywAUfpmwvi6ubzsNhaVoQSL9IJYSWvtSKgqs4pzBCDmAl3d44jtbhC OVLKT9h7BIUi682WKFneT3xRvAS1PNwOcFVJk0WkwISFNQVjry1EwglLE9u5QbTy1j2mikO87yHmj 1cn0Sz/ssRQCPInPfJLpuPLuOswBwdLK2osQerQGMR/XXYPw9rnyrE+y19/YwbxPdHjH7sM0WOe3a pM6buepItAV5LsZJpNRg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qgkVM-008EnG-2y; Thu, 14 Sep 2023 11:27:28 +0000 Received: from frasgout.his.huawei.com ([185.176.79.56]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qgkVI-008ElW-26; Thu, 14 Sep 2023 11:27:27 +0000 Received: from lhrpeml500005.china.huawei.com (unknown [172.18.147.201]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4RmZkL5jfYz6HJbR; Thu, 14 Sep 2023 19:25:30 +0800 (CST) Received: from localhost (10.202.227.76) by lhrpeml500005.china.huawei.com (7.191.163.240) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.31; Thu, 14 Sep 2023 12:27:16 +0100 Date: Thu, 14 Sep 2023 12:27:15 +0100 From: Jonathan Cameron To: James Morse CC: , , , , , , , , , Salil Mehta , Russell King , Jean-Philippe Brucker , , Subject: Re: [RFC PATCH v2 06/35] arm64: setup: Switch over to GENERIC_CPU_DEVICES using arch_register_cpu() Message-ID: <20230914122715.000076be@Huawei.com> In-Reply-To: <20230913163823.7880-7-james.morse@arm.com> References: <20230913163823.7880-1-james.morse@arm.com> <20230913163823.7880-7-james.morse@arm.com> Organization: Huawei Technologies Research and Development (UK) Ltd. X-Mailer: Claws Mail 4.1.0 (GTK 3.24.33; x86_64-w64-mingw32) MIME-Version: 1.0 X-Originating-IP: [10.202.227.76] X-ClientProxiedBy: lhrpeml100004.china.huawei.com (7.191.162.219) To lhrpeml500005.china.huawei.com (7.191.163.240) X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230914_042724_971368_1FCB6D14 X-CRM114-Status: GOOD ( 22.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Wed, 13 Sep 2023 16:37:54 +0000 James Morse wrote: > To allow ACPI's _STA value to hide CPUs that are present, but not > available to online right now due to VMM or firmware policy, the > register_cpu() call needs to be made by the ACPI machinery when ACPI > is in use. This allows it to hide CPUs that are unavailable from sysfs. > > Switching to GENERIC_CPU_DEVICES is an intermediate step to allow all > five ACPI architectures to be modified at once. > > Switch over to GENERIC_CPU_DEVICES, and provide an arch_register_cpu() > that populates the hotpluggable flag. arch_register_cpu() is also the > interface the ACPI machinery expects. > > The struct cpu in struct cpuinfo_arm64 is never used directly, remove > it to use the one GENERIC_CPU_DEVICES provides. > > This changes the CPUs visible in sysfs from possible to present, but > on arm64 smp_prepare_cpus() ensures these are the same. > > Signed-off-by: James Morse After this the earlier question about ordering of cpu_dev_init() and node_dev_init() is relevant. Why won't node_dev_init() call get_cpu_devce() which queries per_cpu(cpu_sys_devices) and get NULL as we haven't yet filled that in? Or does it do so but that doesn't matter as well create the relevant links later? I've not had enough coffee yet today so might be missing the obvious! Jonathan > --- > arch/arm64/Kconfig | 1 + > arch/arm64/include/asm/cpu.h | 1 - > arch/arm64/kernel/setup.c | 13 ++++--------- > 3 files changed, 5 insertions(+), 10 deletions(-) > > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > index b10515c0200b..7b3990abf87a 100644 > --- a/arch/arm64/Kconfig > +++ b/arch/arm64/Kconfig > @@ -132,6 +132,7 @@ config ARM64 > select GENERIC_ARCH_TOPOLOGY > select GENERIC_CLOCKEVENTS_BROADCAST > select GENERIC_CPU_AUTOPROBE > + select GENERIC_CPU_DEVICES > select GENERIC_CPU_VULNERABILITIES > select GENERIC_EARLY_IOREMAP > select GENERIC_IDLE_POLL_SETUP > diff --git a/arch/arm64/include/asm/cpu.h b/arch/arm64/include/asm/cpu.h > index e749838b9c5d..887bd0d992bb 100644 > --- a/arch/arm64/include/asm/cpu.h > +++ b/arch/arm64/include/asm/cpu.h > @@ -38,7 +38,6 @@ struct cpuinfo_32bit { > }; > > struct cpuinfo_arm64 { > - struct cpu cpu; > struct kobject kobj; > u64 reg_ctr; > u64 reg_cntfrq; > diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c > index 417a8a86b2db..165bd2c0dd5a 100644 > --- a/arch/arm64/kernel/setup.c > +++ b/arch/arm64/kernel/setup.c > @@ -402,19 +402,14 @@ static inline bool cpu_can_disable(unsigned int cpu) > return false; > } > > -static int __init topology_init(void) > +int arch_register_cpu(int num) > { > - int i; > + struct cpu *cpu = &per_cpu(cpu_devices, num); > > - for_each_possible_cpu(i) { > - struct cpu *cpu = &per_cpu(cpu_data.cpu, i); > - cpu->hotpluggable = cpu_can_disable(i); > - register_cpu(cpu, i); > - } > + cpu->hotpluggable = cpu_can_disable(num); > > - return 0; > + return register_cpu(cpu, num); > } > -subsys_initcall(topology_init); > > static void dump_kernel_offset(void) > { _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel