Re: stable backport request, add cortex-a cpus to whitelist

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 19, 2019 at 10:32:47PM +0200, Greg KH wrote:
> On Mon, Sep 09, 2019 at 02:45:01PM +0200, Niklas Cassel wrote:
> > Hello,
> > 
> > I would like to request
> > 2a355ec25729 ("arm64: kpti: Whitelist Cortex-A CPUs that don't implement the CSV3 field")
> > 
> > to be backported to 4.19 stable.
> > 
> > These CPUs are not susceptible to Meltdown, so enabling the mitigations
> > for Meltdown (kpti) should be redundant, especially since we know that
> > it can have a huge performance penalty for certain workloads.
> > 
> > kpti will still be automatically enabled if KASLR is enabled.
> 
> Now queued up, thanks.
> 

Hello Greg, Will,

How about applying this also to v4.14 stable?
(Since kpti is also enabled on Cortex-A CPUs in v4.14.)

2a355ec25729 does not apply cleanly on v4.14.y,
since a LOT of things have changed in the file.

git log --oneline 2a355ec25729053bb9a1a89b6c1d1cdd6c3b3fb1 --not linux-stable/linux-4.14.y arch/arm64/kernel/cpufeature.c | wc -l
72

However, I've attached a simple backport of the commit.


Kind regards,
Niklas
>From 84406bca325ad4dc1c5d517801d298ae8c9b68a0 Mon Sep 17 00:00:00 2001
From: Will Deacon <will.deacon@xxxxxxx>
Date: Thu, 13 Dec 2018 13:47:38 +0000
Subject: [PATCH] arm64: kpti: Whitelist Cortex-A CPUs that don't implement the
 CSV3 field

commit 2a355ec25729053bb9a1a89b6c1d1cdd6c3b3fb1 upstream.

While the CSV3 field of the ID_AA64_PFR0 CPU ID register can be checked
to see if a CPU is susceptible to Meltdown and therefore requires kpti
to be enabled, existing CPUs do not implement this field.

We therefore whitelist all unaffected Cortex-A CPUs that do not implement
the CSV3 field.

Signed-off-by: Will Deacon <will.deacon@xxxxxxx>
Signed-off-by: Niklas Cassel <niklas.cassel@xxxxxxxxxx>
---
MIDR_CORTEX_A35 is not included, since the define does not exist in v4.14.y.

 arch/arm64/kernel/cpufeature.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index 3312d46fa29e..57ec681a8f11 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -838,6 +838,11 @@ static bool unmap_kernel_at_el0(const struct arm64_cpu_capabilities *entry,
 	switch (read_cpuid_id() & MIDR_CPU_MODEL_MASK) {
 	case MIDR_CAVIUM_THUNDERX2:
 	case MIDR_BRCM_VULCAN:
+	case MIDR_CORTEX_A53:
+	case MIDR_CORTEX_A55:
+	case MIDR_CORTEX_A57:
+	case MIDR_CORTEX_A72:
+	case MIDR_CORTEX_A73:
 		return false;
 	}
 
-- 
2.21.0


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux