3340 Commits

Author SHA1 Message Date
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
Norman Feske
10a45b78d0 fb_sdl: side-step warnings due to arm_neon.h include 2025-01-30 16:35:49 +01:00
Norman Feske
d90db178a2 nitpicker: resolve uint64_t ambiguity 2025-01-30 16:35:49 +01:00
Norman Feske
526ea05821 os/pixel_rgba: inherit alignment of storage type
This avoids the compiler warning "address-of-packed-member" when
casting a Pixel_rgb888 pointer to an uint32_t pointer on 64-bit ARM.
2025-01-30 16:35:49 +01:00
Christian Helmuth
5076554f20 depot: update recipe hashes 2025-01-30 16:32:35 +01:00
Alexander Boettcher
279a02e449 sel4: increase resources for fb_bench
Issue #5423
2025-01-30 16:30:15 +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
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
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