Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp2901072ybx; Fri, 8 Nov 2019 11:01:32 -0800 (PST) X-Google-Smtp-Source: APXvYqxq+wZxe51SwwHkancxoq5Ov4SEgvHc+Vk9XYgHfuk57i777NVtOZ8DYZVSzqeYNPvWU+xc X-Received: by 2002:a50:f284:: with SMTP id f4mr11986451edm.126.1573239692063; Fri, 08 Nov 2019 11:01:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573239692; cv=none; d=google.com; s=arc-20160816; b=bOB/CDLwsoLd79/wJHsgWExpuriHeNXCRxZuVqO67G8Jlt/dqbiMynzBNqhuf/b/x8 uQPwGoa/ox2xWT8Y5VTMJncN4MCnf1UQ9Tw/Hn1LnFCO7xLQeSSTe7DnWfRzRvgrfsFG YkgVXaVNKaoxbdiAb5j0dzfBf3eawfAMrnCMQ13k4bmEMEcilFBTfQYPCrPFdulcrTai cGZZZ/oauoGBC4OT6oNkYt4katJKqPt0dw20eqXsff7L9CvJzQJFrfb3XqaSywMlgiqo 0/2NS+OFZW1j8w/GKSLzUkBEJm/RjOypLHNQmoC4kXed5Rl2mZnu+2JrrzzvDUD7471v 0H1w== 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=TzFniXovCVkfvXhBJyvH8t+f7sMWNU3ZmQzOp0FARAo=; b=Uq3MZMVHhDd1q7corEgJXbxj18ItA5e1PR30qsRy93gfK8Pfzqu1fGKdMP9g14Z8Ie z2CqeCktoouKyjcwutGf+tTvlDI5HJRTwirlbdz3vgzpE1Oz28tVVlIAE8/skJQ6pe6N 0/cx2Cl1FIWqWepiUCc1TnSyCxlHOelWAfwFYkdrrVrejQchlqacwxIFfeG5Eai3LQHO Yb/G0/CPEYtrmPgwi+ZbS+xsdLG/5cM6TXTJ/J6dvJcvbq80jdgwtaSTD71OL7vd/kvG +OkrOt2VLD50KYnyqY9NfMOAQX4pcTqZl6F1F6nktnmuK4571lFhrawRXNkRyVuCquPh hSmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=r2k1sWYM; 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 w27si4969338eda.296.2019.11.08.11.01.08; Fri, 08 Nov 2019 11:01:32 -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=r2k1sWYM; 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 S2387821AbfKHSzv (ORCPT + 99 others); Fri, 8 Nov 2019 13:55:51 -0500 Received: from mail.kernel.org ([198.145.29.99]:53006 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387662AbfKHSzg (ORCPT ); Fri, 8 Nov 2019 13:55:36 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 248ED20865; Fri, 8 Nov 2019 18:55:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1573239336; bh=3Lntj0YJJmf+8l/kLro8iPsjmwtakiQ9erPUHVvONrw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=r2k1sWYMp/SgybmED63y95CCViLVPinfgZbktAHvjXy9GT1lSrvgn89CR3sPWGpYq E0LB6z53bpAf1/zyZYvf+ckqGxvRxGOtqH/S98pgXfB0yEihkldXmur6oqRRzmjChC IAVvgd8wn83j6fQWBKP1109Z/UEMXeOlYSTBVuXY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Greg Kroah-Hartman , "linus.walleij@linaro.org, rmk+kernel@armlinux.org.uk, Ard Biesheuvel" , Russell King , Florian Fainelli , Tony Lindgren , Marc Zyngier , "David A. Long" , Ard Biesheuvel Subject: [PATCH 4.4 43/75] ARM: bugs: add support for per-processor bug checking Date: Fri, 8 Nov 2019 19:50:00 +0100 Message-Id: <20191108174749.716102119@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191108174708.135680837@linuxfoundation.org> References: <20191108174708.135680837@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: Russell King Commit 9d3a04925deeabb97c8e26d940b501a2873e8af3 upstream. Add support for per-processor bug checking - each processor function descriptor gains a function pointer for this check, which must not be an __init function. If non-NULL, this will be called whenever a CPU enters the kernel via which ever path (boot CPU, secondary CPU startup, CPU resuming, etc.) This allows processor specific bug checks to validate that workaround bits are properly enabled by firmware via all entry paths to the kernel. Signed-off-by: Russell King Reviewed-by: Florian Fainelli Boot-tested-by: Tony Lindgren Reviewed-by: Tony Lindgren Acked-by: Marc Zyngier Signed-off-by: David A. Long Signed-off-by: Greg Kroah-Hartman Signed-off-by: Ard Biesheuvel Signed-off-by: Greg Kroah-Hartman --- arch/arm/include/asm/proc-fns.h | 4 ++++ arch/arm/kernel/bugs.c | 4 ++++ arch/arm/mm/proc-macros.S | 3 ++- 3 files changed, 10 insertions(+), 1 deletion(-) --- a/arch/arm/include/asm/proc-fns.h +++ b/arch/arm/include/asm/proc-fns.h @@ -37,6 +37,10 @@ extern struct processor { */ void (*_proc_init)(void); /* + * Check for processor bugs + */ + void (*check_bugs)(void); + /* * Disable any processor specifics */ void (*_proc_fin)(void); --- a/arch/arm/kernel/bugs.c +++ b/arch/arm/kernel/bugs.c @@ -5,6 +5,10 @@ void check_other_bugs(void) { +#ifdef MULTI_CPU + if (processor.check_bugs) + processor.check_bugs(); +#endif } void __init check_bugs(void) --- a/arch/arm/mm/proc-macros.S +++ b/arch/arm/mm/proc-macros.S @@ -258,13 +258,14 @@ mcr p15, 0, ip, c7, c10, 4 @ data write barrier .endm -.macro define_processor_functions name:req, dabort:req, pabort:req, nommu=0, suspend=0 +.macro define_processor_functions name:req, dabort:req, pabort:req, nommu=0, suspend=0, bugs=0 .type \name\()_processor_functions, #object .align 2 ENTRY(\name\()_processor_functions) .word \dabort .word \pabort .word cpu_\name\()_proc_init + .word \bugs .word cpu_\name\()_proc_fin .word cpu_\name\()_reset .word cpu_\name\()_do_idle