Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752804AbdLKKqK (ORCPT ); Mon, 11 Dec 2017 05:46:10 -0500 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:55608 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751956AbdLKKqJ (ORCPT ); Mon, 11 Dec 2017 05:46:09 -0500 Date: Mon, 11 Dec 2017 10:45:59 +0000 From: Mark Rutland To: Shanker Donthineni Cc: Will Deacon , Marc Zyngier , linux-arm-kernel@lists.infradead.org, linux-efi@vger.kernel.org, Ard Biesheuvel , Matt Fleming , Catalin Marinas , linux-kernel@vger.kernel.org, Robin Murphy , kvmarm@lists.cs.columbia.edu Subject: Re: [RESEND PATCH v4 2/2] arm64: Add software workaround for Falkor erratum 1041 Message-ID: <20171211104558.pm3lijsdfg2xhj7h@lakrids.cambridge.arm.com> References: <1512957823-18064-1-git-send-email-shankerd@codeaurora.org> <1512957823-18064-2-git-send-email-shankerd@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1512957823-18064-2-git-send-email-shankerd@codeaurora.org> User-Agent: NeoMutt/20170113 (1.7.2) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1274 Lines: 50 Hi, On Sun, Dec 10, 2017 at 08:03:43PM -0600, Shanker Donthineni wrote: > +/** > + * Errata workaround prior to disable MMU. Insert an ISB immediately prior > + * to executing the MSR that will change SCTLR_ELn[M] from a value of 1 to 0. > + */ > + .macro pre_disable_mmu_workaround > +#ifdef CONFIG_QCOM_FALKOR_ERRATUM_E1041 > +alternative_if ARM64_WORKAROUND_QCOM_FALKOR_E1041 > + isb > +alternative_else_nop_endif > +#endif > + .endm There's really no need for this to be an alternative. It makes the kernel larger and more complex due to all the altinstr data and probing code. As Will suggested last time [1], please just use the ifdef, and always compile-in the extra ISB if CONFIG_QCOM_FALKOR_ERRATUM_E1041 is selected. Get rid of the alternatives and probing code. All you need here is: /* * Some Falkor parts make errant speculative instruction fetches * when SCTLR_ELx.M is cleared. An ISB before the write to * SCTLR_ELx prevents this. */ .macro pre_disable_mmu_workaround #ifdef isb #endif .endm > + > + .macro pre_disable_mmu_early_workaround > +#ifdef CONFIG_QCOM_FALKOR_ERRATUM_E1041 > + isb > +#endif > + .endm > + ... and we don't need a special early variant. Thanks, Mark. [1] https://lkml.kernel.org/r/20171201112457.GE18083@arm.com