From patchwork Tue Sep 12 07:58:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Gleixner X-Patchwork-Id: 138198 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9ecd:0:b0:3f2:4152:657d with SMTP id t13csp428281vqx; Tue, 12 Sep 2023 07:03:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG7VeWBwnXEaTK3osm34RNbxMk1vRj+kO8pNAbCph3mTrS2YPGcrscmJF0lzePAQVd+Qx8F X-Received: by 2002:a05:6a00:2290:b0:68e:2f6e:b4c0 with SMTP id f16-20020a056a00229000b0068e2f6eb4c0mr11559106pfe.28.1694527409885; Tue, 12 Sep 2023 07:03:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694527409; cv=none; d=google.com; s=arc-20160816; b=oM6mC2ni/TpejIX2trNLmI80Kue9OHag1ww3Ac6uIYtMjYNutOwAYjYNXunM2Xlf+o WNKqlWCjbwH5Zvvc2vstRyu0szb89Q2M56G15xUzAPO69WdiRtokf94JJ5esL47pid8q Rb61yvQzZ1rV7PSoQhXYPFciUNWUvnsVsCNlyKF7NOv4pBS1eWLBPy6f7LeQ+LW0AYyo mBQCJxO0X4n6tTNJFmMECX9dkMUA9DDACDTSIqB0cHTWUszWP0jqG+fMZ4PYoAqqAg+5 2S4kLLSkaySJTVTmkLgu+JqPKrRWrG3w+MBlAS+qAqX5vV6JL2ON+QpfRaYHkMFmvLY+ aAWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:mime-version:references:subject:cc:to:from :dkim-signature:dkim-signature:message-id; bh=BeckiNcudXRg0sDRJH13jVMFBVk42CtM+dSN32B7aSQ=; fh=u57tXYamzTrJA+Ht8n1u7SfTMptrQaIb6LVW+jsaYf4=; b=oZomQJe6+dFiu27gZpiI9+mTVHIhKlA4mC6G08aihvDeoVt36OWaDg0vNSoj5Lnuz+ 5iV9ORxu+IHzFhmC1wzpFwlw8cXnAVGeE2IHrBrtCkxkaEWd6wiju2CNGCcH8/lxLbby qklIWci3MVqTepouykj99uUb1jChmNqZyZIB/5y+XeBkoHYpSrTc9XkozFhT8TpKL0WG JRvKNm2NcBsOgT+BojvLkh0Fb0WLAmslRj/7wVA2kg8wqwcmbHVoOHe5uxUN3T1s/9J0 sYHtiy6dOZl0YQtIEih2x3AyMkNTiXTlC0XxIJkyK+gCKjHwAtUXSTlVZmTz7Xp81+O5 +tjw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=TZAUUZfb; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id bq7-20020a056a000e0700b0068e3707f02bsi5306963pfb.214.2023.09.12.07.03.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Sep 2023 07:03:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=TZAUUZfb; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 2234881CDB8E; Tue, 12 Sep 2023 01:00:54 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.8 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232083AbjILH64 (ORCPT + 39 others); Tue, 12 Sep 2023 03:58:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49750 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231990AbjILH6j (ORCPT ); Tue, 12 Sep 2023 03:58:39 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 310FD19B5 for ; Tue, 12 Sep 2023 00:58:09 -0700 (PDT) Message-ID: <20230912065501.717580036@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1694505487; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=BeckiNcudXRg0sDRJH13jVMFBVk42CtM+dSN32B7aSQ=; b=TZAUUZfbFIkMxB7TDFN3B3QXILFVgVbeA1b5O7xkC1F9oP4ZMe+6z+rtPLUlE+ZAGz8l0a afdzzj0ff2JLqjXzRKIH4plQ6scDHi6HMOEGW9c9pAyc/7HEs/lp2fV/8cnKR3v6ya/UhU 9ZHT4ZC/LpzVDYmOVIGAhdugWGwGVJMSKPPrfgm92ALWajkz6FlfL+XCEtqyjm/F/I7qrf m0vDkRkgeWaAHyQRJSTpT/V4gX9bI3hq+KUw+/vStE7HtSwagChhDYEcdxI7mzhHrCHvEt pU7aU2maz4YKrO0cph1iTe4Blr/svchFrGRDae2Y72jiodCKaFTQIuT1YFRIkA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1694505487; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=BeckiNcudXRg0sDRJH13jVMFBVk42CtM+dSN32B7aSQ=; b=NeDM9/W0hh5OVKj/sdHfdbGu9I07vQP2nNbKL1tI6b0H388qyyN5JyLK0eqdDShP9FRC/J IrZB9EJ2BrKHT9BQ== From: Thomas Gleixner To: LKML Cc: x86@kernel.org, Borislav Petkov , "Chang S. Bae" , Arjan van de Ven , Nikolay Borisov Subject: [patch V3 15/30] x86/microcode: Remove pointless apply() invocation References: <20230912065249.695681286@linutronix.de> MIME-Version: 1.0 Date: Tue, 12 Sep 2023 09:58:07 +0200 (CEST) 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 (morse.vger.email [0.0.0.0]); Tue, 12 Sep 2023 01:00:54 -0700 (PDT) X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,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 morse.vger.email X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1776840773287504056 X-GMAIL-MSGID: 1776840773287504056 Microcode is applied on the APs during early bringup. There is no point in trying to apply the microcode again during the hotplug operations and neither at the point where the microcode device is initialized. Collect CPU info and microcode revision in setup_online_cpu() for now. This will move to the CPU hotplug callback in the next step. Signed-off-by: Thomas Gleixner --- V2: New patch --- arch/x86/kernel/cpu/microcode/core.c | 34 ++++++---------------------------- include/linux/cpuhotplug.h | 1 - 2 files changed, 6 insertions(+), 29 deletions(-) --- a/arch/x86/kernel/cpu/microcode/core.c +++ b/arch/x86/kernel/cpu/microcode/core.c @@ -511,17 +511,6 @@ static void microcode_fini_cpu(int cpu) microcode_ops->microcode_fini_cpu(cpu); } -static enum ucode_state microcode_init_cpu(int cpu) -{ - struct ucode_cpu_info *uci = ucode_cpu_info + cpu; - - memset(uci, 0, sizeof(*uci)); - - microcode_ops->collect_cpu_info(cpu, &uci->cpu_sig); - - return microcode_ops->apply_microcode(cpu); -} - /** * microcode_bsp_resume - Update boot CPU microcode during resume. */ @@ -540,15 +529,6 @@ static struct syscore_ops mc_syscore_ops .resume = microcode_bsp_resume, }; -static int mc_cpu_starting(unsigned int cpu) -{ - enum ucode_state err = microcode_ops->apply_microcode(cpu); - - pr_debug("%s: CPU%d, err: %d\n", __func__, cpu, err); - - return err == UCODE_ERROR; -} - static int mc_cpu_online(unsigned int cpu) { struct device *dev = get_cpu_device(cpu); @@ -576,14 +556,14 @@ static int mc_cpu_down_prep(unsigned int static void setup_online_cpu(struct work_struct *work) { int cpu = smp_processor_id(); - enum ucode_state err; + struct ucode_cpu_info *uci = ucode_cpu_info + cpu; - err = microcode_init_cpu(cpu); - if (err == UCODE_ERROR) { - pr_err("Error applying microcode on CPU%d\n", cpu); - return; - } + memset(uci, 0, sizeof(*uci)); + microcode_ops->collect_cpu_info(cpu, &uci->cpu_sig); + cpu_data(cpu).microcode = uci->cpu_sig.rev; + if (!cpu) + boot_cpu_data.microcode = uci->cpu_sig.rev; mc_cpu_online(cpu); } @@ -636,8 +616,6 @@ static int __init microcode_init(void) schedule_on_each_cpu(setup_online_cpu); register_syscore_ops(&mc_syscore_ops); - cpuhp_setup_state_nocalls(CPUHP_AP_MICROCODE_LOADER, "x86/microcode:starting", - mc_cpu_starting, NULL); cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "x86/microcode:online", mc_cpu_online, mc_cpu_down_prep); --- a/include/linux/cpuhotplug.h +++ b/include/linux/cpuhotplug.h @@ -156,7 +156,6 @@ enum cpuhp_state { CPUHP_AP_IRQ_LOONGARCH_STARTING, CPUHP_AP_IRQ_SIFIVE_PLIC_STARTING, CPUHP_AP_ARM_MVEBU_COHERENCY, - CPUHP_AP_MICROCODE_LOADER, CPUHP_AP_PERF_X86_AMD_UNCORE_STARTING, CPUHP_AP_PERF_X86_STARTING, CPUHP_AP_PERF_X86_AMD_IBS_STARTING,