From 2eead36f97faf5bdad1abd60a220c0af72a5526c Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Tue, 3 Dec 2024 14:34:43 +0100 Subject: Run a hart lottery on SMP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On systems with SMP multiple harts will try to run the kernel, and they will appear at random. But in this kernel, in order to keep things simple, we want to make sure that *only one* hart is running the show, as it greatly simplifies things on these kinds of systems. The solution is similar to what Linux does, which is to allow the first hart to initialize things, but then (and different to what Linux does), it will infinitely stall all the other harts that arrive at a random later point in time. In order to make this more apparent, I have also added a print message showing which hart is being used to run the whole thing. Signed-off-by: Miquel Sabaté Solà --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index bd53a84..77e20f6 100644 --- a/Makefile +++ b/Makefile @@ -148,9 +148,11 @@ archive: all ## # Hacking +CPUS ?= 4 + .PHONY: qemu qemu: clean $(IMAGE) usr - $(Q) $(QEMU) $(QEMU_FLAGS) -machine virt -kernel $(IMAGE) -initrd $(INIT) + $(Q) $(QEMU) $(QEMU_FLAGS) -machine virt -smp $(CPUS) -kernel $(IMAGE) -initrd $(INIT) .PHONY: gdb gdb: -- cgit v1.2.3