Commit Graph

10439 Commits

Author SHA1 Message Date
Stefan Kalkowski
4f084d1f9e lx_emul: unify NIC uplink binding
Fix genodelabs/genode#5361
2024-10-30 08:05:33 +01:00
Sebastian Sumpf
77d53f13ca lx_emul: handle pin controller irqs
Register Global_irq_controller as Device so interrupts get forwarded to
irqchip.c code. Otherwise, pin-controller interrupts will get lost.

Fixed #5363
Related #5356
2024-10-30 08:05:33 +01:00
Stefan Kalkowski
a148dc5cb4 genode_c_api/usb: no policy check in session create
Fix genodelabs/genode#5357
2024-10-15 14:20:22 +02:00
Alexander Boettcher
700b248749 libc: silent warning for sigaltstack
Issue #5305
2024-10-15 14:00:25 +02:00
Christian Helmuth
225adf3681 nitpicker: document 'displays' report in README
Issue #5352
2024-10-15 13:54:30 +02:00
Josef Söntgen
4084df6360 vbox6: enable RDRAND hardware instruction support
Issue #5314
2024-10-15 09:20:43 +02:00
Josef Söntgen
be70fddbb8 nic/pc: disable IRQ coalescing in R8169 driver
This commit patches the DDE Linux contrib code to remove IRQ coalescing
from the R8169 driver that for reason not yet known leads to interrupts
occurring irregularly.

Issue #5356.
2024-10-15 08:42:03 +02:00
Christian Prochaska
7cf39188ef libports: update qt6-host download URL
Issue #5325
2024-10-14 15:15:34 +02:00
Johannes Schlatow
3142554343 mesa_gears: adjust RAM quota (required for x260)
genodelabs/genode#5356
2024-10-14 15:04:19 +02:00
Christian Prochaska
56199240ec qt: destroy view to hide window
Fixes #5359
2024-10-14 14:39:44 +02:00
Christian Prochaska
7b23227e7f qt: generate expose event on resize
Fixes #5358
2024-10-14 14:39:44 +02:00
Johannes Schlatow
d68977fa12 sculpt: update goa_testbed preset
genodelabs/genode#5356
2024-10-14 14:39:44 +02:00
Josef Söntgen
bc8932e46a terminal: use initial mode for undefined size 2024-10-14 14:39:44 +02:00
Sebastian Sumpf
12fb925555 terminal: adjust cap quota to GUI stack changes 2024-10-14 14:39:44 +02:00
Josef Söntgen
686c5ac007 raw/window_layouter: add 'release_grab' action
This commit adds the 'release_grab' action to the KEY_SCREEN handling
as it is required to ungrab clients using the exclusive input mode.
2024-10-14 14:39:44 +02:00
Josef Söntgen
7760116478 linux-firmware: add QCA9377 FW (MNT Pocket Reform)
Issue #5360.
2024-10-11 14:48:01 +02:00
Josef Söntgen
95c439e758 driver/wifi: fix firmware pointer check
Issue #5360.
2024-10-11 14:47:48 +02:00
Stefan Kalkowski
5d33ea7242 driver/platform: allow access to platform info
Within the i.MX 8MP specific platform driver access to the
board name within the platform info XML is needed.

Ref issue#5360
2024-10-11 14:46:23 +02:00
Stefan Kalkowski
e344fa8c23 base-hw: export board name in platform info
We need to differentiate the board within the SoC generic
platform driver. Therefore, export its name within the
platform info ROM.

Ref issue#5360
2024-10-11 14:46:23 +02:00
Josef Söntgen
e0874baa8f
driver/wifi: remove auto_connect attribute
This commit does away with controlling the join-intent via an attribute
but couples it to the existence of a '<network>' node. With this change
all '<network>' nodes within the configuration are always
unconditionally considered for joining.

