RISC-V: properly determine hardware caps

On the Hifive-U platform, cpu 0 is a masked cpu with less capabilities
than the other cpus.  Ignore it for the purpose of determining the
hardware capabilities of the system.

Signed-off-by: Andreas Schwab <schwab@suse.de>
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
This commit is contained in:
Andreas Schwab 2018-10-23 09:33:47 +02:00 committed by Palmer Dabbelt
parent d26c4bbf99
commit 732e8e4130
No known key found for this signature in database
GPG Key ID: EF4CA1502CCBAB41
1 changed files with 5 additions and 3 deletions

View File

@ -28,7 +28,7 @@ bool has_fpu __read_mostly;
void riscv_fill_hwcap(void)
{
struct device_node *node;
struct device_node *node = NULL;
const char *isa;
size_t i;
static unsigned long isa2hwcap[256] = {0};
@ -44,9 +44,11 @@ void riscv_fill_hwcap(void)
/*
* We don't support running Linux on hertergenous ISA systems. For
* now, we just check the ISA of the first processor.
* now, we just check the ISA of the first "okay" processor.
*/
node = of_find_node_by_type(NULL, "cpu");
while ((node = of_find_node_by_type(node, "cpu")))
if (riscv_of_processor_hartid(node) >= 0)
break;
if (!node) {
pr_warning("Unable to find \"cpu\" devicetree entry");
return;