13790 Commits

Author SHA1 Message Date
Norman Feske
2407968242 sandbox: don't use Xml_node as return value
Issue #5411
2025-01-30 16:30:14 +01:00
Norman Feske
33446be8ac monitor/sandbox: use Callable
Issue #5420
2025-01-30 16:30:14 +01:00
Norman Feske
414afba682 cpu_sampler: propagate Create_thread_error
The accounting of caps for the UTCB allocation on base-hw puts pressure
on the out-of-ram/caps handling of Create_thread_result in the CPU
sampler. This patch implements the formerly missing error handling.

Issue #5408
2025-01-30 16:30:14 +01:00
Stefan Kalkowski
b0052a71be hw: remove unused object pool of pager ojects
Fix genodelabs/genode#5417
2025-01-30 16:30:14 +01:00
Stefan Kalkowski
0d648eae62 hw: sanitize kernel's signal datastructures
* Move all Kernel::Signal_* structures to kernel/signal.*
* Remove return value of kill_signal_context, which wasn't evaluated
* Remove Kernel::Signal_context::can_kill
* Remove Kernel::Signal_context::can_submit
* Remove Kernel::Signal_receiver::can_add_handler
* Turn nullptr into cxx nullptr instead of just zero
* Turn boolean values into true/false instead of one/zero
* Always add to signal FIFO also if submit counter
  cannot get increased enough

Fix genodelabs/genode#5416
2025-01-30 16:30:14 +01:00
Stefan Kalkowski
2728853005 hw: implement helping of pager threads
Instead of blocking in case of exceptions and MMU faults, delegate
the faulter's scheduling context to the assigned pager thread.

Fix genodelabs/genode#5318
2025-01-30 16:30:14 +01:00
Stefan Kalkowski
1194652d20 hw: move remaining pager code to pager.cc
Consolidate core's ha-specific pager code in one and the same compilation unit.

Ref genodelabs/genode#5318
2025-01-30 16:30:14 +01:00
Stefan Kalkowski
fd78fb4de3 hw: pager thread per cpu
Instatiate a separate pager thread for each cpu core. Every time a pager
object gets managed by the Pager_entrypoint, assign it to the pager thread
on the same cpu core.

Ref genodelabs/genode#5318
2025-01-30 16:30:14 +01:00
Stefan Kalkowski
ae1e4918a7 hw: use enums in stack base definition
Ref genodelabs/genode#5319
2025-01-30 16:30:14 +01:00
Stefan Kalkowski
f97c8cacde hw: sanitze cpu context
* Rename Kernel::Cpu_job to Kernel::Cpu_context (alias Kernel::Cpu::Context)
* State first Cpu affinity of Cpu::Context at construction time
* Move cpu affinity argument from kernel syscall create_thread to start_thread
* Ensure that Cpu pointer is always valid

Fix genodelabs/genode#5319
2025-01-30 16:30:14 +01:00
Stefan Kalkowski
e275787119 hw: add missing six-arguments syscall for riscv
Ref genodelabs/genode#5319
2025-01-30 16:30:14 +01:00
Stefan Kalkowski
025043cdcf hw: generalize IPC-helping to a common mechanism
* Removes helping from Ipc_node and Thread class
* Implement helping as mechanism of Scheduler::Context

Ref genodelabs/genode#5318
2025-01-30 16:30:14 +01:00
Stefan Kalkowski
dc37c396cf hw: ensure board_name is set as depot build
When no BOARD variable is set via the build environment,
the board_name in the platform_info ROM needs to be set either.

Ref genodelabs/genode#5360
Fix genodelabs/genode#5414
2025-01-30 16:30:14 +01:00
Alexander Boettcher
9239b36f05 platform: be robust on IRQ creation failure
In case invalid IRQ numbers are used (255 on x86), the IRQ session creation
request may be denied and the platform driver is killed because of the
uncatched exception, which must be avoided.

Issue #5406
2025-01-30 16:30:14 +01:00
Alexander Boettcher
91a58d3e98 foc: increase max count for RPC caps in core
to boot Sculpt

Issue #5406
2025-01-30 16:30:14 +01:00
Alexander Boettcher
8a5fd27b46 foc: add support to add ACPI rsdp in platform info
which is required for UEFI boots.

Issue #5406
2025-01-30 16:30:14 +01:00
Alexander Boettcher
1a0a1b3f27 acpi: be robuster on IO_MEM session denied
Issue #5406
2025-01-30 16:30:14 +01:00
Alexander Boettcher
ae90a8a10d platform/pc: be robust on IOMMU claiming
Issue #5406
2025-01-30 16:30:13 +01:00
Alexander Boettcher
0d81a104ad base: use Map_local_result in io_mem _map_local(...)
Issue #5406
2025-01-30 16:30:13 +01:00
Alexander Boettcher
12f87260c0 nova: add x2apic support
Fixes #5413
2025-01-30 16:30:13 +01:00
Johannes Schlatow
a0366120ef base-nova: allow access to IOAPIC
This allows the platform driver to control remapping of legacy
interrupts.

genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Johannes Schlatow
b07107c8c6 platform/pc: re-use init code during resume
genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Johannes Schlatow
aaeb21136b platform/pc: remove Env from generate() methods
This was a relic from a time where we dumped the page tables from NOVA
and therefore needed to attach the corresponding dataspaces.

genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Johannes Schlatow
4a0ce32faa platform/pc: implement IRQ remapping for Intel
genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Johannes Schlatow
3c5b88111c platform/pc: use queued invalidation interface
genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Johannes Schlatow
4790bc03fc platform/pc: move register-based invalidation
This is in preparation of implementing the queued-invalidation
interface.

genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Johannes Schlatow
c767c2b129 platform/pc: implement IOAPIC
genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Johannes Schlatow
5006b009cb platform: add IRQ remapping support
genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Johannes Schlatow
b136ed0dfc pci_decode: report IOAPIC devices
genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Johannes Schlatow
f85068e1f2 acpi_drv: report IOAPIC devices
genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Johannes Schlatow
ce70b44087 acpi_drv: reflect DMAR properties in report
genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Christian Prochaska
6c1af53909 qt6: add 'i18n' example
Fixes #5421
2025-01-30 16:30:13 +01:00
Norman Feske
916d036b58 sculpt_manager: use Callable
Issue #5420
2025-01-30 16:30:13 +01:00
Norman Feske
69e8e9f3f1 base: add util/callable.h
Fixes #5420
2025-01-30 16:30:13 +01:00
Christian Prochaska
fe18db4d34 qt6: add 'SvgWidgets' files
Fixes #5419
2025-01-30 16:30:13 +01:00
Norman Feske
2ac0a7368c base: remove base/internal/unmanaged_singleton.h
Fixes #5418
2025-01-30 16:30:13 +01:00
Norman Feske
580456ef7b test-libc_fifo_pipe: adjust cap_quota
The proper accounting of caps consumed for allocation of UTCBs on
base-hw slightly increases the costs per thread.

Issue #5408
2025-01-30 16:30:13 +01:00
Norman Feske
ec9caa3490 libc: remove use of unmanaged_singleton
Issue #5418
2025-01-30 16:30:13 +01:00
Norman Feske
3900199d2f libc: host fd alloc as part of Libc::Kernel
This avoids the need to construct the fd_alloc out of thin air using
unmanaged_singleton.

Issue #5418
2025-01-30 16:30:13 +01:00
Benjamin Lamowski
05522696c7 hw: x86_64: refactor Vm_session_component
On x86, the `Vm_session_component` obscured the differences between SVM
and VMX.

Separate the implementations, factor out common functionality and
address a number of long-standing issues in the process:

- Allocate nested page tables from Core_ram_allocator as a more suitable
  abstraction and account for the required memory, subtract the
  necessary amount of RAM from the session's `Ram_quota` *before*
  constructing the session object, to make sure that the memory
  allocated from the `Core_ram_allocator` is available from the VMM's
  RAM quota.
- Move the allocation of Vcpu_state and Vcpu_data into the Core::Vcpu
  class and use the Core RAM Allocator to allocate memory with a known
  physical address.
- Remove the fixed number of virtual CPUs and the associated reservation
  of memory by using a Registry for a flexible amount of vCPUs.

Issue #5221
2025-01-30 16:30:13 +01:00
Benjamin Lamowski
922fdd1628 hw: factor out Vmid_allocator
Move the static `Vmid_allocator` in each `Vm_session_component` into a
common header file.

Issue #5221
2025-01-30 16:30:13 +01:00
Norman Feske
c0c6f3f660 os/session_policy.h: avoid use of Xml_node assign
Issue #5411
2025-01-30 16:30:13 +01:00
Norman Feske
fe40a3c45e xml_node.h: construct from Const_byte_range_ptr
This patch allows for the construction of 'Xml_node' objects from a
'Const_byte_range_ptr' argument as a safer alternative to the pair
of addr, max_len arguments.

Issue #5411
2025-01-30 16:30:13 +01:00
Norman Feske
bdb8d4d881 ldso: avoid use of Xml_node assign operator
Issue #5411
2025-01-30 16:30:13 +01:00
Christian Helmuth
cadf774fa0 tool/port/metadata: fix usage output
Variable ECHO is not set as common.inc is not included.
2025-01-30 16:30:13 +01:00
Josef Söntgen
4a2c52d8f4 symbols/libc: add open_memstream function 2025-01-30 16:30:13 +01:00
Norman Feske
329dbc56d0 base/thread.h: guard deref of '_logger()'
The pointer returned by '_logger()' can be a nullptr, in particular
while tracing is (temporarily) inhibited. This patch ensures that
the 'Thread::trace' accessors never operate on a nullptr.

Fixes #5410
2025-01-30 16:30:13 +01:00
Norman Feske
a06fd84b75 util/construct_at.h: ensure legit sizeof(Placeable)
If the memory for the designated object is allocated as char[sizeof(T)],
the size of 'Placeable' is expected to equal the size of T. However, in
principle, the compiler has the freedom to inflate the 'Placeable'
object. The static assertion gives us the assurance that the compiler
does not violate our assumption.
2025-01-30 16:30:13 +01:00
Norman Feske
1b0829e8a9 gems: ABI and depot recipe for dialog API
This exposes makes the dialog API usable for users of Goa. It turns the
former static dialog library to a shared object and accompanied symbols
file, and adds depot recipes for the library and API.

Issue #5409
2025-01-30 16:30:13 +01:00
Norman Feske
c978df4186 nitpicker: send pointer pos to global key handler
To enable a global key handler to implement motion gestures while a
global key is held, it needs to know the current pointer position at the
time when the global key sequence starts. This is prerequisite for
the window layouter's ability to drag windows by clicking anywhere
within the window while holding a global key.

Issue #5403
2025-01-30 16:24:36 +01:00