Issue #5356.
2024-10-08 14:21:20 +02:00
Josef Söntgen
e4d2a4df42
driver/wifi: split hidden network scanning
This commit splits the intent to scan for a hidden network and the
actual configuration of a network itself by introducing
'<explicit_scan>' nodes. Like the '<network>' node these also feature
a 'ssid' attribute and each node is incorporated into the SCAN request
if its SSID is valid.

For more information please consult 'repos/src/driver/wifi/README'.

Issue #5356.
2024-10-08 14:20:56 +02:00
Josef Söntgen
40f2b58098
pc_wifi: use wifi_config.inc helper
Introduce helper that does away with the redundant config generation
snippets.

Issue #5356.
2024-10-08 14:20:22 +02:00
Josef Söntgen
31f9d414a3
sculpt_manager: remove invalid network node
With the recent Wifi::Manager changes setting an invalid SSID will
lead to a diagnostic warning. Since disconnecting is handled by
removing the existent '<network>' there is no reason to generate
an invalid node in the first place.

Issue #5356.
2024-10-08 14:20:21 +02:00
Josef Söntgen
0b9d3c3dcc
sculpt_manager: increase wifi driver caps
This remedies the initial session upgrade on certain systems (Alder
Lake).

Issue #5356.
2024-10-08 14:20:20 +02:00
Christian Helmuth
61c9706353 depot: update recipe hashes 2024-10-08 11:30:26 +02:00
Norman Feske
c296795089 nitpicker: trigger info ds change on config update
Inform all GUI clients of a new version of the mode information whenever
the nitpicker configuration is modified. This is needed because changed
capture policies influence the panorama observable by the GUI clients.

Issue #5352
2024-10-08 09:09:25 +02:00
Christian Prochaska
57b10b9611 qt: adapt to 'Gui::Connection' interface changes
Issue #5353
2024-10-08 09:09:24 +02:00
Christian Helmuth
4a6c506f37 nitpicker: deliver press events to global key receiver
Fixes the following misbehavior: If a global key is pressed (e.g., Caps
Lock in Sculpt) and the mouse is clicked before release, the global-keys
handler receives the global-key press but no further events of the
sequence, especially *no Caps-Lock release*.

A more reasonable fix may address the "else branch" that deletes the
_input_receiver in case of mouse events without a hovered client too,
which is beyond the narrow scope of this fix.
2024-10-08 09:09:24 +02:00
Norman Feske
ca47280ce9 wm/layouter: pointer grabbing/ungrabbing
This patch implements the following policy for applications requesting
exclusive input (relative motion): The pointer is grabbed as soon as the
user clicks inside the application window. It is forcibly ungrabbed on
any window-focus change or when tapping the KEY_SCREEN. An application
can always enable (transient) exclusive input during a key sequence,
e.g., when dragging the mouse while holding the mouse button. Transient
exclusive input is revoked when releasing the last button/key.

Fixes #5355
2024-10-08 09:09:24 +02:00
Norman Feske
92227df624 nitpicker: handle Input::Session::exclusive
While the focused client has enabled exclusive input, nitpicker does
not translate relative motion to absolute motion but routes relative
motion directly to the client. Additionally, the pointer origin is
forcibly moved to a position outside the screen boundaries, making the
pointer invisible.

Issue #5355
2024-10-08 09:09:24 +02:00
Norman Feske
996d9b300c menu_view: restore horizontal cursor positioning
This is a follow-up fix for "Make util/geometry.h C++20 friendly".

Fixes #5239
Issue #5356
2024-10-08 09:09:24 +02:00
Norman Feske
75b04b38f6 Adjust RAM and cap quotas
The recent changes of the GUI stack (proper accounting of cap and RAM
resources by the window manager and nitpicker, output buffered at the
server side) require quota adjustments at various GUI-related places.

