3365 Commits

Author SHA1 Message Date
Alexander Boettcher
14cfc765c6 intel/gpu: allocate aperture on demand
in order to support running intel/gpu next to boot_fb, which has access
to part of the mmio aperture. The aperture is tried to be accessed not
before a Platform client (intel/display) or the first GPU client
appears.

Fixes #5497
2025-04-10 14:24:11 +02:00
Christian Helmuth
5619ccd940 Set USB bios_handoff="no" in run scripts
This is the default setting in Sculpt currently, so use it also
for testing.
2025-04-10 14:24:11 +02:00
Norman Feske
af3e8725ca Rename 'Constrained_ram_*' to 'Accounted_ram_*'
Fixes #5495
2025-04-10 14:24:11 +02:00
Johannes Schlatow
1df55bd2dc platform: use default domain only as fallback
The default IOMMU domain is used as a default if the kernel has IOMMU
support and if devices are not linked explicitly linked to a IOMMU
device. As soon as an IOMMU device is present, the kernel IOMMU is never
used. Hence, there is no point in maintaining the default domain if
there are other domains present.

genodelabs/genode#5494
2025-04-10 14:24:11 +02:00
Johannes Schlatow
e4704a1d39 platform: fix potential double insertion
When a session component has multiple IOMMU domains and `add_range()`
fails not on the first but on another domain, the range is not removed
from the first domain. This causes double insertion on the next try.

genodelabs/genode#5494
2025-04-10 14:24:11 +02:00
Norman Feske
7187499133 block_tester: modernize internal structure
Don't copy Xml_node, remove the use of exceptions, split test mechanics
from the scenario's data representation, avoid inheritance, use const
where possible.

Note that this patch also changes the batching of the <replay> scenario.
Unlike the other scenarios, it did not use to cap the maximum number of
jobs according to 'batch' attribute. The interpretation of the 'batch'
attribute has now been unified.

Issue #5411
Fixes #5489
2025-04-10 14:24:11 +02:00
Johannes Schlatow
9fdffcaa81 event_filter: add touch-gesture filter
Add configurable swipe and hold gestures.

genodelabs/genode#5491
2025-04-10 14:24:11 +02:00
Norman Feske
6edbfbf7c3 gems: don't copy Xml_node
Issue #5411
2025-04-10 14:24:11 +02:00
Norman Feske
636eb7b53f os: don't copy Xml_node
As this patch changes 'Vfs::File_system_factory::create', the
VFS plugins must be adapted, now taking 'Xml_node const &' as
argument.

Issue #5411
2025-04-10 14:18:41 +02:00
Norman Feske
25d4b8f944 vfs_block.run: add missing build of vfs libs 2025-04-10 14:15:34 +02:00
Norman Feske
97ea0d15ec sandbox: don't copy Xml_node
Issue #5411
2025-04-10 14:14:07 +02:00
Norman Feske
7aefaff646 os/buffered_xml.h: don't copy Xml_node
The public 'xml' const member replaces 'with_xml_node()' and the 'xml()'
accessor.

Issue #5411
2025-04-10 14:14:07 +02:00
Norman Feske
05d69a0bb3 os: increase mtime resolution to milliseconds
This patch changes the 'Timestamp' type of the VFS and file-system
session to an unsigned 64-bit value holding the number of milliseconds
since the UNIX epoch (beginning of 1970).

The special case of an invalid timestamp has been removed as it was
never consistently handled anyway.

In contrast to the POSIX timespec, which represents tv_sec and tv_nsec
both as signed values, this patch uses an unsigned value because the
interpretation of negative tv_sec and tv_nsec values is muddy.
Hypothetical modification times older that 1970 are capped at 1970.

