Re: [PATCH v2 8/8] RISC-V: Assign hwcap only according to current cpu.

From: Atish Patra
Date: Tue Jan 08 2019 - 05:33:07 EST


On 1/8/19 1:38 AM, Atish Patra wrote:
Currently, we set hwcap based on first valid cpu from
DT. This may not be correct always as that CPU might not
be current booting cpu.

Set hwcap based on the current cpu instead of first
valid CPU from DT.

Signed-off-by: Atish Patra <atish.patra@xxxxxxx>
---
arch/riscv/kernel/cpufeature.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c
index a6e369ed..ed6122ff 100644
--- a/arch/riscv/kernel/cpufeature.c
+++ b/arch/riscv/kernel/cpufeature.c
@@ -43,12 +43,15 @@ void riscv_fill_hwcap(void)
elf_hwcap = 0;
/*
- * We don't support running Linux on hertergenous ISA systems. For
- * now, we just check the ISA of the first "okay" processor.
+ * We don't support running Linux on hertergenous ISA systems.
+ * But first "okay" processor might not be the boot cpu.
+ * Check the ISA of boot cpu.
*/
- while ((node = of_find_node_by_type(node, "cpu")))
- if (riscv_of_processor_hartid(node) >= 0)
+ while ((node = of_find_node_by_type(node, "cpu"))) {
+ if (riscv_of_processor_hartid(node) == boot_cpu_hartid)
break;
+ }
+
if (!node) {
pr_warning("Unable to find \"cpu\" devicetree entry");
return;


Argh..Missed an include while rebasing. Following edit is required for non SMP config. I will fix it in v2.

diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c
index ed6122ff..78379ea3 100644
--- a/arch/riscv/kernel/cpufeature.c
+++ b/arch/riscv/kernel/cpufeature.c
@@ -20,6 +20,7 @@
#include <linux/of.h>
#include <asm/processor.h>
#include <asm/hwcap.h>
+#include <asm/smp.h>

Regards,
Atish