13835 Commits

Author SHA1 Message Date
Alexander Boettcher
00bad9bee5 sel4: increase resources for fb_bench
Issue #5423
2025-01-24 16:46:05 +01:00
Alexander Boettcher
ca7bcc2d80 fixup "sel4: add MSI support for x86"
Issue #5423
2025-01-24 16:46:00 +01:00
Christian Helmuth
8e0fe39248 libdrm: explicitly convert values to __u64
Prevent errors like follows.

  error: invalid cast from type ‘size_t’ {aka ‘long unsigned int’} to type ‘__u64’ {aka ‘long long unsigned int’}

Issue #5431
2025-01-24 15:39:37 +01:00
Alexander Boettcher
a376ebafa7 libc: add missing header for qemu port 2025-01-24 12:49:16 +01:00
Norman Feske
f9f874d7e4 fixup "libc: unify base types for arm_64 and riscv" (revert unintended __int64_t modification)
Fixes #5431
2025-01-24 11:50:45 +01:00
Josef Söntgen
9b61f00187 libnl: use fixed_stint.h for typedefs
Issue #5431.
2025-01-23 19:28:11 +01:00
Stefan Kalkowski
8730657e08 libusb: don't freeze when device vanishs
Instead of freezing, return corresponding libusb error code if the
USB device got disconnected. Therefore, components using the library
can continue to work otherwise.

Fix genodelabs/genode#5434
2025-01-23 16:04:09 +01:00
Stefan Kalkowski
35e0a2b144 base: add missing wakeup signal in child framework
In Child::deliver_session_cap a signal to wakeup a service after
altering its session ROM was missing when the requesting client
that does not longer exist.

Fix genodelabs/genode#5435
2025-01-23 15:48:55 +01:00
Alexander Boettcher
d12b491a5c sel4: add MSI support for x86
Fixes #5423
2025-01-23 15:45:50 +01:00
Alexander Boettcher
130efed0cb base: support specifying PCI bdf on irq creation
Required by the seL4 kernel interface for MSI creation and by another upstream
kernel.

Issue #5423
2025-01-23 15:45:34 +01:00
Benjamin Lamowski
004aaf0235 fixup; hw: always serialize rdtsc reads
Since rdtsc() provides ordered timestamps now, we should reordering of
statements by the compiler too.

Issues #5215, #5430
2025-01-23 08:37:57 +01:00
Alexander Boettcher
27c2064a3c foc: support more caps
by increasing the base-foc internal cap indices implementation from 16bit
size to 28 bit.

Issue #5406
2025-01-22 15:31:36 +01:00
Christian Helmuth
be7df4fa82 fixup "hw: always serialize rdtsc reads" (final cosmetic touches) 2025-01-22 14:41:48 +01:00
Benjamin Lamowski
6793143d31 hw: always serialize rdtsc reads
While implementing TSC calibration in #5215, the issue of properly serializing
TSC reads came up. Some learnings of the discussion were noted in #5430.

Using `cpuid` for serialization as in Trace::timestamp() is portable,
but will cause VM exits on VMX and SVM and is therefore unsuitable to
retain a roughly working calibration loop while running virtualized.
On the other hand on most AMD systems, dispatch serializing `lfence`
needs to be explicitly enabled via a non-architectural MSR.

Enable setting up dispatch serializing lfence on AMD systems and always
serialize rdtsc accesses in Hw::Tsc::rdtsc() for maximum reliability.

Issues #5215, #5430
2025-01-22 14:41:48 +01:00
Christian Helmuth
28ecbbbb71 fixup "hw: calibrate Local APIC via ACPI timer" (final cosmetic touches)
and one bug fix
2025-01-22 14:41:48 +01:00
Benjamin Lamowski
8bdddbd46a hw: calibrate Local APIC via ACPI timer
Upto now, bootstrap used the Programmable Interval Timer to set a
suitable divider and determine the frequency of the Local APIC.
The PIT is not available on recent x86_64 hardware anymore.

Move Local APIC calibration to bootstrap and use the ACPI timer as a
reference. Clean up hw's timer implementation a little and disable the
PIT in bootstrap.

Fixes #5215
2025-01-22 14:41:48 +01:00
Christian Helmuth
103d03b590 fixup "hw: calibrate TSC via ACPI timer" (final cosmetic touches) 2025-01-22 14:41:48 +01:00
Benjamin Lamowski
5def882001 hw: calibrate TSC via ACPI timer
To get the Time Stamp Counter's frequency, hw relied on a complex and
incomplete algorithm.