Fixes #3511
2025-04-10 14:14:07 +02:00
Johannes Schlatow
9e2e592283 sculpt_manager: touch control of popup dialog
When trying to control the popup dialog with touch events, the dialog
was immediately closed (on any touch). This was a consequence of
evaluating the dialog's hover state without waiting for the
corresponding hover report. For regular motiong events, the hover report
is updated when the pointer moves. For touch events, however, the
hover report is only updated when the touch occurs. We therefore need to
wait for the hover report that corresponds to the touch event before
deciding about closing the popup dialog.

Since menu_view's hover report is not updated for clicks/touches outside any
dialog, we are now using nitpicker's hover report, which also got
augmented by the sequence number in order to be correlated with the
click/touch event.

Fixes #5485
2025-04-10 14:13:26 +02:00
Norman Feske
1336495858 nitpicker: re-eval pointer on panorama change
Whenever the panorama changes, eagerly re-evaluate the validity of the
current pointer position. Otherwise, the pointer may stay at an invisible
position until the next input motion happens. During this intermediate
phase, the position featured in the hover report cannot reliably be
matched against the panorama report (as needed by the sculpt manager
to let the leitzentrale GUI follow the pointer).

Issue #5370
2025-04-10 14:13:26 +02:00
Norman Feske
38650149b6 nitpicker: report both xpos,ypos for pointer
Don't omit either attribute whenever the value is 0. If the pointer is
defined, both attributes are reported. This way, the presence/absence
of the attribute expresses the validity of the pointer.

Issue #5370
2025-04-10 14:13:26 +02:00
Norman Feske
2e48641c13 nitpicker: don't use fallback if capture present
This patch prevents the use of stale information (bounding box of most
recently closed capture session) unless no capture session is present.
Otherwise, an intermediately but no longer present capture client
(a high-res display at boot positioned at panorama position (0, 0))
would permit the pointer to move at the originally occupied area even
though the current capture client do not capture this whole area.

Issue #5370
2025-04-10 14:13:26 +02:00
Benjamin Lamowski
8561f7724d fb_sdl: don't treat host warning as error
The sdl2-compat library from version 2.30.54 will issue the warning
"#warning SDL_config.h might be incomplete, good luck"
on unrecognized platforms, introduced with commit f4abaea[1].

Add -Wno-error=cpp for fb_sdl to prevent this warning to be treated as
an error.

Fixes #5476

[1] f4abaea268u
2025-04-10 14:13:26 +02:00
Sebastian Sumpf
92086cce68 genode_c_api/socket: add label to socket init
Add label argument to genode_socket_init that can be/is used to label
possible connecions.

issue #5471
2025-04-10 14:13:26 +02:00
Sebastian Sumpf
ed77207963 os: move vfs/lxip to vfs/ip from dde_linux
Because the sources are now used by lwip/lxip, make them accessible in a
public place.

issue #5471
2025-04-10 14:13:25 +02:00
Sebastian Sumpf
67c7313f5e genode_c_api/nic_client: add link_state support
Support for the link state signal was missing.

issue #5471
2025-04-10 14:12:38 +02:00
Sebastian Sumpf
488fcfd1a3 genode_c_api/socket: add wakeup_remote + sock_info
* add genode_socket_wakeup_remote and genode_socket_register_wakeup
  which are used to support Vfs::Remote_io on the IP stack side

* add genode_socket_info in order to retrieve the address configuration
  from the IP stack

issue #5471
2025-04-10 14:12:38 +02:00
Sebastian Sumpf
0e48ea08cf os: move genode_c_api/nic_client from lxip to os
The Nic-client C-API is based on the Uplink C-API.

issue #5471
2025-04-10 14:12:37 +02:00
Sebastian Sumpf
a57ebc55fa os: move genode_c_api/socket.h from lxip to os
Move lxip local socket C-API to os/include/genode_c_api

issue #5471
2025-04-10 14:12:37 +02:00
Josef Söntgen
8b5b5cda76 vfs/xoroshiro: add PRNG plugin using Xoroshiro128+
This plugin provides a PRNG based on the Xoroshiro128+ algorithm
that reseeds itself after a specific amount of state was consumed.

