Received: by 2002:a4a:311b:0:0:0:0:0 with SMTP id k27-v6csp4804519ooa; Tue, 14 Aug 2018 10:47:01 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwIUxbtn88cvSJ7ukNNrEe9fvVuDP3+qv5/MBB8lXFMnYfbJ561ioNXjwaa/Uo3UxVWSkmq X-Received: by 2002:a62:b917:: with SMTP id z23-v6mr24429238pfe.131.1534268820988; Tue, 14 Aug 2018 10:47:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534268820; cv=none; d=google.com; s=arc-20160816; b=avT7hVw112/P/CmLueeOkAgatuFVv0jRoVAGnb09odQk8f5AfO/PtxE/TX8buODrdB JJX+00+objta/Q38c8hNSh491om6ZvjFkFYw4NvPaGxHMjQmpMfHkBccyy+HQ6hAgivu WQ5plWqOGJ0CUMVy6wKrKTc9D6mi7hQKZIRL8dZbOVzfda1SJVIqy4tnRVcWHwEoxCRt thKB/2PEYb97fN6mq8L/Te3dzDtnmRA/9EvyzObnrAew3lIzkm/NSctbrDjepcvyPm0j wRLlkiZYNto8zYT8mxFY7H5UFbUh4b3wHGROKbtxxLyejfUzTTl8z8ZhtqIvbQ30z2Xi DVyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=F11+1XgJGXSJjwn4KJ8EgC2nJ8VmGOyozlDv9+bc1Pw=; b=O5geuBSbKx2abXuE0cGlBBxlzF5b3opg86Ue6W0FLZZqcBiBy4j/CvWau/l+r40ifs Vws/p9VGhZgZ3TNh2XznSpjBCwr4v70I/QuH4F4ktUNiehRhdZsJeOUxpiGgbXrggYlW AuXnC9iU0y4XDPEg11YidzJiYm7+hNyRSb8a0IqbJccUleevgkKXiBa6Q5Aay4AZl+G6 +M+V6Vzg+Bkq78PkVyXlPV2LPvW+5xmvmsK3xnSpKdyYnrBobDt4YbRlYzzOCUX0an9X GvXBnojFhiv+NCiX0E610uFUms5UXL0BTVjAjUI8KEciw/jcfBJxEQ+8D8pFSpueCZ8g s4Pw== 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 r21-v6si21188609pgi.690.2018.08.14.10.46.46; Tue, 14 Aug 2018 10:47:00 -0700 (PDT) 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 S2390899AbeHNUd1 (ORCPT + 99 others); Tue, 14 Aug 2018 16:33:27 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:60190 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389912AbeHNUd0 (ORCPT ); Tue, 14 Aug 2018 16:33:26 -0400 Received: from localhost (unknown [194.244.16.108]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id EAB40C8D; Tue, 14 Aug 2018 17:45:14 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Josh Poimboeuf , Borislav Petkov , David Woodhouse Subject: [PATCH 4.9 107/107] x86/microcode: Allow late microcode loading with SMT disabled Date: Tue, 14 Aug 2018 19:18:10 +0200 Message-Id: <20180814171527.116006902@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180814171520.883143803@linuxfoundation.org> References: <20180814171520.883143803@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Josh Poimboeuf commit 07d981ad4cf1e78361c6db1c28ee5ba105f96cc1 upstream The kernel unnecessarily prevents late microcode loading when SMT is disabled. It should be safe to allow it if all the primary threads are online. Signed-off-by: Josh Poimboeuf Acked-by: Borislav Petkov Signed-off-by: David Woodhouse Signed-off-by: Greg Kroah-Hartman --- arch/x86/kernel/cpu/microcode/core.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) --- a/arch/x86/kernel/cpu/microcode/core.c +++ b/arch/x86/kernel/cpu/microcode/core.c @@ -386,12 +386,20 @@ static struct platform_device *microcode static int check_online_cpus(void) { - if (num_online_cpus() == num_present_cpus()) - return 0; + unsigned int cpu; - pr_err("Not all CPUs online, aborting microcode update.\n"); + /* + * Make sure all CPUs are online. It's fine for SMT to be disabled if + * all the primary threads are still online. + */ + for_each_present_cpu(cpu) { + if (topology_is_primary_thread(cpu) && !cpu_online(cpu)) { + pr_err("Not all CPUs online, aborting microcode update.\n"); + return -EINVAL; + } + } - return -EINVAL; + return 0; } static int reload_for_cpu(int cpu)