Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp1644524ybv; Sun, 23 Feb 2020 11:32:17 -0800 (PST) X-Google-Smtp-Source: APXvYqxAr7xRPIN0Y/tiNHhkvu3Q0OjLNPFzexPqoh24DpeLT2h+MAnok7sd3nnXuUbtAE+otDX2 X-Received: by 2002:aca:ddc2:: with SMTP id u185mr10178660oig.24.1582486337192; Sun, 23 Feb 2020 11:32:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582486337; cv=none; d=google.com; s=arc-20160816; b=ibH8wITiXSIP3+NwYx2d+KdD6JNr36EXrhGlqqX+CFkxk8Ib89pQ39aYtwCVWvikmV khQZ9oRFjOJrUcavYyY5AK/8Ukt1Sm9tYtJkGsPSvq7/af+JokCbq9PgwSGSaINvzOXv g4dc0UiVH0S26MfiBufUVl78TYs8TJYxchAlh0ot4hA+DNxiO2dL/KKoDVPKOzWt5uh1 g3LAL0LDkznf44uFNTHmxs9UbTfG/h0GS9kGZhtTEFIiQhsi9f0Z/eo+VI8RkKYixl8/ sKUjAqHbJHzce+7ZsNiaUpC+YANcnLIT/cy6YZ1GSXw0LugzVvuKWfcDPrWlUEcsCVix 1Uyw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=8iNKFHiNXNLOjF7a96Kfdrs7IP0jJPuJkbtyiLfEI6k=; b=b1XFETXUR+WGZMqyuyxcQ5aVlSnjBo66G3fmyyvNH8DfjAsITHM9cNylVxzxIEfUXR jQHM0uaX4ret8zvP7WDe3Cgwn5RMSqzuHsE635bpVjskfqK/vafVJCPKHogN6i6bal8c ACo6GWW3nwuxzZ8tiBDSHawIdAli/0qneAYjLl3E5ItdhBlxh0bk8QQPlNdJoT/2wp+W zIGQMpUSZUL/bYV+U2cMDize14FrBumVkWEpAFfegpqJT7fLP7/ZzgdWLTv/hA0xaiK+ bOuswl5J4mbzjtoOWUvkMhNCL0fKgGJTebAlV+FMVG6l6B2QNwcnDGHG7n9Dd62UeKWE FifA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d189si3939830oib.93.2020.02.23.11.32.05; Sun, 23 Feb 2020 11:32:17 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727249AbgBWTaG (ORCPT + 99 others); Sun, 23 Feb 2020 14:30:06 -0500 Received: from foss.arm.com ([217.140.110.172]:51374 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727229AbgBWTaE (ORCPT ); Sun, 23 Feb 2020 14:30:04 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5D942101E; Sun, 23 Feb 2020 11:30:04 -0800 (PST) Received: from e107158-lin.cambridge.arm.com (e107158-lin.cambridge.arm.com [10.1.195.21]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3D64E3F6CF; Sun, 23 Feb 2020 11:30:03 -0800 (PST) From: Qais Yousef To: Thomas Gleixner Cc: "Paul E . McKenney" , Qais Yousef , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , x86@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 07/15] x86: Replace cpu_up/down with add/remove_cpu Date: Sun, 23 Feb 2020 19:29:34 +0000 Message-Id: <20200223192942.18420-8-qais.yousef@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200223192942.18420-1-qais.yousef@arm.com> References: <20200223192942.18420-1-qais.yousef@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The core device API performs extra housekeeping bits that are missing from directly calling cpu_up/down. See commit a6717c01ddc2 ("powerpc/rtas: use device model APIs and serialization during LPM") for an example description of what might go wrong. This also prepares to make cpu_up/down a private interface for anything but the cpu subsystem. Signed-off-by: Qais Yousef CC: Thomas Gleixner CC: Ingo Molnar CC: Borislav Petkov CC: "H. Peter Anvin" CC: x86@kernel.org CC: linux-kernel@vger.kernel.org --- arch/x86/kernel/topology.c | 22 ++++++---------------- arch/x86/mm/mmio-mod.c | 4 ++-- arch/x86/xen/smp.c | 2 +- 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/arch/x86/kernel/topology.c b/arch/x86/kernel/topology.c index be5bc2e47c71..b8810ebbc8ae 100644 --- a/arch/x86/kernel/topology.c +++ b/arch/x86/kernel/topology.c @@ -59,39 +59,29 @@ __setup("cpu0_hotplug", enable_cpu0_hotplug); */ int _debug_hotplug_cpu(int cpu, int action) { - struct device *dev = get_cpu_device(cpu); int ret; if (!cpu_is_hotpluggable(cpu)) return -EINVAL; - lock_device_hotplug(); - switch (action) { case 0: - ret = cpu_down(cpu); - if (!ret) { + ret = remove_cpu(cpu); + if (!ret) pr_info("DEBUG_HOTPLUG_CPU0: CPU %u is now offline\n", cpu); - dev->offline = true; - kobject_uevent(&dev->kobj, KOBJ_OFFLINE); - } else + else pr_debug("Can't offline CPU%d.\n", cpu); break; case 1: - ret = cpu_up(cpu); - if (!ret) { - dev->offline = false; - kobject_uevent(&dev->kobj, KOBJ_ONLINE); - } else { + ret = add_cpu(cpu); + if (ret) pr_debug("Can't online CPU%d.\n", cpu); - } + break; default: ret = -EINVAL; } - unlock_device_hotplug(); - return ret; } diff --git a/arch/x86/mm/mmio-mod.c b/arch/x86/mm/mmio-mod.c index 673de6063345..109325d77b3e 100644 --- a/arch/x86/mm/mmio-mod.c +++ b/arch/x86/mm/mmio-mod.c @@ -386,7 +386,7 @@ static void enter_uniprocessor(void) put_online_cpus(); for_each_cpu(cpu, downed_cpus) { - err = cpu_down(cpu); + err = remove_cpu(cpu); if (!err) pr_info("CPU%d is down.\n", cpu); else @@ -406,7 +406,7 @@ static void leave_uniprocessor(void) return; pr_notice("Re-enabling CPUs...\n"); for_each_cpu(cpu, downed_cpus) { - err = cpu_up(cpu); + err = add_cpu(cpu); if (!err) pr_info("enabled CPU%d.\n", cpu); else diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index 7a43b2ae19f1..2097fa0ebdb5 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c @@ -132,7 +132,7 @@ void __init xen_smp_cpus_done(unsigned int max_cpus) if (xen_vcpu_nr(cpu) < MAX_VIRT_CPUS) continue; - rc = cpu_down(cpu); + rc = remove_cpu(cpu); if (rc == 0) { /* -- 2.17.1