From patchwork Mon Oct 2 11:59:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Gleixner X-Patchwork-Id: 147266 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2a8e:b0:403:3b70:6f57 with SMTP id in14csp1387830vqb; Mon, 2 Oct 2023 05:24:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFQN/zZVEbou9IbZCFEnV5nWkEzQrYonKPPgojInsD6bZmOPtl3LhX56YcoJqicmPed3oma X-Received: by 2002:a05:6a20:9751:b0:14c:6cd9:bf9d with SMTP id hs17-20020a056a20975100b0014c6cd9bf9dmr9309237pzc.35.1696249474207; Mon, 02 Oct 2023 05:24:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696249474; cv=none; d=google.com; s=arc-20160816; b=tVfbR+cXzN9ovVKya+zq0MaseHBLvHDzpkUFuNOjwB9xBowrwmzNQcm1+vSCkklbnX ifNDEOUolIOb1MMnT+/3wkzO14VyTFsKu/MuA/Wa8LKr/8BeozE1txe5Yky1pjxqAtKZ fyO4FZXB4nJO/iRx70CF+j8PD3dPxcp1N7BYZh6rr+GQ+HfoW6wzvJ7Aukof68+wVaZB 02sR7W2yrRbr11Ro4DBAZPbbhX59SvL/C4I6n4RyEDa8TVIhuIaSfPFSHICTIoYwwzG8 7CjCguwdmOaYUkD4yFFSSOg4usqFqtUXB4L+Gi1G0vG65Nfz4dIKhPeHDCmtGB+1p37u vYZA== 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=rHi089u9X95MCYe+6Slgr0l9oghgbG+86h4o3zvQkNE=; fh=u57tXYamzTrJA+Ht8n1u7SfTMptrQaIb6LVW+jsaYf4=; b=FJJIXVG9LoDt84R/TSrEqMwicMBbqVQxyLdb8P8eLCwFcDATWC9jeRd48PbubA96pj l9ZqcD2Su0uA8vJLdmwKgo8VVmtmnvgh69ojQU2MBDgU8kYw+O6ch8Mn3uCzdASRfB/Z 3fj14V1SdWrf0IabBYgUIMWZ5M2ACt4h11AUG/0pNWmyCp6wOF3IkPsV1MS441xqPW/w DUPfe68/W2AWyS5ZwyWg7Z/rts0S+oU/NhIiM5PewU/EXOzczsM8qHqv1AazAr4rxBcW SY7FKC/sWxj6nI+85rTc6G84bO8soLIZ0UHYFs/aeDYhFuPuEVquDNWpEve1JX4z9Kj9 1UUg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=LB1Rpi07; dkim=neutral (no key) header.i=@linutronix.de; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id f5-20020a056a0022c500b0068fb8704b9csi28847597pfj.28.2023.10.02.05.24.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Oct 2023 05:24:34 -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; dkim=pass header.i=@linutronix.de header.s=2020 header.b=LB1Rpi07; dkim=neutral (no key) header.i=@linutronix.de; 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=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 groat.vger.email (Postfix) with ESMTP id 21C738048F0F; Mon, 2 Oct 2023 05:01:10 -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 S236849AbjJBMA2 (ORCPT + 18 others); Mon, 2 Oct 2023 08:00:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46234 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236925AbjJBMAA (ORCPT ); Mon, 2 Oct 2023 08:00:00 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 916EB1BD for ; Mon, 2 Oct 2023 04:59:54 -0700 (PDT) Message-ID: <20231002115902.914469212@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1696247993; 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=rHi089u9X95MCYe+6Slgr0l9oghgbG+86h4o3zvQkNE=; b=LB1Rpi078hWn2/+ZoOUDZ2i2+hOukLr0RlRgCW6GjS6qqTibUJkS6M5oWfmQ7uZbCFu+P/ IPDKHIMZvfQpTzAPHwz4cX3/O5ZknIXoK3w/iWmJOYoAFiDrjM19CvdtrqPuTCOUdhsMwK BbwNc1wOaELFmkWEqhBAv2Kgf1AVMSViIzZMrs9JzKsgrOXmXrgeSK/SI3CxiZoe8F1g5C bFFpcHpsvtDk/S0x/m0rlJCycxsXgXtxcbaR76Hgque9Um1j/VxxTo5EvDUAS5ho5IcPim eXYE7x2LsTuKTDIcQ8RucTZhvEGlBWOGTX1stTk4FxHTxyGx9lmKlCj3WX0qZg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1696247993; 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=rHi089u9X95MCYe+6Slgr0l9oghgbG+86h4o3zvQkNE=; b=yriIHcyDWEfqtiVp3kyxNo0poPHEY4mpvTr2dPFY7AsUXYnxCZkpPzyK4Itw/p40ACwaKU mojRa5YPCgOW94AA== From: Thomas Gleixner To: LKML Cc: x86@kernel.org, Borislav Petkov , "Chang S. Bae" , Arjan van de Ven , Nikolay Borisov Subject: [patch V4 15/30] x86/microcode: Remove pointless apply() invocation References: <20231002115506.217091296@linutronix.de> MIME-Version: 1.0 Date: Mon, 2 Oct 2023 13:59:52 +0200 (CEST) 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 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]); Mon, 02 Oct 2023 05:01:10 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778646488754740687 X-GMAIL-MSGID: 1778646488754740687 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 Signed-off-by: Thomas Gleixner Signed-off-by: Borislav Petkov (AMD) --- 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 @@ -490,17 +490,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. */ @@ -519,15 +508,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); @@ -555,14 +535,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); } @@ -615,8 +595,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,