From 7ebd3a086adba526a15083030fe40a5f04cb5fcf Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Fri, 14 Oct 2022 11:51:59 +0200 Subject: [PATCH] nova: avoid reset on machines with too many CPUs The NOVA kernel and Genode's roottask core are configured to be runnable with up to 64 CPUs (MAX_SUPPORTED_CPUS in core resp. NUM_CPU in kernel). On machines with more CPUs a reset occurred. The commit checks for this case, bootstraps the first 64 CPUs only, and sends all other CPUs to sleep. Also, the platform_info ROM size is increased to host information about more than 32 CPUs. Issue #4640 --- repos/base-nova/ports/nova.hash | 2 +- repos/base-nova/ports/nova.port | 2 +- repos/base-nova/src/core/platform.cc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/repos/base-nova/ports/nova.hash b/repos/base-nova/ports/nova.hash index 26c3ed6a4b..8dc8cb7754 100644 --- a/repos/base-nova/ports/nova.hash +++ b/repos/base-nova/ports/nova.hash @@ -1 +1 @@ -9ad770935115d201863fd83924e4684b14b8b56f +ab5601025e5e69a30f03219c3be108ff3d866ce4 diff --git a/repos/base-nova/ports/nova.port b/repos/base-nova/ports/nova.port index a20fb070fb..f2b3c2c941 100644 --- a/repos/base-nova/ports/nova.port +++ b/repos/base-nova/ports/nova.port @@ -4,7 +4,7 @@ DOWNLOADS := nova.git # r10 branch URL(nova) := https://github.com/alex-ab/NOVA.git -REV(nova) := a34076e7b8d48d08c2edee7754eadad8b6ea5312 +REV(nova) := 048109941862356b4785a50d1ef012d2ad9761c5 DIR(nova) := src/kernel/nova PATCHES := $(sort $(wildcard $(REP_DIR)/patches/*.patch)) diff --git a/repos/base-nova/src/core/platform.cc b/repos/base-nova/src/core/platform.cc index bb887537f9..8a563515c9 100644 --- a/repos/base-nova/src/core/platform.cc +++ b/repos/base-nova/src/core/platform.cc @@ -677,7 +677,7 @@ Platform::Platform() rom_name, " as ROM module"); }); }; - export_pages_as_rom_module("platform_info", 1, + export_pages_as_rom_module("platform_info", 1 + (MAX_SUPPORTED_CPUS / 32), [&] (char * const ptr, size_t const size) { Xml_generator xml(ptr, size, "platform_info", [&] () {