For more detailed information please take a look at its README in
'repos/os/src/lib/vfs/xoroshiro/README'.

Fixes #5407
2025-04-10 14:12:37 +02:00
Christian Helmuth
2d89b53b0c depot: update recipe hashes 2025-02-27 12:53:40 +01:00
Christian Helmuth
cd40a5be96 tool: have_cmd_arg -> have_cmd_switch (run, autopilot, dts)
Issue #5432
2025-02-27 12:53:40 +01:00
Stefan Kalkowski
62b44f2fbf genode_c_api/usb: correct interface setting
Remove regression in Session_component::set_interface by always iterating
over all interfaces to potentially change each alternate setting (from
passive to active and vice versa).

Ref genodelabs/genode#5349
Fix genodelabs/genode#5467
2025-02-27 12:53:40 +01:00
Stefan Kalkowski
1bfa53876f usb: correct client-quota tracking of DMA buffers
Fix genodelabs/genode#5465
2025-02-27 12:53:40 +01:00
Johannes Schlatow
9d7f8cfa9b platform: fix device-PD support
When executed on NOVA, the platform driver will use the kernel IOMMU
(device PD) if the devices ROM either does not name any IOMMU or support
for the named IOMMU is not available (e.g. because the generic platform
driver is used). In the latter case, reserved-memory ranges were not
correctly added to the device PD.

genodelabs/genode#5066
2025-02-24 16:39:56 +01:00
Stefan Kalkowski
0393965d5a usb: clear URB's payload after finishing
Fix genodelabs/genode#5457
2025-02-24 16:39:55 +01:00
Sebastian Sumpf
13eef6a87a genode_c_api/usb: fix size calculation of isoc_payload
simplify and fix wrong calculation of 'size' for isoc_payload.
2025-02-24 16:39:55 +01:00
Stefan Kalkowski
c2cee1a885 vmm_x86: test x86 virtualization nightly with hw
Ref genodelabs/genode#5450
2025-02-24 16:39:21 +01:00
Roman Iten
df26fe779a os: use 'assert'-proc in run scripts
Issue #5432
2025-02-24 16:39:20 +01:00
Norman Feske
2c8beb462f file-system session: root dir via session label
This patch changes the way of how the client-selected sub directory is
communicated to the server. The former opaque session argument is now
passed as last label element, which allows for the flexible tweaking
of this argument by init's session-routing and label-rewriting
mechansims. In particular, it alleviates the need for creating chroot
component instances.

This change requires the following four adaptations at the
configuration level:

- Each file-system session request must now carry a path starting
  with / as last session arguments. Hence, <vfs> <fs> nodes that
  feature a 'label' attributes must extend the attribute value
  with " -> /". For <fs> nodes with no label attribute, "/" is
  used as last label argument by default.

- For matching session-routing rules at init's configuration,
  the matching of full labels should be replaced by 'label_prefix'
  matches, excluding the last (path) argument.

- Wherever a label of a file-system session is rewritten by using
  init's 'label' attribute of a <parent> or <child> target node,
  the new attribute 'identity' should be used instead. This replaces
  the identity part of the label while preserving the client's
  directory argument.

- Analogously to the matching of session-routing rules, server-side
  policy-selection rules that formerly matched a concrete 'label'
  must be changed to match a 'label_prefix' instead.

As a good practice, 'label_prefix' values should end with " ->" if
possible, which clearly delimits the identity part of the label
used by the matching.

Issue #5445
2025-02-24 16:39:20 +01:00
Norman Feske
bf2c48f26f init: make label rewriting more flexible
This patch complements the existing 'label' attribute of session-route
target nodes with the new 'identity', 'resource', and 'prepend_resource'
attributes that allow for the partial rewriting of the label.

Fixes #5447
2025-02-24 16:39:20 +01:00
Stefan Kalkowski
c5a2b00068 vmm: fix virtio gpu model
This is a fixup commit due to a regression of commit
"Rework Region_map interface".

