3307 Commits

Author SHA1 Message Date
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
1a0a1b3f27 acpi: be robuster on IO_MEM session denied
Issue #5406
2025-01-30 16:30:14 +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
Johannes Schlatow
b136ed0dfc pci_decode: report IOAPIC devices
genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Johannes Schlatow
f85068e1f2 acpi_drv: report IOAPIC devices
genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Johannes Schlatow
ce70b44087 acpi_drv: reflect DMAR properties in report
genodelabs/genode#5066
2025-01-30 16:30:13 +01:00
Norman Feske
c0c6f3f660 os/session_policy.h: avoid use of Xml_node assign
Issue #5411
2025-01-30 16:30:13 +01:00
Norman Feske
c978df4186 nitpicker: send pointer pos to global key handler
To enable a global key handler to implement motion gestures while a
global key is held, it needs to know the current pointer position at the
time when the global key sequence starts. This is prerequisite for
the window layouter's ability to drag windows by clicking anywhere
within the window while holding a global key.

Issue #5403
2025-01-30 16:24:36 +01:00
Norman Feske
3600705a2f nitpicker: no absolute motion without hover
This patch enforces the invariant that absolute motion events are
delivered to the hovered client only. If no client is hovered, the event
is discarded.

Otherwise, in a situation where no client is hovered (i.e., due to a
background that does not cover the entire screen) but a focus is
defined, absolute motion events would be delivered to the focused
session. From a client's perspective, when moving the pointer from the
client to emptiness, the client would observe a leave event followed by
absolute motion. This, in turn, confuses the window manager, which
expects that the receiver of an absolute motion event is hovered.

Fixes #5375
2025-01-30 16:24:36 +01:00
Norman Feske
42ff0d078f base: split Pd_account from Pd_session
Core uses an instance of 'Pd_session_component' as a representative
for RAM/cap quota accounts used whenever session resources are
donated to core's services. All other facets of 'Pd_sesson_component'
remain unused. Core's instance of 'Pd_session_component' is hosted
at 'Core_env'. Upon its construction, all unused facets of
'Pd_session_component' are initialized by dummy arguments in 'Core_env'.

To overcome the need for dummy arguments, this patch splits the
accounting part of the PD-session interface into a separate
'Pd_account' interface. This gives us the prospect of narrowing
core's current use of 'Pd_session_component' by 'Pd_account',
alleviating dead code and the need for any dummy arguments.

Issue #5408
2025-01-30 16:24:36 +01:00
Benjamin Lamowski
5e3a898109 base: add create_vcpu to Vm_session interface
`Vm_session_component::create_vcpu()` is present across all supported
kernels, yet until now it was not part of the `Vm_session` interface.

Add the method to the `Vm_session` interface. This unifies calls in the
base library and is the basis to remove the need for a common base class
for separate `Vm_session` implementations for SVM and VMX on x86_64.

Issue #5221
2025-01-30 16:20:39 +01:00
Benjamin Lamowski
f94f461f8f base: make Ram_allocator noncopyable
Prevent erratic runtime behavior stemming from accidentally passing a
copy to a `Ram_allocator` by making the interface noncopyable.

In consequence, we had to provide an explicit copy constructor for
`Session_env` in server/nic_router, which will be reconsidered in
issue #5405.

Issue #5221
2025-01-30 16:20:09 +01:00
Stefan Kalkowski
ebb159d32d usb webcam: turn run-scripts into sculpt tests
Ref genodelabs/genode#5401
2024-12-11 12:20:31 +01:00
Christian Helmuth
cd6701c483 depot: update recipe hashes 2024-12-11 08:35:22 +01:00
Norman Feske
60d009e6c6 nitpicker: notify clients on any panorama change
Nitpicker used to notify GUI clients about an updated GUI info only when
the total panorama size changed. However, in situations where two
capture clients are swapped, the total size may stay the same whereas
the relation of displays to different parts of the panorama is no longer the
same. Such changes are interesting to some clients like the window layouter,
which needs to update the assignement of screens to displays.

This patch changes nitpicker so that each panorama change is reflected
to GUI clients as a mode-info update.