Since this is a one-time initialization issue, move TSC calibration to
bootstrap and implement it using the ACPI timer.

Issue #5215
2025-01-22 14:41:48 +01:00
Norman Feske
da65626cdd libc: unify base types for arm_64 and riscv
Fixes #5431
2025-01-22 10:12:55 +01:00
Norman Feske
cdbc31add8 fixup "Enable -ffreestanding by default" (libgcov, x86emu) 2025-01-22 10:12:47 +01:00
Norman Feske
b455139e8c Enable -ffreestanding by default
Fixes #5429
2025-01-21 12:30:57 +01:00
Christian Prochaska
b4f4a6db09 qt6: install the SVG image format plugin
Fixes #5427
2025-01-20 17:34:01 +01:00
Christian Prochaska
d3d901886f qt6: fix dangling pointer in QGenodeWindowSurface
Fixes #5426
2025-01-20 17:33:57 +01:00
Stefan Kalkowski
0d4d23a161 fixup "hw: implement helping of pager threads" (fix bomb) 2025-01-20 16:33:56 +01:00
Stefan Kalkowski
827401ee2d fixup "hw: implement helping of pager threads" (managed ds pf faults) 2025-01-17 14:38:09 +01:00
Christian Prochaska
fa9373cbd3 qt6: use window title as label for GUI session
Fixes #5424
2025-01-17 08:56:22 +01:00
Alexander Boettcher
bfaacb1ada fixup "base: use Dataspace_attr in io_mem _map_local(...)" - fiasco nightly failure
Issue #5406
2025-01-16 13:28:56 +01:00
Alexander Boettcher
8eae6501b7 tool: use bender hwp options also for foc and seL4
Issue #5406
2025-01-16 11:37:04 +01:00
Alexander Boettcher
e840a3f8f9 sculpt: use rom_fs for fiasco and foc
Issue #5406
2025-01-16 11:36:27 +01:00
Alexander Boettcher
7c5f879b91 squash "base: use Dataspace_attr in io_mem _map_local(...)" - rename to "base: use Map_local_result in io_mem _map_local(...)"
Issue #5406
2025-01-16 11:34:47 +01:00
Norman Feske
2b566042ad fixup "gems: ABI and depot recipe for dialog API" 2025-01-15 17:54:33 +01:00
Norman Feske
6e82520165 fixup "vm_session: use Callable for with_state" 2025-01-15 17:52:30 +01:00
Norman Feske
1677a36225 fixup "monitor/sandbox: use Callable" (more callables) 2025-01-15 17:44:29 +01:00
Norman Feske
c564013a5d vm_session: use Callable for with_state
Issue #5420
2025-01-15 16:59:19 +01:00
Norman Feske
d033e4c153 sandbox: don't use Xml_node as return value
Issue #5411
2025-01-15 16:07:59 +01:00
Norman Feske
c5e6d071e5 monitor/sandbox: use Callable
Issue #5420
2025-01-15 15:54:42 +01:00
Norman Feske
68613c8265 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-15 15:13:03 +01:00
Stefan Kalkowski
67985e2ba9 hw: remove unused object pool of pager ojects
Fix genodelabs/genode#5417
2025-01-15 14:54:43 +01:00
Stefan Kalkowski
673c97b3e6 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-15 14:54:39 +01:00
Stefan Kalkowski
3bdfb078bf 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-15 14:54:28 +01:00
Stefan Kalkowski
84cabaf9b7 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-15 14:54:12 +01:00
Stefan Kalkowski
f2d91fd56a 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-15 14:53:54 +01:00
Stefan Kalkowski
a5664ba5c0 hw: use enums in stack base definition
Ref genodelabs/genode#5319
2025-01-15 14:53:35 +01:00
Stefan Kalkowski
7e4decfacc 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-15 14:52:40 +01:00
Stefan Kalkowski
d9ca56e1ed hw: add missing six-arguments syscall for riscv
Ref genodelabs/genode#5319
2025-01-15 14:52:34 +01:00
Stefan Kalkowski
7010dbbbbb 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-15 14:52:25 +01:00
Stefan Kalkowski
b7d3d8237b 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-15 14:47:07 +01:00
Norman Feske
f4c255955f fixup "base: remove base/internal/unmanaged_singleton.h" (armv6) 2025-01-15 14:32:40 +01:00
Alexander Boettcher
13abc33ec9 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-15 12:24:45 +01:00
Alexander Boettcher
2e3e57f50a foc: increase max count for RPC caps in core
to boot Sculpt

Issue #5406
2025-01-15 08:58:10 +01:00