Issue #5356
2024-10-08 09:09:24 +02:00
Norman Feske
03a23ad987 gui_fb: reset input sigh when closing the session
This patch mirrors the logic already in place for the framebuffer
session.
2024-10-08 09:09:24 +02:00
Norman Feske
4dd5c6ff8a test/fb_bench: make fb mode consistent with ds
Otherwise, the fb mode may refer to a new mode when the framebuffer is
resized between the call of 'dataspace' and 'mode'.
2024-10-08 09:09:24 +02:00
Norman Feske
b1d5a5f7b8 sculpt: version 24.10 2024-10-08 09:09:24 +02:00
Norman Feske
d7830a0ce6 Add Input::Session::exclusive() interface
This interface allows a GUI client to express the intent to exclusively
observe relative motion events while locking the absolute pointer
position. This patch merely extends the interface without implementing
it.

As this change touches os/include/input/component.h, it moves the
manage/dissolve operations into the class, ensuring the call of
dissolve at destruction time.

Issue #5355
2024-10-08 09:09:24 +02:00
Norman Feske
318d641266 gui_session: provide mode info as XML
In multi-monitor scenarios, the mode is no longer a single rectangular
area but a panorama with potentially many captured rectangles. This
patch replaces the former 'mode' and 'mode_sigh' RPC by a new 'info'
ROM accessor.

Issue #5353
2024-10-08 09:09:24 +02:00
Norman Feske
d29cb0a15d Gui::Connection::buffer: fix upgrade loop
Once set to true, the 'retry' flag would never be reset to false.

Issue #5242
2024-10-08 09:09:24 +02:00
Christian Helmuth
bfce470690 app/usb_webcam: initialize libc environment
Restores debugging with LIBUSB_DEBUG=<level>.
2024-10-08 09:09:24 +02:00
Norman Feske
f324aa902b nitpicker: configurable capture policies
Capture clients used to always capture the view stack at the origin of
the coordinate system. So each capture client obtained a mirror of the
same picture. This patch allows for the placement of capture clients on
larger panorama using Genode's usual label-based policy-selection
approach. Thereby, each monitor in multi-monitor scenario can display a
different portion of the panorama.

The patch takes special care to always keep the pointer in a visible
position. The pointer cannot be moved to any area that is not captured.
Should the only capture client displaying the pointer disappear, the
pointer is warped to the center of (any) remaining capture client.

Fixes #5352
2024-10-08 09:09:24 +02:00
Norman Feske
88dc4c878f util/geometry.h: test (in)equality of rectangles
The operators == and != make the 'Rect' consistent with 'Point' and
'Area'. The patch also adds the 'Rect::clamp' method, which is generally
useful for sanitizing input.

Issue #5352
2024-10-08 09:09:24 +02:00
Christian Prochaska
7579fe5749 qt: adapt to 'Gui::Connection' interface changes
Issue #5351
2024-10-08 09:09:24 +02:00
Christian Prochaska
e528ebc374 qt: increase caps in run scripts
Issue #5340
2024-10-08 09:09:24 +02:00
Alexander Boettcher
458458b65f intel/display: support stop/wakeup protocol
Issue #5344
2024-10-08 09:09:24 +02:00
Alexander Boettcher
50cc52a091 intel/display: use one capture session per display
Fixes #5345
2024-10-08 09:09:24 +02:00
Norman Feske
e69c01aad3 framebuffer_session: add sync_source selection
The new Framebuffer::Session::sync_source RPC function allows for the
selection of a specific source of sync signals in the presence of
multiple capture clients at the GUI server.

This patch contains only the extension of the interface. The information
is not evaluated by the GUI server yet.

Issue #5347
2024-10-08 09:09:24 +02:00
Norman Feske
5b4e1915d8 framebuffer_session: accessors for buffer surfaces
This patch adds central and safe utilities for accessing the distinct
parts of the virtual framebuffer to relieve clients from pointer
calculations.

Issue #5351
2024-10-08 09:09:24 +02:00
Norman Feske
388218a3f9 os/surface.h: support windowed surface access
This patch eases the vertical organization of multiple surfaces within
one larger surface, which is the case when keeping front/back buffers
within one compounding GUI buffer.

