plic: Fix cpuid handling
authorvisa <visa@openbsd.org>
Tue, 18 Jan 2022 07:44:37 +0000 (07:44 +0000)
committervisa <visa@openbsd.org>
Tue, 18 Jan 2022 07:44:37 +0000 (07:44 +0000)
commit985778ebca26751777e823064b37511eb8f13331
tree6d7fbf10689c20d686c88115a9b6442ef7e8bf2a
parent697e03662975d71e461c2acd4ba66528808acbeb
plic: Fix cpuid handling

Make `cpu' signed so that the possible return value -1 from
plic_get_cpuid() gets handled correctly in the (cpu < 0) condition.
This prevents plic_attach() from updating sc_contexts[] out of bounds.

When plic_get_cpuid() returns -1, ignore the entry and continue
processing. The error is not fatal. It is normal that secondary CPUs
are not found when running a non-MULTIPROCESSOR kernel on
a multiprocessor machine.

OK kettenis@
sys/arch/riscv64/dev/plic.c