14251 Commits

Author SHA1 Message Date
d4f285bdfc Remove Block::Driver interface
This commit removes the aged Block::Driver interface that has already
been superseded by the Block::Request_stream API for some time now.
It is solely used by components whose existence is made redundant,
like 'lx_block', or old drivers, like the SD-Card driver for PL180
and old i.MX53/6 systems or the RPi 1, that have not seen active use
other than in the nightly CI runs.

Fixes #5522.
2025-04-29 08:24:12 +02:00
2f60a55327 Remove lx_block component
The 'lx_block' component uses the aged Block::Driver framework
internally and most if not all use-cases where it could be employed
can be addressed by using the 'vfs_block' component instead.

This commit also removes some run-scripts that make use of 'lx_block'
whose components are already excercised otherwise.

Issue #5522.
2025-04-29 08:24:12 +02:00
c889390685 hw: extend remote-cpu-call for destroy
Extend the remote cpu call to destroy a thread to be able to
destroy a vcpu as well. Change the vcpu_destroy syscall to
remotely destroy it when the scheduler of the other core has
chosen it at that same point in time.

Fix #5511
2025-04-29 08:24:12 +02:00
a11f203ae8 hw: remove virtualization directory in x86/arm_v8a
Remove additional directory layer for this feature that is
omnipresent in both architectures. It makes the code more easy
to read and follow.

Fix #5520
2025-04-29 08:24:12 +02:00
b125401dec hw: rename Kernel::Vm object to Kernel::Vcpu
Moreover this commit does:
* rename *_vm syscall to *_vcpu equivalents
* add missing inclusion guard
* fix several inclusion guards
* rename certain compilation units containing "vm"

Fix #5512
2025-04-29 08:24:12 +02:00
3fb8fc359d hw: add assertion into ~Cpu_context
Ref #5511
2025-04-29 08:24:12 +02:00
d3c0c27525 hw: setting thread as blocked works cross-core
Eliminate the assertion as it lets the kernel stall by any smp component
that calls thread's pause syscall, as long as the GENODE_RELEASE flag
isn't set.

Fix #5510
2025-04-29 08:24:12 +02:00
069a88232f hw: sanitize scheduler, cpu, and timer interplay
* Remove afiinity artefact from Cpu class
* Scheduler::need_to_schedule => Scheduler::ned_to_update (consistency)
* Don't re-use last scheduler context after new scheduling
  decision, might have been deleted (potential use-after-free)
* Move Timer::process_update into timer's interrupt handling routine
* Move execution time of Cpu_context into Scheduler::Context
* Re-order scheduler and idle context initialization (ref before initialized)

Ref #5509
2025-04-29 08:24:12 +02:00
3adca95137 cpu_sampler.run: fix 'assert'-proc change
Ref #5432
2025-04-10 16:05:41 +02:00
f9110541c8 run/image/uboot: hint architecture for FIT images
When invoking mkimage with '-f auto' the tool uses heuristics to
decide what kind of image to produce. It seems to be related to
the version of mkimage and/or its input data, whether this decision
is done right. Therefore, clearly state the target architecture.

Fix #5519
2025-04-10 15:56:36 +02:00
74b7374b7c gui_fader: sanitize buffer(mode) RPC
to avoid invalid ram dataspace capability errors if the mode is
invalid, e.g. 0x0

Fixes #5521
2025-04-10 15:53:41 +02:00
856c48e1a1 nitpicker: enhance fallback bounding box check
Solely consider sessions with valid bounding boxes for the decision
to use the fallback bounding box or not. New started capture clients may
require some time between capture session creation and actually capture
screen creation at which the bounding box becomes valid.

Issue #5521
2025-04-10 15:53:14 +02:00
9e96947ae9 capture session: specify viewport as rect
By giving the client a way to specify the origin of the viewport in
addition to the size, we can solve transformed (rotated, flipped)
output to screen buffers where the line length is larger than the
number of visible pixels.

Issue #5518
2025-04-10 15:39:28 +02:00
b72a6b3400 nova: remove legacy vCPU creation support
Vbox5 was the last user. Seoul and VBox6 using the Genode VM interface.

Issue #5492
2025-04-10 15:21:49 +02:00
016d63703d depot: update recipe hashes 2025-04-10 14:55:59 +02:00
a2058a8d21 capture session: add viewport as buffer attribute
This patch adds the viewport area to the interface.
It is not evaluated by the nitpicker GUI server yet.

Issue #5518
2025-04-10 14:55:59 +02:00
5d8a8257d6 boot_fb: use physical resolution of framebuffer
due to requirements introduced by #5428 to avoid errors alike:

Warning: surface 1376x768 mismatches texture 1366x768

Side effect of this is, that also pixels are captured which are not visible on
screen actually.

Issue #5428
Issue #5501
2025-04-10 14:55:59 +02:00
774cdec4bc okl4: use python3
Issue #5487
2025-04-10 14:55:59 +02:00
4c01ba1663 sculpt: version 25.04
Issue #5501
2025-04-10 14:55:59 +02:00
1ef80e86e2 base: introduce Local_rm for local Region_map
The new 'Local_rm' type offers a narrow interface for the interaction
with the component-local address space, managing the lifetime of
attachments by using the 'Allocation' API.

