10588 Commits

Author SHA1 Message Date
Christian Helmuth
5076554f20 depot: update recipe hashes 2025-01-30 16:32:35 +01:00
Norman Feske
146f161383 gui_fader: precompute dithered 16x16 tile
This improves the performance of the Alpha_dither_painter in
the run/gui_fader scenario by about 3x.
2025-01-30 16:30:15 +01:00
Norman Feske
a5d3613f50 build: set -march=x86-64-v2 for x86_64
This allows for the use of SSE4.1 intrinsics.

Fixes #5440
2025-01-30 16:30:15 +01:00
Alexander Boettcher
279a02e449 sel4: increase resources for fb_bench
Issue #5423
2025-01-30 16:30:15 +01:00
Christian Helmuth
e90a4a905a 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-30 16:30:15 +01:00
Alexander Boettcher
b5a074dba1 libc: add missing header for qemu port 2025-01-30 16:30:15 +01:00
Josef Söntgen
acf1488e65 libnl: use fixed_stint.h for typedefs
Issue #5431.
2025-01-30 16:30:15 +01:00
Stefan Kalkowski
e113d37958 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-30 16:30:15 +01:00
Stefan Kalkowski
76aba79e0b 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-30 16:30:14 +01:00
Alexander Boettcher
2ad1c450ee sel4: add MSI support for x86
Fixes #5423
2025-01-30 16:30:14 +01:00
Alexander Boettcher
ea3ed25431 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-30 16:30:14 +01:00
Alexander Boettcher
935681a7f4 foc: support more caps
by increasing the base-foc internal cap indices implementation from 16bit
size to 28 bit.

Issue #5406
2025-01-30 16:30:14 +01:00
Benjamin Lamowski
02b7878229 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-30 16:30:14 +01:00
Benjamin Lamowski
ec5e1a6b4b 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-30 16:30:14 +01:00
Benjamin Lamowski
89f7834b17 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-30 16:30:14 +01:00
Norman Feske
ddeebbe513 libc: unify base types for arm_64 and riscv
Fixes #5431
2025-01-30 16:30:14 +01:00
Norman Feske
63b49fcdb3 Enable -ffreestanding by default
Fixes #5429
2025-01-30 16:30:14 +01:00
Christian Prochaska
9dee2fbaf3 qt6: install the SVG image format plugin
Fixes #5427
2025-01-30 16:30:14 +01:00
Christian Prochaska
b8cab63a15 qt6: fix dangling pointer in QGenodeWindowSurface
Fixes #5426
2025-01-30 16:30:14 +01:00
Christian Prochaska
bf7509312f qt6: use window title as label for GUI session
Fixes #5424
2025-01-30 16:30:14 +01:00
Alexander Boettcher
f28f97773d sculpt: use rom_fs for fiasco and foc
Issue #5406
2025-01-30 16:30:14 +01:00
Norman Feske
d1c4bc5115 vm_session: use Callable for with_state
Issue #5420
2025-01-30 16:30:14 +01:00
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