Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp558917ybl; Fri, 24 Jan 2020 05:29:17 -0800 (PST) X-Google-Smtp-Source: APXvYqwndHjSJMdtMHjtWiWlt6lgXkiPpiKOTQWeFcqmwmE4NYvO5DSEYHB7MREgkd5O218FkXGO X-Received: by 2002:a05:6830:1289:: with SMTP id z9mr2688359otp.317.1579872556922; Fri, 24 Jan 2020 05:29:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579872556; cv=none; d=google.com; s=arc-20160816; b=pOtkKu0iJe9G3sHM17bEvdEOltwDWthVTjDKcn1dbUY6PrL8yy4BRWF6+EnyoLx+7L gRtKDdDmHXVB9S2B0wOhnSs/kf16Pf/0iwv47z6WQUnvVm+KsF4a24yrwQR0dd3J/MT6 V/4E+BaC1P3W1dCUFiq4+ju0n+kBFYRXYRIOm9cH/JC5c1+CTNHYuCu7ojiz2svUUAbx LWN+T2JmajG/HW1+PNTddySL4feRs/LMC6p4MUrcIlDh4kT9Wz72l5vgSmRJ58ggrTEB OePaeL39UEbwGObkkajYskIMXwMbJJqXMKysbsNBRnXm6WU6W4sHp5B932IwPjHdMwTb nefg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=ZGeh5NhVswwnrIVmQ55jJVehpBaaONzb3R5Lbe9WCGE=; b=IyOn8cw76JSws/m9zMdHB1q10YbEfDHjmUyAzOD4SSZcJz4SWICZapO934uumhkMx0 22HeGaukdkdckzdU35zc9DBYufZasvcvtYtbHsHCHYhxc8KUTIT72c+cOQjSswNvxaBn q7QBRfPloLthpcgx0x7mYiHxBSkRMvhN1BBYsr3LlgVX27ZQqUUP+fOVd1/mdEdZJFmg 9ZpeiKbFe6edECdxpAykiv5T7xWUJQe+NrWtF1FlY6pp9+cVNj1je/z2qx4w2nBDNVi9 B/GVl6Oo8Ndh2ewo0Q5Li2mD9LdxxoJGmVTmeFj1O+2vaWbBfXTkXDQEU/RK+MpTnTGk Ocxw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BiLNpVVo; 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 k14si2347108oig.69.2020.01.24.05.29.04; Fri, 24 Jan 2020 05:29:16 -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; dkim=pass header.i=@kernel.org header.s=default header.b=BiLNpVVo; 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 S2388121AbgAXJwI (ORCPT + 99 others); Fri, 24 Jan 2020 04:52:08 -0500 Received: from mail.kernel.org ([198.145.29.99]:53710 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388109AbgAXJwE (ORCPT ); Fri, 24 Jan 2020 04:52:04 -0500 Received: from localhost (unknown [145.15.244.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6923221556; Fri, 24 Jan 2020 09:52:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1579859524; bh=n/1j+psUlXSEutQ8JlTkMgKXO4dx2uETUlwwgpaLJmI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BiLNpVVoQFfHZh/zZXylEGqBTyx3lDmAqdMW06TZQtcp3etsjCrW4sWmcjGbCJjpU tkzCLL2ufDVw9LZb+2zjWxfRFUjAZ/z8hdPmD/+U6YFGErOUe5OBFPxNKIiUBzUAhE UnUZrXUUvMyXVuylz7uFmp/gC4vON310cHbrPHhM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Segher Boessenkool , Michael Ellerman , Andrew Donnellan , Sasha Levin Subject: [PATCH 4.14 123/343] powerpc/64s: Fix logic when handling unknown CPU features Date: Fri, 24 Jan 2020 10:29:01 +0100 Message-Id: <20200124092936.177470361@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200124092919.490687572@linuxfoundation.org> References: <20200124092919.490687572@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Michael Ellerman [ Upstream commit 8cfaf106918a8c13abb24c641556172afbb9545c ] In cpufeatures_process_feature(), if a provided CPU feature is unknown and enable_unknown is false, we erroneously print that the feature is being enabled and return true, even though no feature has been enabled, and may also set feature bits based on the last entry in the match table. Fix this so that we only set feature bits from the match table if we have actually enabled a feature from that table, and when failing to enable an unknown feature, always print the "not enabling" message and return false. Coincidentally, some older gccs (cpu_ftr_bit_mask) An upcoming patch will enable support for kcov, which requires this option. This patch avoids the warning. Fixes: 5a61ef74f269 ("powerpc/64s: Support new device tree binding for discovering CPU features") Reported-by: Segher Boessenkool Signed-off-by: Michael Ellerman [ajd: add commit message] Signed-off-by: Andrew Donnellan Signed-off-by: Sasha Levin --- arch/powerpc/kernel/dt_cpu_ftrs.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/arch/powerpc/kernel/dt_cpu_ftrs.c b/arch/powerpc/kernel/dt_cpu_ftrs.c index 2357df60de952..7ed2b1b6643cc 100644 --- a/arch/powerpc/kernel/dt_cpu_ftrs.c +++ b/arch/powerpc/kernel/dt_cpu_ftrs.c @@ -705,8 +705,10 @@ static bool __init cpufeatures_process_feature(struct dt_cpu_feature *f) m = &dt_cpu_feature_match_table[i]; if (!strcmp(f->name, m->name)) { known = true; - if (m->enable(f)) + if (m->enable(f)) { + cur_cpu_spec->cpu_features |= m->cpu_ftr_bit_mask; break; + } pr_info("not enabling: %s (disabled or unsupported by kernel)\n", f->name); @@ -714,17 +716,12 @@ static bool __init cpufeatures_process_feature(struct dt_cpu_feature *f) } } - if (!known && enable_unknown) { - if (!feat_try_enable_unknown(f)) { - pr_info("not enabling: %s (unknown and unsupported by kernel)\n", - f->name); - return false; - } + if (!known && (!enable_unknown || !feat_try_enable_unknown(f))) { + pr_info("not enabling: %s (unknown and unsupported by kernel)\n", + f->name); + return false; } - if (m->cpu_ftr_bit_mask) - cur_cpu_spec->cpu_features |= m->cpu_ftr_bit_mask; - if (known) pr_debug("enabling: %s\n", f->name); else -- 2.20.1