Fixes #5516
2025-04-10 14:55:57 +02:00
8c4bd7d9da gui_fader: restore previous dither-matrix indexing
The dither matrix is not perfectly random but provides a kind of
pseudo-random pattern that fits the original dithering approach with
global coordinate based indexing. If the matrix is offset by one line
each 16 pixels the pattern becomes visible as alternating light and dark
columns.

Follow-up commit to "gui_fader: precompute dithered 16x16 tile".

Issue #5501
2025-04-10 14:55:21 +02:00
84eb264786 util/attempt.h: mark 'Attempt' types as nodiscard
This catches bugs early on. E.g., when leaving an 'Allocation'
unused, it gets immediately deallocated, which is most probably not
intended. For regular 'Attempt' objects, this change encourages
the proper propagation of errors, or at least the logging of unexpected
conditions.

Fixes #5513
2025-04-10 14:55:21 +02:00
e380d0da95 base: use 'Allocation' interface for mem alloc
This patch converts the memory-allocator interfaces ('Allocator',
'Range_allocator') and their implementations ('Heap', 'Sliced heap',
'Slab', 'Allocator_avl', 'Synced_allocator') to the new 'Allocation'
utility. The new interface resides at base/memory.h whereas the
traditional allocators implement the new interface.

Down the road, the traditional allocators can successively be decoupled
from the traditional 'Allocator' and 'Range_allocator' interfaces.

Issue #5502
Issue #5245
2025-04-10 14:55:21 +02:00
30e200f4ae base/ram.h: rename Unmapped... to Constrained...
The 'Allocation' template clears the way for precisely differentiating
allocators via (a variety of) C++ types. It turns out that this approach
alleviate the need to consider the differentiation between
mapped/unmapped in ram.h.

With the new approach, a mapped allocator can be built as a template
taking a ram allocator (constrained/unconstrained) and a local
region-map (core local_rm, env local_rm) as ingredients.

Since the differentiation between constrained/unconstrained has its
natural place at ram.h, name the current RAM allocator
'Ram::Constrained_allocator', in anticipation of a future
'Ram::Unconstrained_allocator' with weakened error conditions.

Issue #5502
2025-04-10 14:55:21 +02:00
08010003e3 core: remove exception from Trace::Control alloc
This patch models the 'Trace::Control_area' as an allocator of slots
using the new 'Allocation' utility and thereby removes the former
exception-based error propagation.

Issue #5245
2025-04-10 14:55:21 +02:00
b4a746bc89 base/error.h: add raise() interface
The new 'raise' function can be used instead of 'throw' to keep the
framework headers void of C++ throw statements, which would otherwise
prevent the compilation of the headers with -fno-exceptions.

In the presence of the C++ runtime, the 'raise' implementation reflects
the supplied error value(s) as C++ exceptions of the appropriate type.
In the (future) optional absence of the C++ runtime, 'raise' remains
unresolved, which then gives us the assurance that the binary contains
no code path leading to 'raise', all error conditions must have been
covered in other ways than 'raise'.

For this reason, 'Genode::raise' is not provided by the base library
but the cxx library (C++ runtime). Once we allow components to opt out
of the cxx library, 'raise' will automatically become unresolved for
those strict components.

Issue #5245
2025-04-10 14:55:21 +02:00
fd5172e1f3 base/output.h: make Alloc_error printable
Issue #5245
2025-04-10 14:55:21 +02:00
146fd54f2d base/lib/symbols/ld: fix sorting order 2025-04-10 14:55:20 +02:00
e69e0e3f1c base/slab.h: remove exceptions from constructor
Issue #5245
2025-04-10 14:55:20 +02:00
73d6171850 util/attempt.h: make 'Attempt' printable 2025-04-10 14:55:20 +02:00
fee2f354dc util/attempt.h: introduce 'Ok' type
This type alleviates the need to re-introduce custom '*_ok' types
whenever a result can be an error but no value.
2025-04-10 14:55:20 +02:00
2e76f4fc58 base: move common exception types to exception.h
The univerally used exception types Out_of_ram, Out_of_caps, and Denied
used to be defined at quota_guard.h and ram_allocator.h whereas the
types are broadly used. This patch gathers those type definitions at
the central place exception.h instead, to gradually untangle the reliance
on exceptions, i.e., in quota_goard.h, and to make the output of error
messages printing exception types ('abort') more concise.

Issue #5245
2025-04-10 14:55:20 +02:00
7e0d2084fb base: add base/error.h for common error types 2025-04-10 14:55:20 +02:00
9febe62a78 app/dummy: use 'Ram' API
Issue #5502
2025-04-10 14:55:20 +02:00
689fc1eb93 Introduce new 'Ram' API types
The new types in base/ram.h model different allocation scenarios and
error cases by mere C++ types without using exceptions. They are meant
to replace the former 'Ram_allocator' interface. As of now, the
'Unmapped_allocator' closely captures the former 'Ram_allocator'
semantics. The 'Constrained_allocator' is currently an alias for
'Unmapped_allocator' but is designated for eventually allocating
mapped RAM.