Issue #5351
2024-10-08 09:09:23 +02:00
Norman Feske
bf064874db util/string.h: Byte_range_ptr::with_skipped_bytes
The new method provides a safe way to narrow the byte range to a
given offset.

Issue #5351
2024-10-08 09:09:23 +02:00
Norman Feske
5c20de212a base: Attached_dataspace::bytes accessor
The new bytes() accessor returns a Byte_range_pointer as an alternative
to the 'local_addr' for accessing the content of the dataspace. This
facilitates the safe practice of passing (and validating) the buffer
bounds along with the pointer.

Issue #5351
2024-10-08 09:09:23 +02:00
Norman Feske
e738162bde framebuffer_session: alpha as Mode attribute
Propagate the want of an alpha channel as attribute of Framebuffer::Mode
instead of passing this property as a separate bool argument.

This clears the way for adding useful accessors for pixel/alpha/input
surfaces to the Mode type as a subsequent step.

Issue #5351
2024-10-08 09:09:23 +02:00
Norman Feske
336d481726 os: Pixel_input8 type for input-mask access
Issue #5351
2024-10-08 09:09:23 +02:00
Norman Feske
b303fe1098 demo.run: increase nitlog RAM quota 2024-10-08 09:09:23 +02:00
Norman Feske
6522158caa gems/gui_buffer.h: atomic back-to-front blitting
This patch updates menu_view, themed_decorator, and rom_osci to use the
new frame-buffer blit operation, mitigating tearing artifacts

Issue #5350
2024-10-08 09:09:23 +02:00
Norman Feske
4565cd0143 demo/scout: use atomic panning and blitting
Issue #5350
2024-10-08 09:09:23 +02:00
Norman Feske
db2f1e542c decorator: double-buffered output
This patch ensures that the displayed pixel buffer is always consistent
by applying intermediate drawing steps on an invisible back buffer,
which is blitted to the front buffer by the GUI server.

Note that the addition of the back buffer increases the decorator's RAM
demand by 4*w*h (4 bytes per pixel) whereas w and h are the screen size.

Issue #5350
2024-10-08 09:09:23 +02:00
Norman Feske
8082aa980e framebuffer_session: atomic blitting and panning
By enhancing the Framebuffer::Session interface by the new RPC functions
'blit' and 'panning', GUI clients become able to attain tearing-free
output. Two modes of operations are supported.

1. Atomic back-to-front blitting

   GUI clients that partially update their user interface like regular
   application dialogs, can now implement double buffering by placing
   both the back buffer and front buffer within the GUI session's
   framebuffer and configuring a view that shows only the front buffer.
   The 'blit' operation allows the client to atomically flush pixels
   from the back buffer to the front buffer.

2. Atomic buffer flipping

   GUI clients that always update all pixels like a media player or
   a game can now use the 'panning' feature to atomically redirect the
   displayed pixels to a different portion of the GUI session's virtual
   frame buffer. The virtual framebuffer always contains two frames,
   the displayed one and the next one. Once the next frame is complete,
   the client changes the panning position to the portion containing
   the next frame.

Issue #5350
2024-10-08 09:09:23 +02:00
Norman Feske
0e33830d1f framebuffer_session: use Rect as refresh argument
This patch replaces basic-type arguments x, y, w, h by the 'Rect' type,
and imports the Genode namespace into the Framebuffer namespace.

Issue #5350
2024-10-08 09:09:23 +02:00
Norman Feske
e1b24d1ebd nano3d.run: increase caps for backdrop
Issue #5340
2024-10-08 09:09:23 +02:00
Norman Feske
b3ac8c5bd8 dialog: increase caps for sandboxed_runtime
With the reworked accounting of GUI-session resources, the default
of 100 caps for menu_view does not suffice.

Issue #5340
2024-10-08 09:09:23 +02:00
Sebastian Sumpf
4d559c2907 sculpt: name change imx8mq_usb_host -> imx8m_usb_host
issue #5264
2024-10-08 09:09:23 +02:00
Sebastian Sumpf
c27e25b5ca lx_emul: shmem_file.h adapt to folio changes
Everything related to compound pages is gradually removed and replaced
with folios.