Issue #5390
2024-12-10 14:12:24 +01:00
Christian Helmuth
5665e8059a Optional session label in audio_in/out connection 2024-12-10 14:12:24 +01:00
Norman Feske
3067a2c51d nitpicker: prevent the pointer from going nowhere
The 'size_changed' handling remained without effect when the (last)
display re-appears (e.g., back from screen blank) because
'Capture_root::bounding_box()' delivered the '_fallback_bounding_box'
in the intermediate phase where no display was present. Unfortunately,
'Capture_root::visible()' failed to apply the same logic. This patch
makes 'visible()' consistent with 'bounding_box()'. It has the
welcome effect that nitpicker remembers the pointer position during
the dark phase.

Fixes #5397
2024-12-10 14:12:24 +01:00
Josef Söntgen
96d9f5d317 usb: consider alternate setting in endpoint select
When constructing an Usb::Interface and implicitly corresponding
Usb::Endpoint instances only select endpoints relevant for the
given alternate setting.

The libusb has to be changed to delegate the correct alternate
setting to the constructor too.

Fix genodelabs/genode#5394
2024-12-10 14:12:24 +01:00
Norman Feske
7928597249 doc: remove docs covered by the Genode books
Foster the Genode books as a single point of reference for Genode's
documentation. E.g., the Getting-Started section of the "Genode
Foundations" book has long obsoleted doc/getting_started.txt. This
patch also remove long orphaned texts like gsoc_2012.txt. The approach
described in the porting guide has now been replaced by the Goa SDK.

The Genode books can be downloaded at the genode.org website. Like
Genode, they are open source. All text is licensed as CC-BY-SA and
can be found at https://github.com/nfeske/genode-manual

Fixes #5393
2024-12-10 14:11:57 +01:00
Christian Helmuth
011b44c282 depot: update recipe hashes 2024-11-20 08:58:39 +01:00
Norman Feske
798b49fcc3 vfs server: survive malformed dynamic re-config
The VFS server used to respond to any invalid config by exiting.
By disregarding such configurations instead, this patch makes the VFS
server robust against temporary malconfiguration.
2024-11-20 08:58:39 +01:00
Roman Iten
d095945d6c fs_rom: clear dataspace if lookup failed
Issue #3897
2024-11-20 08:58:39 +01:00
Norman Feske
9e4b27a829 fs_rom: use dataspace bounds for clearing
Avoid potential risk of exceeding the dataspace bounds should the stored
file size be larger than the current ds size.

Issue #3897
2024-11-20 08:58:39 +01:00
Josef Söntgen
1f225b4b6f gpu/intel: use fixed aperture size for GPU service
This commit adapts the aperture splitting between the GPU multiplexer
and the display driver where the former now always tries to reserve
32 MiB of aperture space for itself instead of limiting the space
for the display driver. In case the aperture is not large enough
the display driver takes precedence and the GPU service has to make
do with remaining space. In the worst case that renders the GPU
service unusable.

Issue #5377.
2024-11-20 08:55:49 +01:00
Christian Helmuth
0794d99eff depot: update recipe hashes 2024-11-05 13:41:07 +01:00
Norman Feske
8d50d320e2 nitpicker: drop superfluous abs motion events
This patch fixes focus-follows-mouse problem reported for Sculpt 24.10
when using no (operational) backdrop.

In the absence of a background, nitpicker wrongly delivered absolute
motion events to the most recently hovered client even after leaving the
client's area to a area occupied by no client. These motion events, in
turn, confused the internal consistency of the window managers
enter/leave tracking.

Fixes #5375
2024-11-05 12:03:17 +01:00
Christian Helmuth
30f3ef25ad depot: update recipe hashes 2024-10-30 14:02:44 +01:00
Norman Feske
aafd03ee74 nitpicker: validate pointer pos after reconfig
Since the panorama depends on the config, nitpicker needs to re-evaluate
the validity of the pointer position after each reconfiguration. If the
pointer position is no longer visible, pick a new visible one.

Issue #5352
2024-10-30 08:14:56 +01:00
Norman Feske
da6124c087 nitpicker: allow pointer move along screen edges
Issue #5352
2024-10-30 08:14:56 +01:00
Norman Feske
71a3e228ae nitpicker: report pointer pos in hover report
Issue #5370
2024-10-30 08:14:55 +01:00
Norman Feske
8ed87dae71 gui_fb: deliver initial mode signal if pending
This patch handles the case where a mode change happens in-between
session creation and the registration of the mode-signal handler,
which can result in a sporadic loss of response to mode changes.