In contrast to the 'Ram_allocator' interface, which talked about
dataspace capabilites but left the lifetime management of the
allocated RAM to the caller, the new API represents an allocation
as a guard type 'Allocation', which deallocates on destruction by
default.

Allocation errors are captured by a 'Result' type that follows
the 'Attempt' pattern.

As a transitionary feature, the patch largely maintains API
compatibility with the original 'Ram_allocator' by providing
the original (exception-based) 'Ram_allocator::alloc' and
'Ram_allocator::free' methods as a wrapper around the new
'Ram::Constrained_allocator'. So components can be gradually
updated to the new 'Ram::' interface.

Issue #5502
2025-04-10 14:55:15 +02:00
e9558a36f9 util/allocation.h: base type for allocation objs
The 'Allocation' type represents the result of an allocator, which
guards the lifetime of the allocation. The 'Allocation::Attempt' type is
a suitable result type for allocators that need to reflect either an
successful allocation or an error condition.

Issue #5502
2025-04-10 14:27:21 +02:00
2dfaeab7c2 util/attempt.h: add 'Unique_attempt' utility
The new variant combines the attempt with unique-pointer semantics
and is thereby usable for returning non-copyable objects such as
RAM 'Allocation'.

Issue #5502
2025-04-10 14:27:21 +02:00
7d4b6b6bd5 ports: replace ftp urls to http
Fixes #5505
Fixes #5498
2025-04-10 14:27:21 +02:00
4ec277058e intel/display: use drm vblank wait support
Fixes #5415
2025-04-10 14:27:21 +02:00
d143ed7e47 libc: extended symbols file needed by fio
Fixes #5507.
2025-04-10 14:27:21 +02:00
b4e6b96a19 libc: implement _SC_CLK_TCK
Return the same value that is used in FreeBSD.

Issue #5507.
2025-04-10 14:27:21 +02:00
e5cbf602e0 gpu/intel: RC6 support
* add RC6 support for GPU GEN9 (Skylake+) and GEN12 (Tiger Lake+), RC6 is
  entered by software after CHECK_INACTIVEus of inactivity. When a new
  Vgpu is scheduled we trigger a resume from RC6.

* increase VGPU-watchdog timeout to 300ms

issue #5504
2025-04-10 14:27:21 +02:00
721e2c634a gpu/intel: Make mmio member of Reset
issue #5504
2025-04-10 14:27:21 +02:00
dea2ed1e41 dialog: adaptation to root dir via session label
This is a follow-up fix for "file-system session: root dir via session
label".

Issue #5445
2025-04-10 14:27:21 +02:00
7e420a68a6 Remove C++ exceptions from 'Thread' API
After constructed, a 'Thread' object may remain in a dysfunctional state
should the stack allocation have failed. This condition is no longer
reflected as a C++ exception but as result value of 'Thread::info()'.

Keep 'Thread::name' as public constant because the stack is not always
available for storing the name.

The 'stack_top' accessor has been removed because this information is
already provided by 'Thread::info()'.

Issue #5245
2025-04-10 14:27:21 +02:00
0736db0863 Revert "sculpt: consider screen pos for pointer tracking"
Absolute motion events already carry global coordinates (fader
session).

This reverts commit 3dc05a0a89f00e40d194e7d895b525b405f57f7e.

Issue #5501
2025-04-10 14:26:47 +02:00
33fab30a1f intel/display: use phys resolution for capture
In the "<merge>" case, only a subset of the actual
framebuffer was (intentionally) captured to reduce cpu and memory bandwith.
The new blit tool however requires, by now, that the capture size must
be identical to the framebuffer in use.

Issue #5501
2025-04-10 14:26:47 +02:00
d726d70795 capture session: allow arbitrarily sized buffers
This patch reverts the 8px padding of capture buffers as introduced
by commit "nitpicker: alloc padded capture buffer". The padding was
introduced to ease the use of SIMD instructions operating on the capture
buffer (blit2front) assuming that practical screen dimensions are a
multiple of 8px. Unfortunately this assumption is wrong. E.g., some
laptops use a resolution of 1366x768. So the back2front copying cannot
sidestep the handling of the finicky special cases.

Issue #5428
Issue #5501
2025-04-10 14:26:47 +02:00
3909f9b6e4 blit: lift 8x8 restriction from back2front
This patch allows for the use of the back2front operation with textures
that are not a multiple of 8x8 pixels, which makes the utility
compatible with screen resolutions like 1366x768. In such cases, the
implementation falls back to the non-SIMD variant.

Issue #5428
Issue #5501
2025-04-10 14:26:47 +02:00
3ba0e6fda3 intel/display: remove diagnostic message on init
Issue #5501
2025-04-10 14:24:31 +02:00