issue #5264
2024-10-08 09:09:23 +02:00
Sebastian Sumpf
8530aa7540 lx_emul/start: move lx_emul_setup_arch behind kmem_cache_init
Call lx_emul_setup arch after kmem_cache_init, because
unflatten_device_tree requires 'memblock_alloc' which  does not work
when using native slub.c/memblock.c on ARM platforms.

issue #5264
2024-10-08 09:09:23 +02:00
Stefan Kalkowski
c0a0c0ae71 genode_c_api/usb: prevent invalid pointer deref
Limit the use of Reg_list::for_each that caches a next pointer
of its items to allow destruction of items in its lambda body.
Instead provide an Reg_list::apply function in addition, which
takes a condition lambda to find the matching item, and a lambda
processed on it. In most use-cases where for_each was used, only
one item was searched for. Here we can use apply now., without
the need for a cached pointer, nor too many iterations.

Fixes genodelabs/genode#5349
2024-10-08 09:09:23 +02:00
Josef Söntgen
a16ca36eb6 bsd_audio: remove unnecessary RM requirement
The explicit usage of the Rm session became obsolete with the
removal of the internal slab (see memory consumption commit).

Fixes #5348.
2024-10-08 09:09:23 +02:00
Benjamin Lamowski
66689fa799 usb_webcam: remove unneeded requirement on RM
The usb_webcam's runtime requires a Region Manager session even though
it is not needed by the application, remove it.

Fixes #5346
2024-10-08 09:09:23 +02:00
Norman Feske
fc4b026b62 nitpicker: remove periodic mode of operation
Unless nitpicker is used in 'request_framebuffer' mode, it no longer
depends on a periodic timer but merely acts as a broker between capture
clients and GUI clients. Sync signals as delivered to GUI clients are
now wired to Capture::Session::capture_at calls. So the display driver
defines the occurrence of those signals.

Note that sync signals are only delivered while a driver actively calls
'capture_at'. If a driver stops capturing, GUI clients no longer receive
any sync signal. This is a change from the previous situation where GUI
clients could depend on the periodicity of sync signals.

Issue #5347
2024-10-08 09:09:23 +02:00
Norman Feske
e69ade5299 decorator: use timer for animation timing
This patch changes the precision of the configuration's motion attribute
to a multiple of 10 ms (centi-seconds). The previous version used steps
of 20 ms. Hence, one needs to adjust existing configurations by doubling
the motion attribute values of the themed decorator.

Issue #5347
2024-10-08 09:09:23 +02:00
Norman Feske
58d20c7751 menu_view: use timer for animation timing
This patch removes the use of sync signals as time source. The animation
phase is now timed using a timer connection as tick source while sync
signals are used for scheduling the redraws.

Issue #5347
2024-10-08 09:09:23 +02:00
Norman Feske
ffcd08b5c7 backdrop,pdf_view: remove sync handling
The sync handling makes the code more complicated without a benefit.

Issue #5347
2024-10-08 09:09:22 +02:00
Norman Feske
0e55119b36 liquid_framebuffer: reset signal handlers
Apply the same rationale as commit "gui_fb: reset signal handlers when
closing fb" to the liquid framebuffer.
2024-10-08 09:09:22 +02:00
Alexander Boettcher
4554ec42da nova: make write-combined unit test more robust
- touch all memory before time measurements, to reduce lazy paging jitter
- diff of 100us between 2 memset runs are now considered a failure (before 10us)
- add refrence measurements of same region size which is not write-combined
- make the output easier parse able of write-combined test

Fixes #5342
2024-10-08 09:09:22 +02:00
Norman Feske
09461c51bd capture_session: capture stop/wakeup protocol
With this change, a client (i.e., display driver) can register
a wakeup signal handler to be notified on the arrival of new data to
capture. The signal is delivered only when the client has stopped
capturing. The client propagates this condition to the server using
the new 'capture_stopped' RPC call.