Ref genodelabs/genode#5070
2025-02-24 16:39:20 +01:00
Norman Feske
2719b37107 run: use ram attribute in start nodes
Issue #5448
2025-02-24 16:39:20 +01:00
Norman Feske
feb253c10f init: ram quota as start-node attribute
This patch allows for the assignment of RAM to a start node via a new
'ram' attribute as an alternative to traditional '<resource name="RAM">'
nodes. This makes configurations more concise.

It also adds support for defining a configuration-global default RAM
quota, following the existing pattern of the default caps definition,
e.g. the following <default> node alleviates the need to repeatedly
state reasonable 'ram' and 'caps' values in each single start node.

  <default caps="100" ram="1M"/>

Fixes #5448
2025-02-24 16:39:20 +01:00
Christian Helmuth
696a6ec759 init: add package recipe 2025-02-24 16:39:20 +01:00
Norman Feske
b6cd11abc8 vfs: tolerate fs construction failures
When trying to apply dynamic config updates to the VFS, don't rely on
the assumption that one file-system instance exists for each XML node
because a malconfigured file-system route may result in a skipped
file-system construction. Print a diagnostic message instead.

Encountered while working on issue #5445
2025-02-24 16:39:20 +01:00
Norman Feske
c6ee9cf86c test/fb_bench: resolve uint64_t ambiguity
Issue #5428
2025-02-24 16:39:19 +01:00
Norman Feske
9795f264aa ARM vmm: resolve uint64_t ambiguity
Issue #5428
2025-02-24 16:39:19 +01:00
Norman Feske
e3607a2d67 framebuffer/virtio: resolve uint64_t ambiguity
This ambiguity is caused by the inclusion of arm_neon.h by the blit
library header.

Issue #5428
2025-02-24 16:39:19 +01:00
Norman Feske
1638ee00c3 wm/decorator/layouter: window clipping
This patch changes the window-layout format to support the rectangular
clipping of windows at screen boundaries. The new <boundary> node defines
the clipping boundary for the windows listed within the node. Boundaries
are expected to be disjoint. In the example below, the "vbox" window is
placed partially outside the screen area of "screen_2".

<window_layout>
  <boundary name="screen_1" xpos="0" ypos="0" width="640" height="480">
    <window id="1" title="launchpad" xpos="10" ypos="140" width="400" height=">
  </boundary>
  <boundary name="screen_2" xpos="640" ypos="0" width="800" height="600">
    <window id="2" title="vbox"     xpos="520" ypos="52" width="800" height="600">
    <window id="3" title="terminal" xpos="650" ypos="72" width="500" height="400">
  </boundary>
</window_layout>

The layouter uses boundaries to restrict the visiblilty of windows to
their respective target areas.

Until now, Sculpt relied on the fact that the window-layout ROM had the
same structure as the resize-request ROM. With the addition of the
<boundary> nodes, this is no longer the case. Therefore, the Sculpt
manager generates a dedicated resize-request ROM now.

Issue #5390
2025-02-24 16:39:19 +01:00
Norman Feske
21acbed65b blit: Blit::blend_xrgb_a
This commit adds support for SIMD-based alpha blending, which speeds up
the alpha-compositing of the nitpicker GUI server by circa 300% on ARM
Neon and x86_64 using SSE4.1

Issue #5428
2025-02-24 16:39:19 +01:00
Norman Feske
19717ab74e fb_sdl: support rotate and flip
Issue #5428
2025-02-24 16:39:19 +01:00
Norman Feske
a5ae1e12bd Capture::Connection::Screen: use Blit::back2front
Issue #5428
2025-02-24 16:39:19 +01:00
Norman Feske
ea811a3217 nitpicker: alloc padded capture buffer
This is a precondition for using Blit::back2front at the driver side.

Issue #5428
2025-02-24 16:39:19 +01:00
Norman Feske
dc9ff4b3e3 blit: SIMD-based back2front copy
Issue #5428
2025-02-24 16:39:19 +01:00