Page MenuHomeFreeBSD

D39810.id121760.diff
No OneTemporary

D39810.id121760.diff

diff --git a/sys/riscv/include/cpu.h b/sys/riscv/include/cpu.h
--- a/sys/riscv/include/cpu.h
+++ b/sys/riscv/include/cpu.h
@@ -90,6 +90,7 @@
void cpu_reset(void) __dead2;
void fork_trampoline(void);
void identify_cpu(void);
+void printcpuinfo(void);
static __inline uint64_t
get_cyclecount(void)
diff --git a/sys/riscv/riscv/identcpu.c b/sys/riscv/riscv/identcpu.c
--- a/sys/riscv/riscv/identcpu.c
+++ b/sys/riscv/riscv/identcpu.c
@@ -365,6 +365,14 @@
void
identify_cpu(void)
+{
+ struct cpu_desc *desc = &cpu_desc[PCPU_GET(cpuid)];
+
+ identify_cpu_ids(desc);
+}
+
+void
+printcpuinfo(void)
{
struct cpu_desc *desc;
u_int cpu, hart;
@@ -373,8 +381,6 @@
hart = PCPU_GET(hart);
desc = &cpu_desc[cpu];
- identify_cpu_ids(desc);
-
/* Print details for boot CPU or if we want verbose output */
if (cpu == 0 || bootverbose) {
/* Summary line. */
diff --git a/sys/riscv/riscv/machdep.c b/sys/riscv/riscv/machdep.c
--- a/sys/riscv/riscv/machdep.c
+++ b/sys/riscv/riscv/machdep.c
@@ -128,7 +128,7 @@
{
sbi_print_version();
- identify_cpu();
+ printcpuinfo();
printf("real memory = %ju (%ju MB)\n", ptoa((uintmax_t)realmem),
ptoa((uintmax_t)realmem) / (1024 * 1024));
@@ -536,6 +536,11 @@
physmem_hardware_regions(mem_regions, mem_regions_sz);
#endif
+ /*
+ * Identify CPU/ISA features.
+ */
+ identify_cpu();
+
/* Do basic tuning, hz etc */
init_param1();
diff --git a/sys/riscv/riscv/mp_machdep.c b/sys/riscv/riscv/mp_machdep.c
--- a/sys/riscv/riscv/mp_machdep.c
+++ b/sys/riscv/riscv/mp_machdep.c
@@ -282,6 +282,12 @@
atomic_store_rel_int(&smp_started, 1);
}
+ /*
+ * Announce the CPU. This is done inside the spinlock so that APs don't
+ * trample on each others' output.
+ */
+ printcpuinfo();
+
mtx_unlock_spin(&ap_boot_mtx);
/* Enter the scheduler */

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 12, 7:03 PM (21 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23637003
Default Alt Text
D39810.id121760.diff (1 KB)

Event Timeline