This change in principle enables a display driver to suspend its
periodic mode of operation after a few frames without capturing any
new data. As the first driver, the fb_sdl driver has been adapted to
the new protocol. This change not only eliminates the driver's CPU
load when idle, it also reduces the latency of sporadic output
because the response to such GUI updates is no longer bound by a
fixed periodic interval.

Issue #5344
2024-10-08 09:09:22 +02:00
Norman Feske
c527a4e0e4 util/dirty_rect.h: accessor for empty state
Provide an easy way to check for the absence of any dirty pixels.

Issue #5344
2024-10-08 09:09:22 +02:00
Norman Feske
2d3c2fc258 fb_sdl: move SDL event loop to dedicated thread
This patch is a preparatory step for relaxing the strictly periodic
operation of fb_sdl. With the new design, the SDL event loop can block
for events while Genode's main entrypoint stays receptive for I/O.
The main entrypoint can interact with the SDL thread by injecting
SDL user events.

The patch also replaces the full-screen clearing and update of the
SDL window by an update of the captured bounding box only. This reduces
the CPU load of fb_sdl when idle. When updating a small part of the
screen (e.g., when moving the mouse only), the load is still rather
heavy though.

Issue #5344
2024-10-08 09:09:22 +02:00
Norman Feske
3f1759a4d1 capture_session: detection of idle capture server
This patch enhances the Capture::Connection::Screen such that the
bounding box of the affected pixels can be tracked by the caller,
which can use this information to adjust its behavior to the
activity/inactivity of the capture server.

Issue #5344
2024-10-08 09:09:22 +02:00
Norman Feske
6d68d3297d capture_session: propagate physical size in mm
This patch adds the physical screen size as argument to the
Capture::Session::buffer RPC function, which allows drivers to
propagate DPI information to the GUI server. While changing the
the interface, the patch replaces the former use of C++ exceptions
by a result type. The 'Buffer_result' is handled transparently by the
Capture::Connection. The client.h code is now integrated in
connection.h.

Issue #5344
2024-10-08 09:09:22 +02:00
Josef Söntgen
6d79a44c46 sculpt_manager: adapt to Wifi::Manager changes
Issue #5341.
2024-10-08 09:09:22 +02:00
Josef Söntgen
d4e4b8bf60 driver/wifi: rework CTRL interface manager
This commit streamlines the interaction between the Wifi::Manager
and the wpa_supplicant's CTRL interface.

As user-facing changes it alters some default settings and introduces
new features:

* Every configured network now needs to explicitly have its
  'auto_connect' (to be considered an option for joining) attribute
  set to 'true' whereas this was previously the default value if the
  attribute was not set at all.

* The 'log_level' attribute is added and configures the supplicant's
  verbosity. Valid values correspond to levels used by the supplicant
  and are as follows 'excessive', 'msgdump', 'debug', 'info', 'warning'
  and 'error'. The default value is 'error' and configures the least
  amount of verbosity.

* The 'bgscan' attribute may be used to configure the way the
  supplicant performs background-scanning to steer or rather optimize
  roaming decision within the same network. The default value is set
  to 'simple:30:-70:600'. It can be disabled by specifying an empty
  value, e.g. 'bgscan=""'.

* The 'verbose_state' attribute was removed alltogether and similar
  functionality is now coverted by 'verbose' attribute.

Implementation-wise the internals changed significantly and are
outlined in the following paragraphs.

Formerly the interaction between the manager and the supplicant
was handled in an apparent way where the internal state of each
interaction was in plain sight. This made the flow cumbersome to
follow and therefor each interaction is now confined to its own
'Action' object that encapsulates the ping-pong of commands and
responses between the manager and the supplicant. All actions are
processed in an sequential way and thus there is no longer any
need to defer pending actions depending on the interal state of
the current interaction. Configuration changes as well as events
issued by the supplicant where new actions can be created are
handled in this fashion. Of note are both signal-handlers,
'_handle_cmds' and '_handle_events' respectively.

