From 9bcc35534574c6fb0396016b075ae7cf139bc8c3 Mon Sep 17 00:00:00 2001 From: Markus Werner Date: Mon, 7 Oct 2024 14:19:55 +0200 Subject: [PATCH 1/3] fix: hartid 0 was not shown in the Boot prompt --- kernel/main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/main.c b/kernel/main.c index f0d3171d4e..70b7c29e5a 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -29,6 +29,8 @@ main() fileinit(); // file table virtio_disk_init(); // emulated hard disk userinit(); // first user process + printf("\n"); + printf("hart %d started\n", cpuid()); __sync_synchronize(); started = 1; } else { From 15df1df2bfae5ee5ceb42d72efcc402a08f94a17 Mon Sep 17 00:00:00 2001 From: Markus Werner Date: Mon, 7 Oct 2024 14:26:02 +0200 Subject: [PATCH 2/3] feature: Add waitcylcle output It is intressting to see how many cycle the other CPU's have to wait before they will be initialized. --- kernel/main.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/kernel/main.c b/kernel/main.c index 70b7c29e5a..a7672cf970 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -10,6 +10,9 @@ volatile static int started = 0; void main() { + // Initialize an array to hold a waitcycle count per cpu. + uint waitcycle[NCPU]; + if(cpuid() == 0){ consoleinit(); printfinit(); @@ -34,10 +37,12 @@ main() __sync_synchronize(); started = 1; } else { - while(started == 0) - ; + waitcycle[cpuid()]=0; + while(started == 0){ + waitcycle[cpuid()]= waitcycle[cpuid()] + 1; //count the waitcylce per hart + } __sync_synchronize(); - printf("hart %d starting\n", cpuid()); + printf("hart %d starting: wait cycle %d\n", cpuid(), waitcycle[cpuid()] ); kvminithart(); // turn on paging trapinithart(); // install kernel trap vector plicinithart(); // ask PLIC for device interrupts From a9d9f864bcb8e0e0957489d8f234bf95f329985d Mon Sep 17 00:00:00 2001 From: Markus Werner Date: Mon, 7 Oct 2024 14:29:00 +0200 Subject: [PATCH 3/3] style: Bootoutput Ensure kernel boot message is consistently spaced from other output --- kernel/main.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/kernel/main.c b/kernel/main.c index a7672cf970..e9c2bda358 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -16,9 +16,7 @@ main() if(cpuid() == 0){ consoleinit(); printfinit(); - printf("\n"); - printf("xv6 kernel is booting\n"); - printf("\n"); + printf("\nxv6 kernel is booting\n\n"); kinit(); // physical page allocator kvminit(); // create kernel page table kvminithart(); // turn on paging