Noticed while working on issue #5286.
2024-10-30 08:14:55 +01:00
Norman Feske
3ab9173b20 gui_session: window-closed state as attribute
With the change of "gui_session: provide mode info as XML", the
client-side window-close handling became dysfunct because the
window-close state got wrongly interpreted as initial window state, to
the effect that a client's initial-window size policy got applied
instead of closing the window.

This patch makes the inital state of running a windowed application
(when no window size is defined yet) clearly distiguishable from the
state after which the user closed the window. Prior this patch, both
conditions were reflected by an empty <capture/> node in the panorama.
Now, the latter condition is reported as <capture closed="yes"/>, which
alleviates the need to track the life cycle of a window at the client
size.

Issue #5353
2024-10-30 08:14:55 +01:00
Sebastian Sumpf
b48ae5550a test/framebuffer: add 15px marker at 0x0 2024-10-30 08:14:55 +01:00
Norman Feske
08bf219b28 nitpicker: apply domain constraints to GUI info
If a <domain> is constrained by 'width' or 'height' attributes, clip
the capture rects of the panorama info reported to the client. So the
client observes the constraint as window size.

Issue #5356
2024-10-30 08:14:55 +01:00
Norman Feske
f30bbb1472 nitpicker: restore Capture::Session::screen_size
Since #5352, the 'screen_size' RPC function returns a rectangle clipped
against the client's bounding box, which unfortunately prevents
screen-capturing applications from determining the actual screen size.
This patch restores the original behavior by clipping the panorama
against client-specific constraints w/o clipping against the client's
buffer size.

Fixes #5365
2024-10-30 08:14:54 +01:00
Norman Feske
73991e62ec nitpicker: clear capture buffer on policy change
This patch resets the pixel buffer shared with the capture client
whenever the capture policy is modified and reports the whole buffer as
affected rectangle on the next client call of 'capture_at'. It also
clips the dirty rectangles tracked via 'mark_as_dirty' against the
bounding box of the capture session to avoid the interference of
out-of-view parts of the panorama with a capture client.

Fixes #5368
2024-10-30 08:14:54 +01:00
Christian Helmuth
679d68d470 nitpicker: rename 'displays' report to 'panorama'
... and enable report in Sculpt's report_fs.

Issue #5352
2024-10-30 08:14:54 +01:00
Norman Feske
2d7cd1c736 nitpicker: fix stale pixels on view removal
Sometimes when removing the popup window in Sculpt's Leitzentrale, a few
residual pixels remained. This is caused by the too strict coupling of
drawing and sync handling, effectively executing the fb-sync handler
repeatedly via 'Main::mark_as_damaged' during 'refresh_view' calls.
This tight coupling has two unwelcome effects. First, the sync handling
is executed more often than needed. Second, the sync handling (and fb
flushing) happens at intermediate states when view-stack changes are
applied (like changing a view geometry).

This patch uses a local signal handler to defer the execution of the
sync code until all drawing has finished.

Issue #5347
Issue #5356
2024-10-30 08:14:54 +01:00
Norman Feske
5f4e1db576 nitpicker: fix stale pixels in request-fb mode
When nitpicker is used as nitpicker client as is the case for Sculpt's
Leitzentrale, the time to sleep was tracked wrongly. The fb sync stays
alive only if a refresh operation is actually issued.

Issue #5347
Issue #5356
2024-10-30 08:14:54 +01:00
Norman Feske
e1be17b56d init: prevent double session-upgrade forwarding
Fixes #5367
2024-10-30 08:14:54 +01:00
Alexander Boettcher
5497829608 nitpicker: return OUT_OF_CAPS instead throwing
it as exception.

Issue #5242
Fix #5366
2024-10-30 08:14:53 +01:00
Alexander Boettcher
6a5473b478 intel/gpu: sanitize report for intel/display
Instead of forwarding the whole devices ROM of the platform driver to the
display driver, report only Intel devices and additionally adjust the
reported IOMEM size to the reduced aperture size.

Related #5207
Issue #5345
Issue #5356
2024-10-30 08:14:52 +01:00
Johannes Schlatow
d87a235abb nic_router: fix DHCP deallocation on domain update
Commit ac42ade introduced a regression that triggered an assertion in
`Dhcp_server::free_ip()` because the DHCP allocation was not properly
removed during a domain update. The underlying issue was that
`with_dhcp_server()` silently landed in the `no_dhcp_server_fn`.

Fixes #5364
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
Christian Helmuth
225adf3681 nitpicker: document 'displays' report in README
Issue #5352
2024-10-15 13:54:30 +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
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 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