The state report, which provides the information about the current
state of connectivity to a given wireless network, was dealt with
in the same vein and its handling was spread across the manager
implementation. Again, to make it easier to follow, the generation
of the state report is now purely driven by the 'Join_state' object.
This object encapsulates the state of connectivity and is normally
updated by events issued from the supplicant (see '_handle_events').
It is also incorporated when handling command responses (see
'_handle_cmds').

Handling of timed-actions, like scan and signal quality
update requests, was done by setting a timeout at the Timer session
directly and thus only one timed-action could be pending at any time.
This excluded dealing with timed-actions like connected-scanning
and signal quality polling concurrently. This was changed and now
a One_shot_timeout is used to programm each concurrent timed-action.

For implementing the communication channel for the CTRL interface the
manager and supplicant use a shared memory buffer, the Msg_buffer.
Since the CTRL interface for Genode was implemented using C, some
shenanigans were performed to access the memory buffer. Now the
CTRL interface implementation uses C++ and only exports the functions
required by the supplicant as C. This simplifies the usage of the
Msg_buffer and allows for removing the global functions needed for
synchronizing the Msg_buffer access as those are now part of the
object itself via the 'Notify_interface'.

Fixes #5341.
2024-10-08 09:09:22 +02:00
Josef Söntgen
6b474e059c wpa_supplicant: update to version 2.11
Issue #5341.
2024-10-07 15:54:59 +02:00
Josef Söntgen
42dae6e570 lib/wifi: make errno conversion function public
The 'convert_errno_from_linux' function was already used internally to
convert the Linux errno values to the matching FreeBSD libc ones when
calling socket functions.

It will now also be used to convert the error values included in
netlink messages as those, naturally, also correspond to the Linux
ones.

Issue #5341.
2024-10-07 15:54:59 +02:00
Alexander Boettcher
e5df8da1bd vbox6: enable AES hardware instruction support
Issue #5314
2024-10-07 15:54:59 +02:00
Norman Feske
d565598489 wm: avoid initial flickering of child views
When starting testnit with the wm, the child views briefly appear at a
position relative to the top-left corner of the screen until the
top-level view has been positioned by the layouter. This patch keeps
child views invisible until their respective parent views are
positioned.
2024-10-07 15:54:59 +02:00
Alexander Boettcher
75266e467d vbox6: enable AVX support
Issue #5314
2024-10-07 15:54:59 +02:00
Alexander Boettcher
a07b5937d9 nova: handle invalid FPU guest state
Makes the kernel robust against invalid guest FPU state provided by a VMM,
e.g. our port of Vbox6.

Issue #5314
2024-10-07 15:54:59 +02:00
Alexander Boettcher
ff506b0375 vm/x86: support extended fpu state transfer
Extend Genode's vCPU FPU state and adjust all users to copy
at most FPU data they actually support.

Issue #5314
2024-10-07 15:54:59 +02:00
Norman Feske
5993fa9c7f wm: keep child views in front of their parent
When restacking a top-level view, execute the top-level restacking
before updating the child views. Otherwise, child views may wrongly
refer to the old stacking position of the top-level view.

Issue #5242
2024-10-07 15:54:59 +02:00
Norman Feske
e5437563e2 test/nitpicker: add missing refresh call
Issue #5242
2024-10-07 15:54:59 +02:00
Norman Feske
9cd87a8495 wm: update coding style
Use Genode namespace, indicate 'Main' members as being private,
use Session_object, remove unused '_focus_request_reporter',
use Id_space for Window_registry, replace lookup by with pattern.
2024-10-07 15:54:59 +02:00
Norman Feske
e83ace4242 decorator: fix window-stacking glitch
This is a follow-up commit to "gui_session: manage view ID at the client
side", which missed to invalidate the neighbor view of a window but
instead wrongly assigned the (now always valid) view ID 0 as neighbor.
In situations where a window disappears and re-appears (e.g., repeatedly
launching testnit in the wm.run scenario), the new window could not
always be topped.

Issue #5242
2024-10-07 15:54:59 +02:00
Alexander Boettcher
f147a1220e intel/display: make effective use of PSR
- only mark framebuffer dirty if necessary
  -> gives the hardware chance to save longer power
- remove extra timer connection on Genode component side
  -> use Linux time primitives

Issue #5339
2024-10-07 15:54:59 +02:00
Alexander Boettcher
0414e4929f intel/display: enable panel self refresh support
Fixes #5339
2024-10-07 15:54:59 +02:00
Norman Feske
3ba8ddc85c gui_session: mark RPC client methods as nodiscard
Issue #5340
2024-10-07 15:54:59 +02:00
Norman Feske
ec50c008bb wm: account session resources
With this patch, the wm accounts RAM and caps consumed on behalf of its
clients to the respective client's session quota instead of paying out
of its own pocket. This should make the wm resilient against resource
exhaustion and lowers the quota requirements.

Issue #5340
2024-10-07 15:54:59 +02:00
Norman Feske
cf507a0b86 wm: replace Rpc_object by Session_object
This will ease the tracking of session resources.

Issue #5340
2024-10-07 14:44:31 +02:00
Norman Feske
a9b2d9bdc6 gui_session: adjust session quota for wm scenarios
The current default session RAM quota of 36 KiB reflects the needs of
the nitpicker GUI server. However, in most commonly used scenarios, a
GUI client connects to nitpicker indirectly via the wm. The low value
worked so far because the wm did not account RAM and cap usage per
client so far but paid out of its own pocket and faithfully forwarded
all resource upgrades to nitpicker.

When adding resource accounting to the wm, the old default value has the
effect that a new client has to repeatedly attempt the session creation -
each time offering sligthly more session quota - until both nitpicker and
the wm are satisfied.

By roughly doubling the default to 80 KiB, a wm client immediately
succeeds with opening a GUI session without repeated attempts.
By specifying a custom 'cap_quota' amount to the 'Genode::Connection',
the Gui::Connection now donates enough caps for both the wm and
nitpicker.

Issue #5340
2024-10-07 14:44:31 +02:00
Norman Feske
034de3b1b1 base/connection.h: allow customized cap-quota arg
By default, a 'Connection' donates an amount of caps as declared in
SESSION_TYPE::CAP_QUOTA to the server at session-creation time.

In some situations, however, a client may deliberately want to donate a
larger amount. For example, when opening a GUI session at the wm, the
total amount of needed caps is the sum of those consumed by the wm plus
those consumed by nitpicker. Using this knowledge, the Gui::Connection
may specify a sufficient amount to avoid iterative session-creation
retries. The new 'Connection' constructor accommodates this use case by
accepting an explicit 'cap_quota' argument.

Issue #5340
2024-10-07 14:44:31 +02:00
Norman Feske
240b631512 nitpicker: alloc initial slab block in session
This patch saves two sliced-heap allocations per session.

Issue #5340
2024-10-07 14:44:30 +02:00
Norman Feske
e8e499ae9e nitpicker: account input and framebuffer caps
This patch deduces the caps needed for the framebuffer and input RPC
objects from the resources accounted locally within the session. It also
takes precautions for the situation where a client offers too little
resources, prompting the mid-way cancelling of the 'Session_component'
creation. With the patch, the 'ep.manage' operations are rolled back
by the corresponding 'ep.dissolve' operations.

Issue #5340
2024-10-07 14:44:30 +02:00
Norman Feske
e4af726056 nitpicker: alloc view caps only when needed
This patch moves the eager allocation of view capabilities from the
'view' and 'child_view' RPC functions to the 'view_capability' RPC
function, reducing the consumption of capabilities in all scenarios
where views don't need to be shared between GUI sessions.

Issue #5340
2024-10-07 14:44:30 +02:00