Commit Graph

10359 Commits

Author SHA1 Message Date
Norman Feske
72a575a5f9 depot_autopilot.run: error message on empty tar
When wrongly invoking the run script by specifying a skipped test
as its only TEST_PKGS argument, the run script fails due to a wrong
tar argument order. Let's better reflect this condition to the user
ahead of invoking tar.
2024-04-12 12:57:30 +02:00
Benjamin Lamowski
1b313df419 linux: force stack area mapping at requested address
With `MAP_FIXED` absent from the mmap(3p) flags, "the implementation uses
addr in an implementation-defined manner to arrive at pa", which may
lead to a mapping at an address diffent to the requested `addr`.

Add `MAP_FIXED` to the mmmap flags to force mapping to the specified
address.

Fixes #5147
2024-04-12 12:57:30 +02:00
Norman Feske
6315a09369 pkg/test-libc_fifo_pipe: ignore Ipc_error messages
Such messages can occur by chance when killing 'echo' while the program
blocks in an IPC call. It gets killed nevertheless. So the message does
not hint at a failure of the test.
2024-04-12 12:57:30 +02:00
Norman Feske
598dfff601 pkg/test-tcp_bulk_lxip: adjust quota for sel4 2024-04-12 12:57:30 +02:00
Norman Feske
5b4e1d22d9 test/timer: adjust min timer period to 250 us
In the context of #5138, the timer drivers for NOVA and base-hw had been
changed to support timeouts at a precision of 250 us (from formerly 1 ms).
Adjust the test to the new expected lower bound.
2024-04-12 12:57:30 +02:00
Norman Feske
956ec2f84c pkg/test-read_only_rom: adjust quota for sel4 2024-04-12 12:57:30 +02:00
Norman Feske
3052260249 Adjust terminal_crosslink RAM quota for seL4
The dynamic buffer allocation increases the RAM demand slightly beyond
1M on seL4. Use 2M, as is already the default in pkg/terminal_crosslink.

Issue #5135
2024-04-12 12:57:30 +02:00
Christian Helmuth
2f1520b4c1 base-hw: fix EPIT duration calculation on roll-over
If Ocif was not reset between two calls to _duration(), the returned
value exceeded _max_value().
2024-04-12 12:57:30 +02:00
Christian Helmuth
abb2045e17 Remove exec_static_constructors from dde_linux drivers
This is a follow-up commit to "lx_emul: generate initcalls during build".

Issue #5096
2024-04-12 12:57:30 +02:00
Stefan Kalkowski
7ec08af6d9 usb: session renewal & new client API
Replace the USB session API by one that provides a devices ROM only,
which contains information about all USB devices available for this client,
as well as methods to acquire and release a single device.

The acquisition of an USB device returns the capability to a device session
that includes a packet stream buffer to communicate control transfers
in between the client and the USB host controller driver. Moreover,
additional methods to acquire and release an USB interface can be used.

The acquisition of an USB interface returns the capability to an interface
session that includes a packet stream buffer to communicate either
bulk, interrupt, or isochronous transfers in between the client and the
USB host controller driver.

This commit implements the API changes in behalf of the Genode C API's
USB server and client side. Addtionally, it provides Usb::Device,
Usb::Interface, and Usb::Endpoint utilities that can be used by native
C++ clients to use the new API and hide the sophisticated packet stream API.

The adaptations necessary target the following areas:

* lx_emul layer for USB host and client side
* Linux USB host controller driver port for PC
* Linux USB client ports: usb_hid_drv and usb_net_drv, additionally
  reduce the Linux tasks used inside these drivers
* Native usb_block_drv
* black_hole component
* Port of libusb, including smartcard and usb_webcam driver depending on it
* Port of Qemu XHCI model library, including vbox5 & vbox6 depending on it
* Adapt all run-scripts and drivers_interactive recipes to work
  with the new policy rules of the USB host controller driver

Fix genodelabs/genode#5021
2024-04-12 12:57:30 +02:00
Christian Prochaska
6e437674f7 gems: add dbg_download
Fixes #5143
2024-04-12 12:57:28 +02:00
Norman Feske
f3313b6603 base-hw: new timer implementation
Issue #5138
2024-04-12 12:57:28 +02:00
Norman Feske
5a79cb9150 waveform_player.run: define CPU resources
This is needed for the priority-based scheduling on base-hw.
2024-04-12 12:57:28 +02:00
Josef Söntgen
dea6609612 import-openssl.mk: provide file named after api
For now this import file is solely there to satisfy the mechansim
in Goa that collects and incorporates import files for used APIs.

Issue genodelabs/goa#81.
2024-04-12 12:57:28 +02:00
Christian Prochaska
33d4134f49 qt5: detect contrib code changes
Fixes #5141
2024-04-12 12:57:28 +02:00
Norman Feske
a0290f8c51 base-hw: preserve usec accuracy in us_to_ticks
The kernel timer used to truncated timeouts to the next lower
millisecond, which not only limits the wakeup accuracy but also results
in situations where a user-level timeout is triggered earlier than
expected. The latter effect results in the observation of a spurious
timeouts and the subsequent programming of another timeout.

The patch solves the problem by preserving the sub-milliseconds bits
in the 'us_to_ticks' implementation(s).

Issue #5142
2024-04-12 12:57:28 +02:00
Christian Prochaska
7ae7b8481a monitor: send a notification when an inferior vanished
Fixes #5139
2024-04-12 12:57:28 +02:00
Norman Feske
913196e2dc record_play_mixer: smoothen time-window allocation
This patch modifies the mixer's time window allocation by modelling the
drift of the period length over time. This yields a much better
stability of the detected sample rates in the presence of jitter.

Issue #5132
2024-04-12 12:57:28 +02:00
Norman Feske
6407f8667f rump: prevent sleep times of less than 1 sec
This patch caps the busyness of the rump kernel, which normally calls
sleep with timeouts between 0 and 10 ms even when idle. On Sculpt
running on a x250 laptop, this patch saves 0.4% CPU load, which is
almost the half of the idle load.

Issue #5140
2024-04-12 12:57:28 +02:00
Norman Feske
bc0b6be6a9 nova: new timer implementation
Issue #5138
2024-04-12 12:57:28 +02:00
Norman Feske
44e0d7003a base: Alarm_registry data structure
This data structure uses an AVL tree to maintain a time-sorted set of
alarm objects. It supports the use of circular clocks of an bit width.

Issue #5138
2024-04-12 12:57:28 +02:00
Norman Feske
3e46cf5664 base: add Xoroshiro PRNG utility to base/internal 2024-04-12 12:57:28 +02:00
Christian Prochaska
3dbe398252 test-monitor: increase buffer size
Issue #5137
2024-04-12 12:57:28 +02:00
Christian Prochaska
d1a750c528 monitor: make maximum GDB response size configurable
Fixes #5137
2024-04-12 12:57:28 +02:00
Christian Prochaska
011a521968 os: make 'terminal_crosslink' buffer size configurable
Fixes #5135
2024-04-12 12:57:27 +02:00
Alexander Boettcher
32cb245cb8 ahci: enable conversion error checking
Fixes #5134
2024-04-12 12:55:39 +02:00
Alexander Boettcher
34674ac49f register_set: avoid conversion warnings
for Bitset_2 and Bitset_3 as used by ahci driver

Issue #5134
2024-04-12 12:55:39 +02:00
Christian Prochaska
62b3f24d1c libc: select() based on poll()
Fixes #5131
2024-04-12 12:55:39 +02:00
Pirmin Duss
40fd3d8c62 acpica: add format library to used_api
The format library is required, otherwise the binary isn't build. This
regression was introduced in

  acpica: provide verbose config (issue #5083)

Fixes genodelabs#5136
2024-04-12 12:55:39 +02:00
Christian Helmuth
b99d91b96e lighttpd: pkg recipe for easy runtime instantiation
The package depends on two resources.

- A Nic session should be routed to the nic_router "http" domain make
  the HTTP server available from the outside on forwarded port 80.

- A File_system session labeled "webroot" can be routed to any server
  by relabeling the session, e.g., to "report" or "config" in parent.

Sculpt deploy exmaple exporting report_fs via HTTP.

  <start name="lighttpd" pkg="lighttpd">
    <route>
      <service name="Nic">
        <child name="nic_router" label="http"/>
      </service>
      <service name="File_system" label="webroot">
        <parent label="report"/>
      </service>
    </route>
  </start>
2024-04-12 12:55:38 +02:00
Christian Helmuth
83afc6e438 lighttpd: restore omission of O_NONBLOCK
Remove O_NONBLOCK from flags for regular files as libc cannot tell apart
regular files from others behind file-system sessions. Otherwise, reads
always "fail" with EAGAIN.

genodelabs/genode#5093
2024-03-05 11:56:19 +01:00
Christian Helmuth
706e341d3a trace_logger: read 'buffer' as Number_of_bytes 2024-03-04 15:50:03 +01:00
Josef Söntgen
449a72d8a2
trace_recorder: get session arguments from config
This commit adds support for setting the TRACE session parameters via
the configuration.

Fixes #5123.
2024-03-04 11:49:26 +01:00
Christian Helmuth
9c7a303caf depot: update recipe hashes 2024-02-29 11:08:28 +01:00
Stefan Kalkowski
0d1e4bf8d5 Remove orphaned usb_terminal (fix #5130) 2024-02-28 16:32:23 +01:00
Stefan Kalkowski
88c347ee00 usb_hid_reconnect.run: use distinct device-ids
Newer Qemu variants quit with an error about already existing devices
if the same device-id is add and removed in a loop fast. To circumvent
this strange behaviour, simply use consecutive device id numbers.

Ref genodelabs/genode#5021
2024-02-28 16:32:23 +01:00
Christian Prochaska
32e7ec7b9b core: implement 'Vm_session_component::reserve_and_flush()'
Issue #5069
2024-02-28 16:32:23 +01:00
Sebastian Sumpf
9a65e4f607 mesa: generalize binder memory management
This patch was back ported from upstream Mesa and generalizes the memory
management of buffer objects used by the binder. Before this patch the
binder was treated as a special case where buffer objects were allocated
with a simple "next block or wrap" allocator. With this commit the
binder now uses the vm_heap allocators as done by all other buffer
allocations which leads to issues with reference counting and object
destruction being resolved.

Original commit message:

We're moving towards a path where all contexts share the same virtual
memory - because this will make implementing vm_bind much easier - ,
and to achieve that we need to rework the binder memzone. As it is,
different contexts will choose overlapping addresses. So in this patch
we adjust the Binder to be 1GB - per Ken's suggestion - and use a real
vma_heap for it. As a bonus the code gets simpler since it just reuses
the same pattern we already have for the other memzones.
2024-02-28 16:32:23 +01:00
Norman Feske
b370591e64 Mobile version of Sculpt OS
This patch contains the mobile variant of Sculpt OS, which evolved
at the genode-allwinner repository until now. In consists of the
following parts:

- gems/src/app/phone_manager  plays the role of the sculpt manager
- sculpt/phone-linux          allows for test driving the mobile
                              variant on base-linux
- gems/src/app/dummy_modem    mockup of a modem's behavior, used for
                              GUI development and testing

The parts targeting a specific device (PinePhone) remain local to
the genode-allwinner repository.

To give it a try:

  make run/sculpt_test KERNEL=linux BOARD=linux \
                       SCULPT=phone LOG=core DEPOT=tar

Fixes #5125
2024-02-28 16:31:46 +01:00
Christian Prochaska
ea51f1ffda monitor: limit the 'm' command response size
Fixes #5119
2024-02-28 16:31:46 +01:00
Christian Prochaska
aa6f99b0a4 monitor: report all stopped threads on '?' command
Fixes #5120
2024-02-28 16:31:46 +01:00
Alexander Boettcher
12df9bf450 gpu/intel: make aperture configurable
Fixes #5124
2024-02-28 16:31:46 +01:00
Alexander Boettcher
77f5ef3bcd nvme: release device before suspend
- monitor system ROM changes
- stop processing of new Jobs before suspend
- destruct platform device before suspend, but keep platform DMA buffers
- re-construct platform device and reinit resources (mmio, irq) on resume
- re-start block job scheduling on resume

Fixes #5101
2024-02-28 16:31:46 +01:00
Alexander Boettcher
9d15735bc6 ahci: release device before suspend
- monitor system ROM changes
- stop processing of new Jobs before suspend
- destruct platform device before suspend, but keep platform DMA buffers
- re-construct platform device and reinit resources (mmio, irq) on resume
- re-start block job scheduling on resume

Issue #5101
2024-02-28 16:31:46 +01:00
Alexander Boettcher
cde4d4aee0 ahci: refactor code for suspend/resume
This commit is a preparation commit for suspend/resume. The commit
refactors the code in order to consolidate all Platform resources into one
instance. All users within the driver should access the resources with
with_* functions, which checks whether the device resource is usable. The
callers are not allowed to store any references to the provided resources.

Issue #5101
2024-02-28 16:31:46 +01:00
Alexander Boettcher
8b3a339817 acpi_suspend: add nvme & ahci tests
- update documentation
- add nvme und ahci + test case
- fix minor configuration issues of GPU test case

Issue #5101 #5081
2024-02-28 16:31:45 +01:00
Alexander Boettcher
bf6c484c13 gpu/intel: use with(fn, fn_error) pattern
Issue #5081
2024-02-28 16:31:45 +01:00
Alexander Boettcher
0684101ff0 gpu/intel: release device before suspend
- monitor system ROM changes
- stop processing of new Jobs before suspend
- destruct platform device before suspend, but keep platform DMA buffers
- re-construct platform device and reinit resources (mmio, irq) on resume
- re-start GPU job scheduling on resume

Fixes #5081
2024-02-28 16:31:45 +01:00
Christian Prochaska
4ce4d4120a qt5: define BUILD_ARTIFACTS
Fixes #5122
2024-02-28 16:31:45 +01:00
Josef Söntgen
35638568c5 qemu-usb: access I/O buffers directly
This commit replaces the mapping of DMA buffers and gets rid of the
bounce-buffer handling, which was introduced to prevent data
corruption noticed when utilizing USB storage with Windows 10 guests,
with accessing the buffers directly.

Due to the way Windows 10 at times manages its DMA memory (many small
pieces instead of few larger ones) the unbounded registry becomes a
problem when containing stale entries.

Changing the 'qemu-usb' implementation allows for using 'read_dma'
and 'write_dma' directly.

Fixes #5121.
2024-02-28 16:31:45 +01:00
Christian Prochaska
cda48b4a49 sculpt: add base binary archive path to build_info ROM
Fixes #5118
2024-02-28 16:31:45 +01:00
Norman Feske
5073cba536 dde_bsd: support record and play session interface
This patch enhances the audio driver with the option to operate as a
client of the record and play services instead of providing the audio-in
and audio-out services. The record/play mode can be enabled by setting
the 'record_play="yes"' config attribute.

The audio_in.run and audio_out.run scripts support the selection of the
mode via the 'use_record_play_sessions' hook function.

Issue #5097
2024-02-28 16:31:45 +01:00
Norman Feske
18c4393106 dde_bsd: coding style
Remove superflouous Genode:: prefixes, name Main members as private,
change signal "dispatcher" to "handler".
2024-02-28 16:31:45 +01:00
Sebastian Sumpf
ff1e4b1bfb vfs_lxip: return error in case peek read returns EAGAIN
A read with MSG_PEEK returns -1 and EGAIN/EWOULDBLOCK in case the socket
is connected. Zero is only returned if the socket is disconnected.

isuee #5104
2024-02-28 16:31:45 +01:00
Sebastian Sumpf
7cbce1f47c libc: socket_fs_plugin handle MSG_PEEK reads
In case the socket is non-blocking, a read with the MSG_PEEK flag set
has to return -1 and EWOULDBLOCK/EAGAIN in case no data is availble and
the socket is connected. Returning zero implies the socket is in
non-connected state. Therefore, check the connection state in this
situation and return accordingly.

issue #5104
2024-02-28 16:31:45 +01:00
Norman Feske
07669ac991 os: record-and-play session interfaces and mixer
- New session interfaces:
  - os/include/play_session   (for audio playing   / mic-input driver)
  - os/include/record_session (for audio recording / audio-output driver)
- Mixer at os/src/record_play_mixer providing both play and record services
- Simple waveform player at os/src/app/waveform_player
- Simple audio-signal capturing component at os/src/app/record_rom
- Simple oscilloscpe at gems/src/app/rom_osci (using record_rom)
- Simple test-audio_play for playing raw stereo f32 data

The _gems/run/waveform_player.run_ script illustrates the use of the new
components and interfaces.

Issue #5097
2024-02-28 16:31:45 +01:00
Josef Söntgen
914508bf7a lighttpd: streamline Genode specific patches
Issue #5093.
2024-02-26 08:59:10 +01:00
Christian Prochaska
080d3b6b63 vfs: support watch handlers on application signal level
Fixes #4092
2024-02-26 08:59:10 +01:00
Christian Helmuth
a529fffb7b Update jitterentropy to version 3.4.1
Fixes #5112
2024-02-26 08:59:10 +01:00
Christian Prochaska
fb2e0b50c8 os: 'Path_base::strip_double_dot_dirs()' improvements
Issue #5106
2024-02-26 08:59:10 +01:00
Christian Prochaska
7651c94bf5 os: add test for 'Genode::Path'
Issue #5106
2024-02-26 08:59:10 +01:00
Christian Prochaska
edba179497 qt5: fix debug link creation
Fixes #5116
2024-02-26 08:59:10 +01:00
Stefan Kalkowski
394801c998 hw: re-name scheduler files according to class
Fix genodelabs/genode#5115
2024-02-26 08:59:10 +01:00
Stefan Kalkowski
79167d8f5c hw: re-organize scheduler internals & API
* Move Kernel::Cpu_scheduler to Kernel::Scheduler
  (we only have that one scheduler)
* Move Kernel::Cpu_share to Kernel::Scheduler::Context
* Move Kernel::Cpu_priority to Kernel::Scheduler::Priority
* Rename all functions and variables refereing to `claims` to
  `prioritzed`, because claims is not that common
* Rename occurrences of `fill(s)` to `slack` to name the time portions
  outside of the prioritized quantum
* Get rid of some two-liner sub-functions with only one occurrence
  (like `_quota_introduction`, `_quota_revokation`,...)

Ref genodelabs/genode#5115
2024-02-26 08:59:10 +01:00
Stefan Kalkowski
c8380c1447 hw: remove Cpu_scheduler::_trim_consumption
This private, internal function is used only in one scope,
and therefore not neccessary. But it has nasty side-effects as
it takes the parameter `duration` as reference and changes its
value. Just remove it completely.

Ref genodelabs/genode#5115
2024-02-26 08:59:10 +01:00
Stefan Kalkowski
1c4078f23a hw: merge booleans in scheduler into one state
Instead of having `_yield` and `_need_to_schedule` booleans, use one
consistent state variable.

Ref genodelabs/genode#5115
2024-02-26 08:59:10 +01:00
Stefan Kalkowski
9d72c21894 hw: rename head in scheduler to current
The name head is already extensively used in the context of the lists
managed by the scheduler. This terminology duplications does not simplify
reading the code. Instead we keep head for the first item in the list,
but use `current` in the variable name and API of the `Cpu_scheduler`
class to refer to the current scheduled share.

Moreover, the `_head_quota` is now `_current_time_left`, because it does
not denote quota but time left for the current schedule. The boolean
variable `_head_claims` gets removed at all. It duplicated the state of
whether a current share ist set, and whether it has so-called claim time
left.

Ref genodelabs/genode#5115
2024-02-26 08:59:10 +01:00
Stefan Kalkowski
2f727fb5c6 hw: rename Cpu_scheduler variables
Give certain scheduler class wide variables and functions clear names:

* quota => super_period_length
* residual => super_period_left

Ref genodelabs/genode#5115
2024-02-26 08:59:10 +01:00
Stefan Kalkowski
8e2c95e5e4 hw: replace double_list implementation
Replace double linked list by normal Genode::List with an additional
pointer to last list member to efficiently handle the scheduler share lists.
Moreover, move it into the private part of the Cpu_scheduler class,
the only scope where it is used anymore.

Ref genodelabs/genode#5115
2024-02-26 08:59:09 +01:00
Stefan Kalkowski
0055438257 hw: improve readability of scheduler
Minor changes that should not change any semantics:

* Remove `_next_fill()` its short and only used in one context,
  in which it is good to know what that code actually does
* Turn boolean values into actual boolean values
* Remove some brackets around one-liner pathes

Ref genodelabs/genode#5115
2024-02-26 08:59:09 +01:00
Stefan Kalkowski
776c2a6046 hw: avoid state & code duplication in scheduler
The `_head_was_removed` variable got introduced in solving #4710, but it
reflects only whether `_head` is a valid pointer or not, thereby it
duplicates state.

Ref genodelabs/genode#5115
2024-02-26 08:59:09 +01:00
Sebastian Sumpf
ecd7b0568b lx_emul: adjust import to lx_kit remove
'src/include/spec/x86' does no longer exist

issue #5104
2024-02-26 08:59:09 +01:00
Sebastian Sumpf
c12224ffd3 api/pc_linux: adjust to legacy lx_kit removal
With the removal of legacy lx_kit 'src/include/spec/x86' does not longer
exist in dde_linux.

issue #5104
2024-02-26 08:59:09 +01:00
Sebastian Sumpf
97f8179f90 dde_linux: remove legacy lx_kit and lx_emul
All good things must come to an end.

issue #5104
2024-02-26 08:59:09 +01:00
Sebastian Sumpf
8aa3967201 dde_linux: remove legacy_lxip
Because legacy_lxlip is the last entry in dde_linux.port, remove the
port as well.

issue #5104
2024-02-26 08:59:09 +01:00
Sebastian Sumpf
8755993123 dde_linux: remove vfs_legacy_lxip
issue #5104
2024-02-26 08:59:09 +01:00
Sebastian Sumpf
b6baf3fe1e dde_linux: remove 'import-usb_arch_include.mk'
This seems to be an artifact left over from the legacy USB drivers.

issue #5104
2024-02-26 08:59:09 +01:00
Sebastian Sumpf
f86cd6899c ahci: add port count vs. ports implemented check
Check if controllers port count matches number of ports found in the
port implemented register. In case counts don't match print a diagnostic
message for debugging purposes.

issue #4081
2024-02-26 08:59:09 +01:00
Christian Helmuth
4a1a162c09 usb_hid: enable magic trackpad support
Issue #5105
2024-02-26 08:59:09 +01:00
Christian Helmuth
1dcc6fda6b lx_emul: improve motion-device handling in evdev
The key element of the improvement is differentiated processing of
events of the following device types.

  Mouse:       relative motion
  Pointer:     absolute motion (Qemu usb-tablet and IP-KVM devices)
  Touchpad:    relative motion via absolute touchpad coordinates
  Touchtool:   absolute motion (e.g., stylus)
  Touchscreen: absolute motion and finger (multi-) touch

Processing is done in two stages for one "input packet". First, all
events of the packet are recorded into the current evdev state with
device-type specific operations. Then, appropriate Genode input events
are generated from the accumulated evdev state in the submission stage
(again by device-type specific functions).

A simple version of tap-to-click was added to the touchpad support.

Fixes #5105
2024-02-26 08:59:09 +01:00
Christian Helmuth
a0e0000108 genode_c_api/event: absolute-motion events
Absolute motion events are generated by "tablet" devices, e.g., Qemu
usb-tablet and IP-KVM appliances like PiKVM.

Issue #5105
2024-02-26 08:59:09 +01:00
Christian Helmuth
5f2691a65b event_filter: transformation of motion coordinates
The <transform> filter configurably transforms touch and absolute-motion event
coordinates by a sequence of translation (move), scaling, rotation, and flipping
primitives in sub-nodes.

Issue #5105
2024-02-26 08:59:09 +01:00
Christian Helmuth
7304a019e7 event_filter: <log motion="true"> attribute
Per default, only key presses and releases are logged. The optional
'motion' attribute (boolean) enables logging of motion and touch events.

Issue #5105
2024-02-26 08:59:09 +01:00
Christian Helmuth
17724c5f1c virt_linux: enable magic mouse/trackpad HID
Issue #5105
2024-02-26 08:59:09 +01:00
Christian Helmuth
ca9b5e3f56 virt_lx_emul: update initcalls
- SMSC95xx usb net
- HID multitouch / magicmouse
- no SMP / timer broadcast on arm_v7
- no IPv6

Issue #5105
2024-02-26 08:59:09 +01:00
Sebastian Sumpf
fccf025d2f usb_hid: enable driver level multi-touch support
This commit enables generic Linux multi-touch support as well as support
for the Wacom Intuos/Graphire tablets as found in the previous version
of the USB HID driver. Events are not properly propagated through
Genode's Event C-API, yet, which will be a follow up.

Issue #5105
2024-02-26 08:59:09 +01:00
Christian Helmuth
c57b841556 Fix link of jitterentropy port
The current port of jitterentropy is version 1.2.0 from pre-2017, whose
sources were recently moved to

  http://www.chronox.de/jent/releases/historic/jitterentropy-1.2.0.tar.xz

Note the *historic* label.

Issue #5112
2024-02-26 08:59:09 +01:00
Christian Prochaska
a1b5ebeb09 depot_query: add support for bin and dbg archives
Fixes #5110
2024-02-26 08:59:09 +01:00
Christian Prochaska
0bc2e240bf monitor: always respond to qXfer:memory-map:read
Fixes #5109
2024-02-26 08:59:08 +01:00
Johannes Schlatow
d23e1a87dd vfs_import: truncate files before writing
genodelabs/genode#5107
2024-02-26 08:59:08 +01:00
Christian Helmuth
6a94b8d153 Remove obsolete lx_kit_setjmp library
Issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
37736016fb usb_hid: adjust to arm_v7 UP and RCU tiny
Adjust source.list and dummies

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
5f1b0a5945 usb_net: adjust to arm_v7 UP and RCU tiny
Adjust source.list and dummies

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
a5f72ec095 lxip: adjust to arm_v7 UP and RCU tiny
Adjust source.list and dummies

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
7e8661f8bf virt_linux: disable SMP for arm_v7 and change to tiny rcu
When SMP is enabled multicore specific instructions (e.g., pldw) are
generated. These are not supported and lead to invalid instruction
faults on uni-processor systems (like Cortex-A8). Therefore, we disable
SMP for arm_v7 in Linux code. This requires also a switch from the RCU
tree implementation to RCU tiny, which we shadow and dummy implemented.

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
651eb9d4f2 lx_emul/random: do not use jitterentropy in case initialization failed
Until now, in case 'jent_entropy_init' failed an error has been produced
and the following jitterentropy functions (i.e.,
'jent_entropy_collector_alloc') where called nevertheless. In case we
received a bad time source error, for example because the performance
counters are not working on the platform, the entropy collector did not return (endless
loop).

Therefore, this commit treats the failed jitterentropy initialization
not as an error but prints a warning about poor randomness quality and
stops using the jitterentropy library from this point on. The
'Jitterentropy::gen_random_u64' will in this case return the address of
a stack variable * some counter.

This is only a interim solution to make platforms work where performance
counters or TSC values do not exist/work.

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
8c9b23ef56 test-libc_connect: use black hole as Uplink for lxip
For connection timeout test, create uplink domain via the 'black_hole'
that is only reachable through the nic_router.

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
05283ac247 test/libc_connect: use IP outside of domain for timeout
The IP for the connect timeout test should be in another nic_router
domain, so ARP request are only processed be the nic_router and no other
IP stacks.

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
240819b708 black_hole: add support for Uplink client
The uplink client simply drops and acknowledges packets it receives.

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
61115c3776 depot_autopilot: adjust RAM quotas for lxip
Adjust the autopilot tests that use lxip to the lower RAM requiremnts of
lxip (old and new).

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
fb4ac714b2 recipes: adjust runtime quotas to lxip
lxip (old and new) requires less RAM now.

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
561a9e7a72 vfs_lxip: adapt to 'genode_socket' C-API
Adjust the plugin to use the socket C-API found under
dde_linux/src/lib/lxip/include/genode_c_api/socket.h'.

This is the first minor step in generalizing the plugin.

isse #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
93b3e7d12f libc: socket_fs_plugin add monitor call
Add monitor call for '_fd_read_ready' because this maps to 'poll' in
'vfs_lxip' which should be executed by the EP.

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
701856b06a dde_linux: copy vfs_lxip -> vfs_legacy_lxip
Make a copy of vfs_lxip so it can be revived easily. The plugin can now
be used like

! <legacy_lxip dhcp="yes"/>

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
27b1017fe9 test/lxip_raw: test using Genode socket C-API directly
The lxip_raw.run script will spawn a client/server scenario that tests
Genode C-API calls. The scenario can be used standalone, meaning no
actual network card is required.

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
42d9640443 lxip: update to Linux 6.1.20
This commit updates lxip from version 4.4.3 to 6.1.20. It uses the
current lx_kit approach and is a shared library again. The stack has
been tested for x86_32/x86_64/arm_v6/arm_v7/arm_8.

The C-interface of the IP stack can be found under
lxip/include/genode_c_api/socket.h.

issue #5104
2024-02-26 08:59:08 +01:00
Sebastian Sumpf
c2080ecc03 linux.port: lxip_ip_config.patch
The patch makes it possible to re-configure the IP settings via DHCP or
static.

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
bcb4b231af linux.port: lxip_checksum_32.patch
CONFIG_X86_USE_PPRO_CHECKSUM is a 'def_bool y' and gets re-enabled by
'make olddefconfig'. The PPRO version contains text relocations which we cannot
have in binaries (e.g., 'lea 45f(%ebx ...).').

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
364e58097d lx_emul: prevent division by zero
Check if ceil is <= 1 to prevent division by zero in
'__get_random_u32_below'.

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
a0840d7a06 lx_emul/shadow: uaccess_32/64
Expand shadow header with '__copy_from_user_inatomic_nocache' and/or
'__copy_from_user_flushcache'.

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
1006e9d987 lx_emul/x86_32: atomic64 set and cmpxchg
64-Bit versions for 32-Bit architecture.

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
8c26a142c6 lx_emul: spinlock add bh_enable/disable
add bottom half enable/disable to functions with suffix "_bh" were
missing, because some functions release the bottom half separately
(__neigh_event_send).

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
c2a2ed67bb lx_kit/lx_emul: support explicit init call
Add the possibility to execute a module-init call by name using
'lx_emul_init_call', this is used, for example, by lxip to configure and
re-configure the IP address through 'ip_auto_config'.

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
7abe07e2cf lx_emul/virt: remove stop from 'rcu_barrier' dummy
issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
df459c46ef usb_net: adjust to virt_linux config changes
* remove dummies for '__alloc_pages' and friends

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
5dc4ee6524 wireguard: adjust to virt_linux config changes
* remove dummies for '__alloc_pages'
* adjust arm_64 -> arm_v8
* remove IPv6 dummies (disabled in virt_linux)

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
7395f24423 virt_lx_emul: add shadow 'page_alloc.c'
Add suspport for '__alloc_pages' in virt_linux

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
7d62b891f8 virt_linux api: adjust to lx_kit split of arm_v(6|7|8)
Adjust API path.

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
e21e32a793 virt_linux: disable IPv6
Will be re-enabled with IPv6 support of lxip.

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
c2650cd1e7 virt_linux_generated: sort dep.list
sort 'dep.list' using LC_ALL=C.

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
360d38c36d dde_linux: move lxip -> legacy_lxip
move lxip stack to 'legacy_lxip' so it can be revived easily.

issue #5104
2024-02-26 08:59:07 +01:00
Sebastian Sumpf
f19cd8416e lx_kit: split includes and setjmp into arm_v(6|7|8)
Move 'arch_execute.h' headers and 'setjmp/longjmp' implementation from
arm/arm_64 to arm_v(6|7|8).

issue #5104
2024-02-26 08:59:07 +01:00
Martin Stein
1336b0a751 mmio: upper-bounds checks
The classes Genode::Mmio, Genode::Register_set, Genode::Attached_mmio, and
Platform::Device::Mmio now receive a template parameter 'size_t SIZE'. In each
type that derives from one of these classes, it is now statically checked that
the range of each Genode::Register::Register- and
Genode::Register_set::Register_array-deriving sub-type is within [0..SIZE).

That said, SIZE is the minimum size of the memory region provided to the above
mentioned Mmio classes in order to avoid page faults or memory corruption when
accessing the registers and register arrays declared inside.

Note, that the range end of a register array is not the end of the last item
but the end of integer access that is used for accessing the last bit in the
last item.

The constructors of Genode::Mmio, Genode::Attached_mmio, and
Platform::Device::Mmio now receive an argument 'Byte_range_ptr range' that is
expected to be the range of the backing memory region. In each type that derives
from on of these classes, it is now dynamically checked that 'range.num_bytes
>= SIZE', thereby implementing the above mention protection against page faults
and memory corruption.

The rest of the commit adapts the code throughout the Genode Labs repositories
regarding the changes. Note that for that code inside Core, the commits mostly
uses a simplified approach by constructing MMIO objects with range
[base..base+SIZE) and not with a mapping- or specification-related range size.
This should be fixed in the future.

Furthermore, there are types that derive from an MMIO class but don't declare
any registers or register arrays (especially with Platform::Device::Mmio). In
this case SIZE is set to 0. This way, the parameters must be actively corrected
by someone who later wants to add registers or register arrays, plus the places
can be easily found by grep'ing for Mmio<0>.

Fix #4081
2024-02-26 08:59:07 +01:00
Martin Stein
ee6f5f3b1b base: remove deprecated driver files
As far as I can tell, these file are not used anymore.

Ref #4081
2024-02-26 08:31:06 +01:00
Sebastian Sumpf
7ea020d471 usb_hid: add 'usb_clear_halt'
This function is called by 'hid_reset' when the HID_CLEAR_HALT bit set,
as it happens to be on the Rasbarry Pi 1.

issue #4958
2024-02-26 08:31:06 +01:00
Sebastian Sumpf
d191c376f7 dde_linux: add libnl for arm_v6
This was covered before by SPEC 'arm'.
2024-02-26 08:31:06 +01:00
Pirmin Duss
55007f5bd9 i2c: bus speed configuration node
I2C EEPROMs of the type at24xxx are really slow (ca. 10 kHZ).

This adds the `bus_speed_khz` attribute to the config of the driver and
adapts the i.MX8 driver to support the feature.

Issue gapfruit#1996
Fixes genodelabs#5090
2024-02-26 08:31:05 +01:00
Sebastian Sumpf
40c8e76f49 dde_linux: adjust test/driver_time to virt_linux
Adjust test to current virt_linux configuration.

issue #5095
2024-02-26 08:31:05 +01:00
Benjamin Lamowski
8540b4c9d1 hw: rename Vm_data to Vcpu_data
Rename Vm_data to Vcpu_data to make it clear that the allocated data is
per vCPU, not per VM.

Issue #5100
2024-02-26 08:31:05 +01:00
Benjamin Lamowski
69b76ba9ed hw: move physical VMCB address out of the VMCB
The physical address of the memory used for the guest VMCB is already
present in Vcpu_data. Use the information there instead of storing the
physical address in the host data area, thereby freeing up 8 bytes for
a bigger Mmio class.

Issue #4081
2024-02-26 08:31:05 +01:00
Benjamin Lamowski
cec7847502 vbox6: add support for Windows BSOD logging
Hitting a BOSD in a Windows guest in Virtualbox 6 leads to calling
 `DBGFR3ReportBugCheck`, which leads to the following error since it is
 unimplemented in our port:

```
 Error: DBGFR3ReportBugCheck: DBGFR3ReportBugCheck called, not implemented, eip=0x1a5c4e4
```

Including the actual method from Virtualbox 6 enables logging
diagnostics for the Windows Blue Screen of Death (BSOD).
To see Blue Screen logging output, enable "dbgf" and "gim" logging
via the `VBOX_LOG` following environment variable in the vbox6 runtime
config.
When manually triggering a BSOD in the Windows guest, this should
produce the following logging diagnostics:

```
GIM: HyperV: Guest indicates a fatal condition! P0=0xe2 P1=0x0 P2=0x0 P3=0x0 P4=0x0
GIMHv: BugCheck e2 {0, 0, 0, 0}
MANUALLY_INITIATED_CRASH
```

Fixes #5099
2024-02-26 08:31:05 +01:00
Norman Feske
de6048f517 libc: consistency of tv_sec when tv_nsec wraps
The libc's internal calculation of the tv_sec and tv_nsec fields must be
based on the same ms value. Otherwise, tv_sec is not always immediately
incremented whenever tv_nsec wraps. For applications, this inconsistency
can result in observed jumps in time.

Fixes #5098
2024-02-26 08:31:05 +01:00
Sebastian Sumpf
684de7a57b lib/wifi: remove static constructors
Remove static constructors from 'socket_call.cc'

issue #5096
2024-02-26 08:31:05 +01:00
Sebastian Sumpf
491ab232bf wifi: remove 'Component::construct'
Init calls are not static constructors anymore, so 'Lx_kit::Env' is not
required to be initialzed before static constructors are called.

issue #5096
2024-02-26 08:31:05 +01:00
Sebastian Sumpf
1b4f7ae0d3 lx_emul: generate initcalls during build
Functions registered with 'module_init' (i.e., '__define_initcalls'),
'OF_DECLARE', and 'DECLARE_PCI_FIXUP_CLASS_FINAL' used to be static
constructors and had be explicitly registered using
'exec_static_constructors' before executing any Linux code.

With this commit we remove the constructor attributes from these
functions and create a global function pointer in the form of

__initptr_<name>_<id>_<counter>_<line number of macro>

'import-lx_emul_common.inc' will collect these '__initptr' symbols after
the compile step and generate a 'lx_emul_register_initcalls' function
that executes the functions pointed to. This step is now automatically
performed in 'lx_emul_start_kernel'. This way a call to
'exec_static_constructors' can be omitted in case there are no other
constructors in place.

issue #5096
2024-02-26 08:31:05 +01:00
Sebastian Sumpf
f9bff3bc7c dde_linux: remove library mk for usb_host_include
This library does not exist anymore.

issue #5095
2024-02-26 08:31:05 +01:00
Sebastian Sumpf
dea712ab72 usb_hid: add support for arm_v6
Also split into spec 'arm_v(6|7|8)'

issue #5095
2024-02-26 08:31:05 +01:00
Sebastian Sumpf
8851b64825 usb_net: add SMSC95xx driver for arm_v6
issue #5095
2024-02-26 08:31:05 +01:00
Sebastian Sumpf
b73765cf9b usb_net: add support for arm_v6
Also split into spec 'arm_v(6|7|8)'

issue #5095
2024-02-26 08:31:05 +01:00
Sebastian Sumpf
01369546d2 dde_linux: adjust wireguard and test to arm_v8
spec 'arm_64' has been moved to 'arm_v8'

issue #5095
2024-02-26 08:31:05 +01:00
Sebastian Sumpf
a67bc59686 virt_linux: add arm_v6
also split into arm_v(6|7|8)

issue #5095
2024-02-26 08:31:05 +01:00
Sebastian Sumpf
bb06e8451a dde_linux: split lib/mk into arm_v6/7/8
Split 'arm' and 'arm_64' into 'arm_v(6|7|8)'

issue #5095
2024-02-26 08:31:05 +01:00
Christian Helmuth
94ebdc9269 qt5: add missing header to qpa_init.h
Thanks to Andreas for the hint.
2024-02-26 08:31:05 +01:00
Norman Feske
0d34988929 test.run: remove obsolete boot-module heuristic
The ROMs of built executables and shared objects are now covered by the
[build_artifacts].

Issue #4860
2024-02-26 08:31:04 +01:00
Alexander Boettcher
443008777b vbox_share: provide .vbox file
The vbox file is missing to run the test scenario

Related to issue #4860
2024-02-26 08:31:04 +01:00
Christian Helmuth
6855b27553 openssl: update to version 1.1.1w 2024-02-26 08:31:04 +01:00
Christian Helmuth
e440ab40ef virt/lx_emul: check for NULL urb in usb_submit_urb()
The Linux implementation also includes this check. NULL urb submission
happened with Wacom touch devices.
2024-02-26 08:31:04 +01:00
Christian Helmuth
2584c104e0 usb_hid: use lib/kfifo.c
Required by Wacom touch drivers.
2024-02-26 08:31:04 +01:00
Christian Helmuth
092e4a001f usb_hid: mode led handling to shadow input-leds.c
The former implementation relied on input drvdata always pointing to
struct hid_device, which is not true for Wacom touch devices (at least).
Now, we implement the input handler for devices providing LEDs
(evbit[EV_LED] set) only and use input_inject_event() to set the LED
states.
2024-02-26 08:31:04 +01:00
Pirmin Duss
4535a27dfc libc.run: add missing library libm
Issue genodelabs/genode#5094
2024-02-26 08:31:04 +01:00
Josef Söntgen
00d3f61961 libdrm/etnaviv: align implementation with lima
This commit brings the etnaviv back end implementation in line
with the one from lima. Since the etnaviv driver itself handles
different contexts implicitly rather explicitly like lima and
iris for the moment only a main-context is used for all operations.

Issue genodelabs/genode-imx#8.
2024-02-26 08:31:04 +01:00
Johannes Schlatow
43274fbf5f depot: add tcp_terminal recipe
required for goa_testbed

genodelabs/genode#5093
2024-02-26 08:31:04 +01:00
Johannes Schlatow
fb58e46672 lighttpd: omit O_NONBLOCK
Uploading large files via HTTP PUT failed when the file system was
accessed via a file system session because lighttpd opened the
destination file with O_NONBLOCK and the write operation stalled
at some point.

genodelabs/genode#5093
2024-02-26 08:31:04 +01:00
Josef Söntgen
840bb5f90d lighttpd: enable mod_webdav module
genodelabs/genode#5093
2024-02-26 08:31:04 +01:00
Josef Söntgen
8a94dd2cb1 lighttpd.run: add mod_webdav
- using <inline> for random is not gonna fly when getentropy is called
  multiple times (and eventually fails due to EOF)

genodelabs/genode#5093
2024-02-26 08:31:04 +01:00
Josef Söntgen
ac790cd6fb ports: update lighttpd to 1.4.73
genodelabs/genode#5093
2024-02-26 08:31:04 +01:00
Josef Söntgen
b19d8a50d5 lighttpd.run: fix libc rtc setting
genodelabs/genode#5093
2024-02-26 08:31:04 +01:00
Johannes Schlatow
83e3178e9b Add FindXxx.cmake files to api archives
The FindXxx.cmake files are used by Goa's cmake support.

genodelabs/genode#5087
2024-02-26 08:31:04 +01:00
Christian Prochaska
f3cf4a7d7b qt5: adapt QtWebEngine for host GCC 13
Fixes #5091
2024-02-26 08:31:03 +01:00
Norman Feske
96ea73c3fe sculpt: preset for goa_testbed
Issue #5092
2024-02-26 08:31:03 +01:00
Norman Feske
7c76ec897c sculpt: add "http" and "telnet" nic_router domains
These domains allow for the hosting of plain http and telnet servers
reachable from the outside. The change is designated for the goa
testbed.

Issue #5092
2024-02-26 08:31:03 +01:00
Alexander Boettcher
c2cd4102d8 gpu/intel: prepare GPU structures for resume
The commit is a preparation commit for suspend/resume. It prepares the GPU
structures relying on gmadr.cap() (MMIO) to be re-constructible by applying
the with* pattern to context, ring_buffer and ggtt mmio map. It removes
the managed dataspace handling of gmadr subsets to make the with_* pattern
possible.

Issue #5081
2024-02-26 08:31:03 +01:00
Alexander Boettcher
d02f4866ea gpu/intel: make platform resources reconstructible
This commit is a preparation commit for suspend/resume. The commit
refactors the code in order to consolidate all Platform resources into one
instance. All users within the GPU driver should access the resources with
with_* functions, which checks whether the device resource is usable. The
callers are not allowed to store any references to the provided resources.

With this change, it will be possible in follow up commits, to release
the platform device and to re-acquire it and its resources, e.g. mmio, irq,
gmadr.

Issue #5081
2024-02-26 08:31:03 +01:00
Alexander Boettcher
c5a1e3daa3 acpi_suspend: extend test scenario
- add PS/2 input drivers
- add GPU client test case - glmark2
- remove display driver before suspend
- route log output via terminal on display to gather information, since in
  most cases serial/AMT is not available after ACPI resume

Issue #5081
2024-02-26 08:31:03 +01:00
Christian Prochaska
3062b7d780 lx_emul: add kvfree_call_rcu
Fixes #5089
2024-02-26 08:31:03 +01:00
Alexander Boettcher
27c9825bf0 intel/display: support larger resolutions
- fix detection to re-allocate framebuffer
- free up resources on framebuffer switching

Thanks Peter for reporting and fixing.
2024-02-26 08:31:03 +01:00
Benjamin Lamowski
25c7204b2a hw: clear RAM dataspaces in chunks
Clearing very large RAM dataspaces could fill up core's page table,
because the dataspaces are locally mapped to clear them.
This would manifest in a loop where exhausting the local page table
leads to its flushing (which does not work for core) and a retry that
again fills up the page table and so on.

To prevent this, flush RAM dataspaces in chunks of at most 128MiB.

Fixes #5086
2024-02-26 08:31:03 +01:00
Norman Feske
41731a2439 Make Session_object::warning const
This allows the use of the label-prefixed log utilities from a const
method of a derived class.
2024-02-26 08:31:03 +01:00
Benjamin Lamowski
8b5aa538e7 virtualbox6: fix runscript broken by refactoring
Add the `test.iso` and `virtualbox6.vbox` to `boot_modules`
that were omitted during the refactoring in #4860.

Fixes #5085
2024-02-26 08:31:03 +01:00
Christian Helmuth
c2e1013ad4 acpica: improve faked RSDP
More sane table values fix broken output on verbose.

Issue #5083
2024-02-26 08:31:03 +01:00
Christian Helmuth
980793970d acpica: detach MMIO region before re-attaching
This is a follow-up commit for the changes in #5069.

Fixes #5083
2024-02-26 08:31:03 +01:00
Christian Helmuth
30e37d90dd acpica: provide verbose config
If "verbose" is set to true in the config, AcpiOsPrintf etc. are enabled
to log to a dedicated LOG session using the Format:Console utility.

Issue #5083
2024-02-26 08:31:03 +01:00
Christian Helmuth
a6b30d58df lib/format: parse precision and lalign
Prevent errors if precision and left alignment are part of the string.
String precision is applied to limit access to the configured number of
characters but ignored for other types.

Issue #5083
2024-02-26 08:31:03 +01:00
Christian Helmuth
a5b8090e14 acpica: remove static constructor from lib
Issue #5083
2024-02-26 08:31:03 +01:00
Norman Feske
87993a864c input/event.h: axis ids LX, LY, LT, RX, RY, and RT
The axis IDs correspond to 2x analog sticks with 2 axes and 2x triggers.
While being at it, the commit changes the Axis_id type to Axis::Id.

Fixes #3669
2024-02-26 08:31:03 +01:00
Josef Söntgen
d9e4d32374 libdrm/lima: propagate allocation failure
Failed allocations were still denoted with a successful return value
to the caller. This situation was triggered by artificial testing and
has not been observed yet in practice. In case the 'LIMA_GEM_CREATE'
I/O control fails Mesa will dereference invalid pointers anyway.

Issue genodelabs/genode-allwinner#27.
2024-02-26 08:31:03 +01:00
Christian Prochaska
602f9b5670 monitor: remove 'flush_thread()' error message
Fixes #5082
2024-02-26 08:31:03 +01:00
Alexander Boettcher
c167e86d87 display/intel: translate ENOSPC into text message 2024-02-26 08:31:02 +01:00
Christian Helmuth
4a2319a4d6 os: limit backtrace to stack of current thread
The frame-pointer-based backtrace does not work without enabling
-fno-omit-frame-pointer explicitly and in most cases leads to page
faults because non-pointer stack values are dereferenced during the
walk. The best we can do is to limit the backtrace walk to the stack of
the current thread to prevent page faults unrelated to the system state
without the use of the backtrace utility.

This commit introduces a printable Backtrace class usable in
Genode::log(), Genode::trace(), etc. The class is based on the new
function for_each_return_address(auto const &fn) that walks the stack in
its limits and calls fn() for each discovered return address on the
stack in the new os/include/os/backtrace.h. Archtecture-specific
stack-pointer retrieval and walk loops are implemented in dedicated
os/include/spec/<arch>/os/for_each_return_address.h files. Also, the
well-known Genode::backtrace() function (which logs the return-address
values) is provided for backwards compatibility.

Fixes #5078
2024-02-26 08:31:02 +01:00
Christian Helmuth
d5188161f5 util/string.h: add Const_byte_range_ptr::contains()
Issue #5078
2023-12-15 14:11:56 +01:00
Sebastian Sumpf
36ea3cc5a4 netperf: decrease RAM quota from 32 to 14MB
issue #2181
2023-12-13 20:01:47 +01:00
Sebastian Sumpf
68ac1347b9 lxip: configure thash/uhash entries to 2048
The number of hash entries for TCP/UDP corresponds to the number of
sockets managed by the stack. In case there are more sockets than
entries available, buckets will be created to compensate for the lack of
space. The default values for TCP (524288) and UDP (65536) are meant for
the in kernel that manages all sockets of the user land and leads
to very large hash table allocations (>20MB) during initialization.

Since on Genode a component has its own instance of the IP stack or uses
the VFS server, we do not need these kind of large default settings.

issue #2181
2023-12-13 19:54:50 +01:00
Norman Feske
c4679e7af6 depot: update recipe hashes 2023-12-13 12:33:05 +01:00
Josef Söntgen
89270f69e0 sculpt_image: copy uboot.env file for PinePhone
Issue genodelabs/genode-allwinner#26.
2023-12-13 12:33:05 +01:00
Martin Stein
32d1e5b4a7 gems: remove unused import-sha256_4k.mk
Ref #5062
2023-12-13 12:33:05 +01:00
Norman Feske
77b0e10e88 vfs/ram_file_system: deferred unlink
This patch changes the unlink operation of the ram fs to defer the
destruction of a file until it is no longer referenced by any VFS handle.
When unlinked, the file no longer appears in the directory. But it can
still be opened and accessed.

With this change, a parent process of a Unix-like subsystem becomes able
to pass the content of an unlinked file to a forked child process. This
mechanism is required when using the 'exec' command in Tcl scripts.

Another use case is the 'tmpfile()' function.

Fixes #3577
2023-12-13 12:33:05 +01:00
Norman Feske
cb74956d06 os/run/test.run: build libs listed in <content> 2023-12-13 12:33:05 +01:00
Christian Helmuth
54c5b7d712 depot_autopilot: disable test-rm_nested on pistachio 2023-12-13 12:33:05 +01:00
Norman Feske
713659cea5 test-trace: adjust rate of top passing tracepoints
The traced top instance was configured to be active every two seconds
whereas the trace test uses a grace time of only 1.5 seconds before
raising the FOREIGN state of a trace subject as an error.

The state of a trace subject can change only whenever the traced thread
passes a trace point. Hence, with the original configuration, the
release of top as trace subject can take up to two seconds. The patch
reduces the rate to 0.5 seconds to satisfy the expectation of
test-trace.
2023-12-13 12:33:05 +01:00
Norman Feske
3aa2119290 core: use 'release' in Trace::Subject destructor
This avoids having two different code paths for destruction and release.
2023-12-13 12:33:05 +01:00
Johannes Schlatow
63dd5efa72 libc: fix post-2100 infinite-loop on 32-bit
The call of `mktime`/`timegm` with a broken down time after year 2100
led to an infinite-loop on 32bit.

genodelabs/genode#3707
2023-12-13 12:33:05 +01:00
Alice Domage
74abf8132e tool/port: add .sparse-git install rule
Following Github support removal for svn [1], dde_rump port fails to
prepare. This commit introduces a new install rule for ports,
'.sparse-git'. It performs a sparse-checkout on the port repository, only
fetching required files.

[1] https://github.blog/2023-01-20-sunsetting-subversion-support/

Co-authored-by: Benjamin Lamowski <benjamin.lamowski@genode-labs.com>

Issue genodelabs#5072
Issue genodelabs/goa#28
2023-12-13 12:33:05 +01:00
Christian Helmuth
636f5dda29 nic_router: specify ICMP Destination (host) unreachable
According to RFC 1812 ICMP Destination unreachable (Network unreachable)
does not quite our case of clients directly behind the router.

  If a packet is to be forwarded to a host on a network that is directly
  connected to the router (i.e., the router is the last-hop router) and
  the router has ascertained that there is no path to the destination
  host then the router MUST generate a Destination Unreachable, Code 1
  (Host Unreachable) ICMP message.

Issue #4729
2023-12-13 12:33:05 +01:00
Christian Helmuth
ad92d799cd netperf_lxip_wifi: run on foc_x86_32 too 2023-12-13 12:33:05 +01:00
Christian Helmuth
8f9056d738 netperf_lwip_wifi: run on foc_x86_32 too 2023-12-13 12:33:05 +01:00
Johannes Schlatow
c1bc9f8557 libc: use timegm instead of mktime
By using `mktime()`, which assumes local time, we render the `TZ`
environment variable ineffective. Instead, `timegm()` should be used to
set the real-time clock to UTC.

genodelabs/genode#5074
2023-12-13 12:33:05 +01:00
Christian Helmuth
b80fd10a70 wireguard: don't shadow lx_emul memory backend
Issue #4809
2023-12-13 12:33:05 +01:00
Christian Helmuth
1e7116fcc1 lx_emul: manage page structs per buffer range
The management of Linux page structs is now tied to the life time of DMA
buffers. Thus, page structs are created when a buffer is allocated and
deallocated only when a buffer is freed - not on lx_emul_mem_free()
because DMA buffers are cached. Page struct refcounting was entirely
reworked in lx_emul/shadow/mm/page_alloc.c.

Fixes #4809
2023-12-13 12:33:05 +01:00
Christian Helmuth
73bf682b62 lx_emul: add lx_emul_heap_alloc/free
Allocator for not-DMA-capable meta data buffers.

Issue #4809
2023-12-13 12:32:52 +01:00
Christian Helmuth
dec1869e2c pc_wifi.run: improve debugability 2023-12-13 12:32:19 +01:00
Alexander Boettcher
ce66e12699 vbox: improve network tx throughput
When multiple threads (EMT-0..X + nic_ep) enter the very same
critical section, the use of RTCritSectTryEnter may reflect the contention
case to the Network Model (E1000). Since no one notifies the model, when the
critical section is free again, solely the next packet/event triggered by the
guest will resume the former operation. This may lead to long delays until
packets are sent actually.

Instead of using the RTCritSectTryEnter use RTCritSecEnter to avoid the
situation. All of our network code is non blocking, so the network backend
will only be contented a short time.

Follow up commit to

Issue #5045
2023-12-13 12:32:19 +01:00
Stefan Kalkowski
342e48115e lx_emul: replace USB devio API usage
The devio API in the Linux kernel promised to be a stable layer for our
USB host controller drivers, but the additional bookkeeping and dynamic
allocations increase CPU overhead in a way that we do not accept further.
Therefore, we go a step back and process DMA transactions directly in and
out of the packet stream from the clients.

Fix genodelabs/genode#5071
2023-12-13 12:32:19 +01:00
Christian Helmuth
58dba227ce base: number of CPU components per slab block
On some platforms, only two CPU-thread component objects fit into on
page-sized slab block.

Issue #3834
2023-12-13 12:32:19 +01:00
Christian Helmuth
0046edf761 base: statically check for reasonable Tslab block size
Per default Tslab checks that 8 slabs incl. overhead fit into one block.
If this is not desired the template parameter 'MIN_SLABS_PER_BLOCK' can
be used to control the minimum number of blocks.

Fixes #3834
2023-12-13 12:32:19 +01:00
Christian Prochaska
ff5a474e74 ports: remove old GDB monitor
Fixes #5067
2023-12-13 12:32:19 +01:00
Christian Prochaska
9a049789de core: mark implicitly detached regions as reserved
Fixes #5069
2023-12-13 12:32:19 +01:00
Norman Feske
f57da7e645 trace: remove parent_levels session argument
The argument was originally designated to restrict the reach of the
trace monitor but the idea remained unimplemented. It is now superseded
by the use of the trace-session label as trace-subject filter.

Issue #847
2023-12-13 12:28:52 +01:00
Norman Feske
12b89852e0 sculpt: add "runtime" and "global" TRACE options
Issue #847
2023-12-13 12:28:52 +01:00
Norman Feske
f66ce025d3 Adapt run scripts to trace-subject filtering
Issue #847
2023-12-13 12:28:52 +01:00
Norman Feske
bfe88307de core: filter trace subjects by TRACE session label
This patch changes core's TRACE service to expose trace subjects only if
their PD label matches the label of the TRACE monitor. Hence, by default,
a trace monitor can only observe itself and its child components. Only
if the trace monitor's parent rewrites the trace-session's label, the
view of trace monitor can become broader. For example, when rewriting
the trace label to an empty string "", the trace monitor becomes able to
observe the sibling components hosted in the same init instance as the
trace monitor.

To grant a trace session the special privilege of obtaining a global
system view (including the kernel's trace subjects), the top-level init
has to rewrite the session's label to an empty string. At core, this
specific label "init -> " is handled as a special case that discharges
the filtering/namespacing of trace subjects.

Note that the trace-subject label as reported as subject info is now
given relative to the label of the trace session. As a nice side effect
of this change, the pkg/test-trace_logger works now when executed by the
depot_autopilot as well as via the test.run script.

Issue #847
2023-12-13 12:28:52 +01:00
Norman Feske
610ba6e3b6 touch_keyboard: add dialog API to src recipe
This is a follow-up commit to issue #5059. Without it, the binary
archive for the touch_keyboard remains empty.
2023-12-13 12:28:05 +01:00
Norman Feske
66160e6bd3 os/run/test.run: adapt to changed runtime format
Issue #4922
2023-12-13 12:28:05 +01:00
Norman Feske
e2d1888f52 trace_logger: priority config attr in config.xsd 2023-12-13 12:28:05 +01:00
Christian Prochaska
2aeea45c30 os: build 'lib/ld' in 'monitor_gdb.inc'
Fixes #5068
2023-12-13 12:28:05 +01:00
Norman Feske
82a9582dd7 qemu-usb: minor documentation fixes 2023-12-01 11:17:22 +01:00
Norman Feske
4e4b95bfe3 core: remove support for "unlabeled" LOG sessions
Fixes #5054
2023-12-01 11:01:29 +01:00
Josef Söntgen
9d989b1557 fetchurl: add 'ignore_failures' option
This option is useful in cases where batching is configured and
failing to fetch a resource should not influence the over-all
result.

Issue genodelabs/genodians.org#32.
2023-12-01 10:43:45 +01:00
Norman Feske
4685ba394e mk: .lib.so and .abi.so depend on linker scripts
Fixes #3978
2023-12-01 09:49:31 +01:00
Norman Feske
5734ea736c mk: remove unused LIB_SO_DEPS variable
Spotted during our work on issue #5061.
2023-12-01 09:45:47 +01:00
Christian Helmuth
8baf19022c depot: update recipe hashes 2023-11-30 15:11:36 +01:00
Johannes Schlatow
518a57d8e5 base-nova: allow access to Intel IOMMU
This allows the platform driver to take over control of DMA remapping
and keeps NOVA-driven interrupt remapping active.

genodelabs/genode#5002
2023-11-30 14:22:54 +01:00
Johannes Schlatow
039ade7ad0 pc/platform: allow booting with enabled IOMMU
genodelabs/genode#5002
2023-11-30 14:22:54 +01:00
Johannes Schlatow
1f1437747c platform_drv: don't copy Bdf
genodelabs/genode#5002
2023-11-30 14:22:54 +01:00
Johannes Schlatow
3f1e1323f0 pc/platform: enable IOMMU with default mappings
genodelabs/genode#5002
2023-11-30 14:22:54 +01:00
Johannes Schlatow
bc09ff7498 platform_drv: add default DMA mappings interface
genodelabs/genode#5002
2023-11-30 14:21:51 +01:00
Johannes Schlatow
4163367b53 pc/platform: detect invalid IOMMU devices
genodelabs/genode#5002
genodelabs/genode#2700
2023-11-30 14:20:53 +01:00
Johannes Schlatow
c06b53e52e acpi_drv: add config for ignoring DMAR table
By not evaluating the DMAR table, we disable the IOMMU.

genodelabs/genode#5002
2023-11-30 14:20:53 +01:00
Johannes Schlatow
196133c582 platform_drv: use guard pages for DMA buffers
genodelabs/genode#5002
2023-11-30 14:20:53 +01:00
Johannes Schlatow
d018cb62f3 platform_drv: guard against Out_of_* exceptions
In the scope of alloc_dma_buffer(), Out_of_* exceptions might be thrown
at different stages. By adding a Guard object, we make sure to rollback
already created objects accordingly.

genodelabs/genode#5002
2023-11-30 14:20:53 +01:00
Johannes Schlatow
350a3d9ae4 platform_session: increase RAM and CAP quota
As a consequence of the adding IOMMU support to the platform driver,
additional RAM and CAPs are needed for setting up IO page-table
structures.

genodelabs/genode#5002
2023-11-30 14:20:53 +01:00
Johannes Schlatow
3a62676da8 sculpt: increase RAM quota for platform driver
The platform driver needs additional 2MB of RAM for managing IO page
tables (root table and context tables) that are shared among sessions.

genodelabs/genode#5002
2023-11-30 14:20:53 +01:00
Johannes Schlatow
44617b8c9d sculpt: route iommu report from platform driver
genodelabs/genode#5002
2023-11-30 14:20:53 +01:00
Johannes Schlatow
855147a021 pc/platform: add intel IOMMU support
Add DMA remapping support for Intel devices to the platform driver.

genodelabs/genode#5002
2023-11-30 14:20:49 +01:00
Johannes Schlatow
70b1ae3d1b platform: move enable/disable_pci_device
genodelabs/genode#5002
2023-11-30 14:19:45 +01:00
Johannes Schlatow
f55d06fd5c base-nova: allow MSI for non-PCI devices
DMA remapping hardware units use MSI for fault events. However, MSI
were bound to the presence of a PCI configuration space.

genodelabs/genode#5002
2023-11-28 19:35:16 +01:00
Johannes Schlatow
eefaa07024 base: add irq_type session argument
By adding the `irq_type` argument, one can explicitly specify whether to
use LEGACY, MSI or MSI-X interrupts. We formerly used the
`device_phys_config` to implicitly select MSI, however, with the
addition of IOMMU support to the platform driver there is at least one
instance where we need an MSI for a non-PCI device.

Yet, by adding another session argument to the Irq session, we exceed
the character limit for session args. Since not all arguments are
relevant for LEGACY interrupts resp. MSI, we can split the Irq_connection
constructor to handle the two cases separately and omit unneeded
arguments.

genodelabs/genode#5002
2023-11-28 19:35:16 +01:00
Johannes Schlatow
a80464299a platform_drv: add phys_addr to add_range()
We need the physical address of a DMA range in order to insert it into
the translation table.

genodelabs/genode#5002
2023-11-28 19:01:28 +01:00
Johannes Schlatow
0182e81b51 platform_drv: map actual DMA dataspace size
DMA buffer allocations are always performed as full pages. However, they
got mapped into the IOMMU domain using the requested size, which may not
be a multiple of the page size. This behaviour was introduced as a regression
by #4761 and is corrected by this commit.

genodelabs/genode#5002
2023-11-28 19:01:28 +01:00
Johannes Schlatow
ae7e461452 platform_drv: move IOMMU domain destruction
Destruction of IOMMU domain should happen after the PCI device was
disabled in order to prevent faulty DMA transactions.

genodelabs/genode#5002
2023-11-28 19:01:28 +01:00
Johannes Schlatow
d7b9cd0654 platform_drv: move add_range calls from base class
The virtual add_range()-method must not be called from the base-class
constructor since the derived class is not be fully initialized at
this point.

genodelabs/genode#5002
2023-11-28 19:01:28 +01:00
Johannes Schlatow
022762605b pci_decode: add <irq/> to drhd devices
genodelabs/genode#5002
2023-11-28 19:01:28 +01:00
Johannes Schlatow
7c5b59556a pci_decode: add <iommu> node to devices
genodelabs/genode#5002
2023-11-28 19:01:28 +01:00
Johannes Schlatow
e816020346 pci_decode: add intel_iommu devices to devices ROM
genodelabs/genode#5002
2023-11-28 19:01:28 +01:00
Johannes Schlatow
7b99a43c9e acpi_drv: add size attribute to drhd
genodelabs/genode#5002
2023-11-28 19:01:28 +01:00
Christian Helmuth
a90e0e249e pc_nic_drv: implement gpiod_get_optional() as dummy 2023-11-28 14:46:28 +01:00
Martin Stein
3b7124bb37 wireguard: README and config.xsd
Ref #4957
2023-11-28 14:46:28 +01:00
Martin Stein
49dd55313a sculpt_manager: select correct launcher in + menu
The sculpt manager views only launchers in the + menu that are not present in
the runtime already. However, this check was missing when finding the right
launcher on a click event inside that menu. This could cause the manager to
try deploying an already deployed launcher a again (without any effect)
instead of deploying the launcher that was actually clicked.

Ref #5064
2023-11-28 14:46:28 +01:00
Norman Feske
ee8c76b42e dde_linux: use [build_artifacts] in run scripts
Issue #4860
2023-11-28 14:45:29 +01:00
Norman Feske
67741655d1 dde_rump: use [build_artifacts] in run scripts
Issue #4860
2023-11-28 14:44:29 +01:00
Norman Feske
1e166c7236 Supplement the build of shared libs where needed
This is a follow-up commit to the adaptation of the run scripts to the
consistent use of [build_artifacts] (issue #4860).

The missing build of libm remained undetected until the recent removal
of implicit shared-library builds (issue #5061).
2023-11-28 14:44:29 +01:00
Alexander Boettcher
ff740e300a wm: free window id on destroy_view
Issue #5048
2023-11-28 14:44:29 +01:00
Norman Feske
cb10fe1d77 decorator: add missing initial call _handle_mode
This call is needed whenever the mode has settled before the decorator
has started up.
2023-11-28 14:44:29 +01:00
Norman Feske
5ae0dab6c5 mk: remove implicit build of shared libraries
This patch removes the implicit build of all shared libraries a target
depends on. Targets only depend on the respective ABIs instead. This
alleviates the need to locally build complex shared libraries (think of
Qt) when developing applications. Instead, application developers can
use binary depot archives.

The implementation splits the mk/lib.mk file into three files:
- mk/a.mk   for building one static library (.lib.a)
- mk/so.mk  for building one shared object  (.lib.so)
- mk/abi.mk for building one ABI stub       (.abi.so)

Furthermore, the commit moves messages and the collection of build
artifacts to var/libdeps, triggers the build of kernel-specific
ld-<kernel>.lib.so, and prunes the lib-dependency tree at ABIs.

Fixes #5061
2023-11-28 14:44:29 +01:00
Alexander Boettcher
c02aa759e6 vbox: avoid stuck network during high tx load
- finished tx ack queue should be checked before new allocations
- packets which got not sent must be released in packet stream,
  otherwise the network packet stream gets filled up and starves after a while
- rRegister for ack avail packets and process them concurrently to EMT-* threads
  by nic_ep thread (thanks @Peter for the findings) + add synchronization.
- add sigh_ready_to_submit to network adapter to improve latency by notifying
  the network model explicitly in case we had a full packet stream error case
  (_retry resp. VERR_TRY_LATER)

Fixes #5045
2023-11-28 14:44:29 +01:00
Norman Feske
2d48e209f4 fb_sdl: fix build on 64-bit ARM Linux 2023-11-28 14:44:29 +01:00
Norman Feske
5a75a2f930 gems: use [build_artifacts] in run scripts
Issue #4860
2023-11-28 14:44:29 +01:00
Norman Feske
b843dbf045 pc: use [build_artifacts] in run scripts 2023-11-28 14:44:29 +01:00
Norman Feske
5af3ffd6a8 hello_tutorial: use [build_artifacts] in hello.run
Issue #4860
2023-11-28 14:44:29 +01:00
Norman Feske
727d307089 ports: use [build_artifacts] in run scripts
Issue #4860
2023-11-28 14:44:29 +01:00
Norman Feske
ab0058a454 ports: remove debug_nitpicker.run 2023-11-28 14:44:29 +01:00
Norman Feske
b27bd256dd libports: use [build_artifacts] in qt5 run scripts
Issue #4860
2023-11-28 14:44:29 +01:00
Norman Feske
db72301eb0 nic_router.run: use [build_artifacts]
Issue #4860
2023-11-28 14:44:28 +01:00
Johannes Schlatow
aa7058a3b4 test-read_only_rom: fix false positive
The test is rendered ineffective by a failed resource request.
2023-11-28 14:44:28 +01:00
Norman Feske
769a6ce987 touch_keyboard: use dialog API
Fixes #5059
2023-11-28 14:44:28 +01:00
Norman Feske
9144d47fe2 sculpt/nitpicker/default: focus of touch_keyboard
Without setting the focus to "transient", the touch keyboard is
not able to respond to mouse clicks.
2023-11-28 14:44:28 +01:00
Norman Feske
4a5632ab6d dialog: support view attribs in sandboxed_runtime
This patch mirrors the interface of Sculpt's distant_runtime to the
sandboxed_runtime variant, allowing the configuration of xpos, ypos,
min_width, min_height, opaque, and background color.

Issue #5008
2023-11-28 14:44:28 +01:00
Christian Prochaska
789ae1ea8d hw: distinguish 'Alloc_error' conditions in 'Cap_space'
Issue #5057
2023-11-28 14:44:28 +01:00
Norman Feske
0f54ad8e26 dialog: add text-area widget
This patch moves the text-editing facility of app/text_area to a
text-area widget as part of the dialog library. This has two benefits.
First, it simplifies app/text_area by using the dialog API. Second, the
editor can now easily be reused by other dialog-API-based applications.

Fixes #5058
2023-11-28 14:44:28 +01:00
Norman Feske
e326371762 gems: make gems/dynamic_array.h publicly available
The 'Dynamic_array' utility is used by the text_area as internal
representation of text. As a prerequisite step of making the text
editing features generally available as a text-area widget, the
utility must become public.

Issue #5008
2023-11-28 14:24:26 +01:00
Norman Feske
40c0db2e8d dialog: add Sandboxed_runtime::View::if_hovered
Issue #5008
2023-11-28 14:24:26 +01:00
Norman Feske
9fae8a7532 dialog: support Sandboxed_runtime::Event_handler
This allows applications to get hold of the raw input events,
in particular keyboard input.

Issue #5008
2023-11-28 14:24:26 +01:00
Johannes Schlatow
00ede822c6 disable demo and fb_bench for zynq_usrp_e31x
genodelabs/genode#5056
2023-11-28 14:24:26 +01:00
Johannes Schlatow
cd34effd64 run/cpu_bench.run: add timeout for zynq_usrp_e31x
genodelabs/genode#5056
2023-11-28 14:24:26 +01:00
Christian Prochaska
e9f3101105 base: restore the session phase in `Parent_service'
Issue #5055
2023-11-28 14:24:26 +01:00
Christian Helmuth
2bacd2bf62 run/netperf.inc: unique value for zynq_usrp_e31x
Also renumbered other platforms for sparse use of port space.
2023-11-28 14:24:26 +01:00
Norman Feske
0a71c8f3e1 sculpt_manager: use dialog API
Issue #5053
2023-11-28 14:24:26 +01:00
Norman Feske
1490c58f8b dialog: Hosted::if_hovered method
This method allows for the inquiry of the current hovering state,
e.g., to suppress an update of the Wifi accesspoint list while
the list is hovered.

Issue #5008
Issue #5053
2023-11-28 14:24:26 +01:00
Norman Feske
fa6c7204cd dialog: allow custom 'Select_button' attributes
This is useful to conditionally set the style to "unimportant", or to
use text other than the widget Id::Value.

Issue #5008
Issue #5053
2023-11-28 14:24:26 +01:00
Norman Feske
133cbd272e dialog: make 'click()' const wherever possible
This eases the use of, e.g., 'Select_button' as temporary variable.

Issue #5008
Issue #5053
2023-11-28 14:24:26 +01:00
Norman Feske
ec60011852 dialog: let 'Scope::widget' take 'hosted' as const
This eases the use of temporary 'Hosted' objects. The 'view' code path
is not expected to modify any state.

Issue #5008
Issue #5053
2023-11-28 14:24:26 +01:00
Norman Feske
1aba8182a4 dialog: pass value to Select_button::click
This eliminates the need to distinguish enum values in the body of the
handler, easing the forwarding of the selected value.

Issue #5008
Issue #5053
2023-11-28 14:24:26 +01:00
Stefan Kalkowski
e3881163c4 libc-net: eliminate annoying warning in sendmsg
Fix genodelabs/genode#5052
2023-11-28 14:24:26 +01:00
Christian Prochaska
5d9d3bff11 acpi_drv: detach dataspaces in 'Acpi::Memory'
Issue #5046
2023-11-28 14:24:26 +01:00
Christian Helmuth
536277ec55 lx_emul: prevent compiler warnings in usb.c 2023-11-28 14:24:25 +01:00
Christian Helmuth
7cefeac8ed lx_emul: make memory allocation more clear 2023-11-28 14:24:25 +01:00
Christian Helmuth
963b8b0607 lx_emul: comply boundary constraints of dma pool
Several DMA pools of the EHCI/UHCI USB host controller driver declare
that buffers should not cross 4K boundaries. If this property is not met
fatal errors like NMIs may happen during USB operation.

Discussed in issue #5000
2023-11-28 14:24:25 +01:00
Christian Helmuth
e337f2cb0f lx_emul: natural alignment of power-of-two kmalloc 2023-11-28 14:24:25 +01:00
Stefan Kalkowski
62492f3cd2 lx_emul: do not reset ep in usb flush transfers
Certain USB devices do not react anymore after an endpoint reset
in the use case of USB devices passed through to a virtual machine.
When investigating the only USB session client that needs the
flush transfers request - namely the Qemu xhci model used in
VirtualBox - there seems to be no need to reset the endpoint in fact.

Fix genodelabs/genode#5050
2023-11-28 14:24:25 +01:00
Christian Prochaska
4ecae91fc3 monitor: use a registry for the memory map
Issue #5046
2023-11-28 14:24:25 +01:00
Christian Prochaska
ad28da66b0 usb_hid_raw.run: filter out KVM switch messages
Fixes #5049
2023-11-28 14:24:25 +01:00
Sebastian Sumpf
3264a22c1e socket fs: simplify AF_UNSPEC
Remove separate context state for AF_UNSPEC.

issue #5031
2023-11-28 14:24:25 +01:00
Sebastian Sumpf
c7956aa41b socket_fs/vfs_lxip: errno 65 is EHOSTUNREACH
Return "no route to host" on errno 65 which is EHOSTUNREACH in legacy
dde_linux, return EHOSTUNREACH accordingly in libc's socket fs.

issue #5031
2023-11-28 14:24:25 +01:00
Christian Helmuth
7fb0c9ba30 pc: implement kobject_uevent_env() in shadow/
Issue #5036
2023-11-28 14:24:25 +01:00
Christian Helmuth
f663168ffd sculpt: version 23.11 2023-11-28 14:24:25 +01:00
Christian Prochaska
98f7227ed0 gdb: fix failed assertion triggered by pagination
Fixes #5047
2023-11-28 14:24:25 +01:00
Christian Prochaska
e309c38263 monitor: prevent overlapping region list entries
Issue #5046
2023-11-28 14:24:25 +01:00
Christian Helmuth
4962340985 pc_linux: enable pinctrl, evdev, i2c_hid
Issue #5036
2023-11-28 14:24:25 +01:00
Sebastian Sumpf
48865337b1 pc_linux: enable gpio, audio
Issue #5036
2023-11-28 14:24:25 +01:00
Christian Helmuth
c05d4e5b49 dde_linux: prevent scatter-gather in USB devio
USB devio splits large transaction into 16 KiB buffers in scatter-gather
lists. Unfortunately, this mechanism seems unreliable most certainly because
of issue #4809 "DDE Linux struct page object aliasing".

Issue #5036
2023-11-28 14:24:25 +01:00
Alexander Boettcher
65b619e7b4 dde_linux: implement kmem_cache_destroy
Note, this enables more information on wifi-driver error recovery.

Issue #5036
2023-11-28 14:24:25 +01:00
Christian Helmuth
4d1e75ce3b dde_linux: enhance clock infrastructure
Issue #5036
2023-11-28 14:24:25 +01:00
Christian Helmuth
394a495b55 pc: unify string_helpers and get_option()
Issue #5036
2023-11-28 14:24:25 +01:00
Christian Helmuth
fec1765cc4 pc: run script for pc_nic_drv
Issue #5036
2023-11-28 14:24:25 +01:00
Christian Helmuth
a942efd92b pc: remove software_node_notify from common dummies
Issue #5036
2023-11-28 14:24:25 +01:00
Sebastian Sumpf
e56437ff0a pc: add "is_acpi_data_node" to lx_emul
Issue #5036
2023-11-28 14:24:25 +01:00
Christian Helmuth
0f8dd3a7a0 pc: remove __register_chrdev from common dummies
Issue #5036
2023-11-28 14:24:24 +01:00
Christian Prochaska
445ecba9b5 monitor_gdb.run: disable pagination earlier
Issue #5047
2023-11-28 14:24:24 +01:00
Benjamin Lamowski
a482bb8a89 libc: silence sysconf(_SC_GETPW_R_SIZE_MAX) warning
Currently, running ripgrep on Genode emits
"Warning: sysconf(71) not implemented".

Return -1 without setting errno, which is a valid return value according
to getpwnam(3) and silence the warning.

Fixes #5043
2023-11-28 14:24:24 +01:00
Christian Prochaska
6eaf333f10 ports: adapt GDB test to separate debug info files
Fixes #5044
2023-11-28 14:24:24 +01:00
Norman Feske
d7ee460704 list_model.h: rename 'apply_first' to 'with_first'
Issue #4317
2023-11-28 14:24:24 +01:00
Norman Feske
0f686a774d list_model.h: retire 'update_list_model_from_xml'
This transition vehicle to the modern interface has now been replaced by
the new 'List_model::update_from_xml' method.

Issue #4317
2023-11-28 14:24:24 +01:00
Norman Feske
b9b2a7de34 Simplify 'List_model'
This patch replaces the original policy-based 'update_from_xml' by a new
method that takes three functors for creating, destroying, and updating
elements as arguments. XML nodes are associated with their corresponding
internal data models by annotating the element type with the
'type_matches' class function and the 'matches' method.

The patch also improves safety by enforcing that list-model elements can
never be copied.

Fixes #4317
2023-11-28 14:24:24 +01:00
Norman Feske
b7b74e62a0 platform driver: don't copy list-model elements
Issue #4317
2023-11-28 14:24:24 +01:00
Norman Feske
6e0d44397f depot_autopilot: use modern list-model interface
Issue #4317
2023-11-28 14:24:24 +01:00
Norman Feske
58f7ed268d window_layouter: use modern list-model interface
Issue #4317
2023-11-28 14:24:24 +01:00
Norman Feske
47ac55e9c5 decorator: use modern list-model interface
Issue #4317
2023-11-28 14:24:24 +01:00
Norman Feske
c9938e424b menu_view: use modern list-model interface
Issue #4317
2023-11-28 14:24:24 +01:00
Norman Feske
3e24a86b87 depot_download: use modern list-model interface
Issue #4317
2023-11-28 14:24:24 +01:00
Norman Feske
b249d9f66d depot_deploy: use modern list-model interface
Issue #4317
2023-11-28 14:24:24 +01:00
Christian Prochaska
b41df1fb7a mk: create separate debug info files
Commit also adapts Qt5 libraries.

Issue #5015
2023-11-28 14:24:24 +01:00
Norman Feske
d8b87b2593 wireguard: simplify 'Config_model'
Issue #4317
2023-11-28 14:24:24 +01:00
Norman Feske
784d4e39d5 wireguard: use modern list-model interface
Issue #4317
2023-11-28 14:24:24 +01:00
Norman Feske
50d0a1b8f9 vmm: use modern list-model interface
Issue #4317
2023-11-28 14:24:24 +01:00
Norman Feske
672b03f553 pci_decode: use modern list-model interface
Issue #4317
2023-11-28 14:24:24 +01:00
Norman Feske
df71cecc66 drivers/platform: use modern list-model interface
Issue #4317
2023-11-28 14:24:24 +01:00
Stefan Thöni
1895931918 pci_decode: parsing TPM2 table
issue gapfruit#1938

Fixes genodelabs/genode#5042
2023-11-28 14:24:24 +01:00
Roman Iten
0d344de496 base: extend constness of Genode::Token
Fixes #5039
2023-11-28 14:24:24 +01:00
Pirmin Duss
b53a630592 Re-connect test for wireguard
Issue genodelabs/genode#4957
2023-11-28 14:24:23 +01:00
Pirmin Duss
37a7119eb3 wireguard: initialize timekeeping with RTC
This commit fixes the "Invalid handshake initiation" error when the
client restarts.

Fixes genodelabs/genode#4957
2023-11-28 14:24:23 +01:00
Pirmin Duss
f66a7db87f lx_emul: allow setup of the persistent clock
This commit adds support to initialize the timekeeping for
the Linux subsystem with the value from the RTC.

Only the seconds part of timespec64 is supported.

Issue genodelabs/genode#4957
2023-11-28 14:24:23 +01:00
Christian Prochaska
9aa0de24af libc: implement '_spinlock()' and '_spinunlock()'
FreeBSD libc code uses only a single spinlock instance and, thus there
is no obvious reason why it would need to be implemented as an actual
spinlock. _spinlock() and _spinunlock() functions are implemented with a
static pthread mutex.

Issue #725
2023-11-28 14:24:23 +01:00
Christian Prochaska
94bbdbb71d libc: add ___pthread_cleanup_push/pop_imp aliases
Issue #725
2023-11-28 14:24:23 +01:00
Christian Prochaska
ebea6fb23f libc: use threaded mode
Issue #725
2023-11-28 14:24:23 +01:00
Tomasz Gajewski
002eb6f649 lib/timout: fix interpolation optimization
Issue #4960
2023-11-28 14:24:23 +01:00
Alice Domage
6402182815 sntp_client: add DNS lookup option
This commit adds a new configuration option, `dst_addr` to the
'sntp_client' that accepts either an IP address or a DNS hostname. If a
DNS hostname is provided, the 'sntp_client' will resolve the IP address
before each SNTP request. The 'dst_ip' configuration option is
deprecated but kept for compatibility until 'dst_addr' is fully adopted.

xsd/net_types.xsd: add Net_address type
sntp_dummy_rtc: adjust configuration to use pool.ntp.org

Fixes genodelabs/genode#5003
2023-11-28 14:24:23 +01:00
Alice Domage
132e027c69 os/include/net: add support for the DNS protocol
Issue genodelabs/genode#5003
2023-11-28 14:24:23 +01:00
Alexander Boettcher
58a420511c nic_router: show offered IPs
If verbose_domain_state is enabled, the server logs detailed information
about the DHCP offer.
2023-11-28 14:24:23 +01:00
Johannes Schlatow
392ed76344 nvme_drv: arch-specific Dma_buffer allocation
Different cacheability properties should be applied dependent on the
target architecture.

genodelabs/genode#5000
2023-11-28 14:24:23 +01:00
Johannes Schlatow
25ad0ad530 nvme_drv: remove unused Dma_allocator
genodelabs/genode#5000
2023-11-28 14:24:23 +01:00
Johannes Schlatow
b7855cc517 base: remove overriden try_alloc default argument
`Expandind_pd_session_client::try_alloc` is an overriden virtual method
of `Ram_allocator::try_alloc`. The latter specifies the default Cache
argument as CACHED. The overriden method should either do the same or
not even specify a default argument at all.

genodelabs/genode#5000
2023-11-28 14:24:23 +01:00
Johannes Schlatow
c738f4b029 dde_linux: use CACHED dma buffers
On x86, DMA buffers are actually always mapped as cached. We should
therefore actually ask for a cached buffer in order to avoid confusion.

genodelabs/genode#5000
2023-11-28 14:24:23 +01:00
Johannes Schlatow
686b9d44f4 dde_bsd: use CACHED dma buffers
On x86, DMA buffers are actually always mapped as cached. We should
therefore actually ask for a cached buffer in order to avoid confusion.

genodelabs/genode#5000
2023-10-26 15:29:43 +02:00
Johannes Schlatow
0cf2b1be89 gpu/intel: use CACHED dma buffers
On x86, DMA buffers are actually always mapped as cached. We should
therefore actually ask for a cached buffer in order to avoid confusion.

genodelabs/genode#5000
2023-10-26 15:29:39 +02:00
Christian Helmuth
b634549722 depot: update recipe hashes 2023-10-25 14:01:40 +02:00
Norman Feske
49aecc20b7 sculpt: update README for version 23.10 2023-10-25 12:58:30 +02:00
Martin Stein
c188f792b2 gems/sculpt: update mstein pubkey 2023-10-25 08:59:15 +02:00
Alexander Boettcher
70737c034b core: hand out RAM region as IOMEM to ACIPCA
The special region seems not to be declared as reserved nor ACPI
related. However, ACPICA depends on this physical range.

Issue #4643
2023-10-25 08:59:15 +02:00
Norman Feske
b50a88a95d depot_download_manager: optimize report processing
Feed the high-frequent fetchurl reports into a list model to speed up
the subsequent evaluation of the data.

Also limit the rate of state reporting during updates to visible changes
in percent such that most fetchurl reports do not cause any UI activity
(status updating) any longer.

This patch noticeably speeds up the installation of complex packages
(i.e., the morph browser) on the PinePhone.

Issue #5038
2023-10-25 08:58:54 +02:00
Christian Helmuth
20239dc27f sculpt/pc: increase usb_hid_drv cap quota
This is required to support more than 3 USB input devices.
2023-10-25 08:58:54 +02:00
Norman Feske
ca85cb936b sculpt: debug-dialog tweaks
Shorten the visible text. Make "wait" option depend on "wx" option.
Indent checkboxes similar to the resource dialog.

Issue #5012
2023-10-25 08:58:54 +02:00
Stefan Kalkowski
5471ef7e1e hw: increase default page-table array
Fix #5035
2023-10-25 08:58:53 +02:00
Alexander Boettcher
26be862e08 acpica: suppress pci related output during startup
Issue #4643
2023-10-25 08:58:53 +02:00
Christian Helmuth
e88e3680aa genode_c_api: remove global-static constructors
The execution of global-static constructors in Genode is optional for
native components or determined in the libc for libc components. By
convention, we avoid static constructors wherever possible but in rare
cases the component can tweak the point when constructors are executed
and initialize an environment beforehand. The wifi_drv applies this
pattern for the uplink initialization, but is a libc component on the
other hand, and, thus, statics in the Genode C API for uplink are
constructed later by the libc. So, the prior initialization is reverted,
i.e. the signal-handler capability becomes invalid.

This addresses a regression exposed by the following commit.

  drivers/wifi: perform multi-staged construction

Related to #3509
Fixes #5024
2023-10-25 08:58:53 +02:00
Norman Feske
0a001443e9 sculpt: don't use component names as widget IDs
Component names can be larger than widget IDs, which are capped at 20
characters. To uniquely correlate the component depicted in the graph
with clicks, this patch uses a dedicated graph ID for each runtime
component instead.

Fixes #5034
2023-10-25 08:58:53 +02:00
Norman Feske
94d04b724a sculpt: add system-control in resource dialog
This patch allows for the interactive assignment of the system-control role
to a new component via the resource dialog. This is useful for integrating
low-level components like the Intel frequency/power monitoring tool.

Fixes #5033
2023-10-25 08:58:53 +02:00
Norman Feske
b3a9a2eb4e touch_keyboard: minor UI tweaks
Remove diagnostic message, remove vertical spacers between buttons.
2023-10-25 08:58:53 +02:00
Johannes Schlatow
7b15cce099 depot: add src/qt5_svg to pkg/goa
Fixes genodelabs/genode#5032
2023-10-25 08:58:53 +02:00
Johannes Schlatow
19ec0b2dd4 depot: add compat-libc to pkg/goa
Fixes genodelabs/genode#5030
2023-10-25 08:58:53 +02:00
Sebastian Sumpf
83d4fcdf27 vfs/lxip: support connect(...AF_UNSPEC..) on UDP sockets
Note, Linux supports connection reset via this mechanism for UDP as well
as TCP sockets and vfs_lxip retains this feature.

Issue #5031
2023-10-25 08:58:53 +02:00
Sebastian Sumpf
5261fe626d libc: support connect(..AF_UNSPEC..) on UDP sockets
A 'connect' with AF_UNSPEC dissolves address association in order to
re-connect to another address.

Issue #5031
2023-10-25 08:58:53 +02:00
Josef Söntgen
cf43e0c3da libdrm/lima: always map BO with ID 1 2023-10-25 08:58:53 +02:00
Sebastian Sumpf
d49700f562 stdcxx: add another 'std::basic_ios' flavor 2023-10-25 08:58:53 +02:00
Norman Feske
1224162072 menu_view: refine zero-size condition
Commit "menu_view: ignore zero-sized widgets in box layout" introduces
zero-sized child widgets as a special case but defined zero-sized as
zero covered pixels (w*h == 0). However, for layouting, a widget with a
non-zero height and zero width is not zero-sized.

This patch refines the zero-size condition such that only widgets with
both zero width and zero height are considered as zero-sized.

It thereby solves the missing display of empty lines in the text_area
component.
2023-10-25 08:58:53 +02:00
Norman Feske
87b7dfed5d xml_node: skip whitespace in differs_from
The 'Xml_node::differs_from' method takes the constructor arguments
(addr, size) for a byte-wise comparison whereas 'with_raw_node'
restricts the byte range to the actual XML tags. In cases where
the XML start tag is preceeded by whitespace, both ranges can differ.

Since the 'differs_from' method is meant for comparing actual XML
nodes - not any whitespace around them - whitespace should be ignored
on both operands.

Issue #5029
2023-10-25 08:58:53 +02:00
Norman Feske
1b23d3b8cb sculpt: reset popup menu on close
This avoids an unexpected geometry animation when opening the popup right
after closing it from a sub menu.
2023-10-25 08:58:53 +02:00
Christian Prochaska
82705cfc0f tool_chain_auto.run: remove posix.lib.so preload config
Fixes #5028
2023-10-25 08:58:53 +02:00
Christian Prochaska
c4677042e1 ldso: load posix.lib.so first
Fixes #5027
2023-10-25 08:58:53 +02:00
Norman Feske
d3e5e5c286 sculpt: fix interplay of popup with old dialogs
This is a follow-up fix for commit "sculpt: apply Dialog API to diag,
panel, and graph", which happened to render the legacy dialogs (network
and settings) inaccessible.

The patch avoids the use of clack seq numbers for the 'popup_opened'
condition (which happens on click, not clack). It also overrides old
click information on the arrival of a new click, avoiding the evaluation
of stale click sequence numbers in distant_runtime.cc. Furthermore, it
reduces the rate of 'Distant_runtime::_try_handle_click_and_clack'.

Issue #5008
2023-10-25 08:58:53 +02:00
Christian Helmuth
eb2843de33 pc_nic_drv: implement pcie utility dummies 2023-10-25 08:58:52 +02:00
Benjamin Lamowski
3f80249204 sculpt: offer passphrase dialog for WPA3 networks
On WPA3 encrypted networks the AP picker does not indicate encryption
and does not prompt for a passphrase.

Also indicate an encrypted network when "protection=WPA3", remedying
both issues.

Fixes #5022
2023-10-25 08:58:52 +02:00
Alexander Boettcher
9b312054f5 intel/display: support force_* and configured mode
Up to now, when using force_*, all other configured modes of a connector
got overwritten and the force_* got enforced. With the commit,
the connector mode is considered (if below max_*) and the resulting
framebuffer may be larger then the dimension of force_*.
2023-10-25 08:58:52 +02:00
Alexander Boettcher
ab91750869 acpica: add option to select GPE usage
Mitigates the ACPI IRQ storm of T490s.

Issue #4643
2023-10-25 08:58:52 +02:00
Christian Prochaska
64b3ab59b0 gdb_interactive.run: pass Ctrl-C to GDB on hardware
Issue #5019
2023-10-25 08:58:52 +02:00
Christian Prochaska
794b178032 sculpt: update falkon preset
Fixes #5018
2023-10-25 08:58:52 +02:00
Christian Helmuth
0db4116ba6 sculpt: version 23.10 2023-10-25 08:58:52 +02:00
Christian Helmuth
accfc4145a Stable TAR archive metadata content in recipes
Differences in TAR archive member metadata results in unstable depot
hashes. The following properties have to be fixed: modification time
(incl. time zone), numeric owner and group, permission modes.

Releated to #2842
2023-10-25 08:58:52 +02:00
Alexander Boettcher
e36170c997 nova: add guarded access to MSRs
via Genode Pd::system_control interface

Issue #5009
2023-10-25 08:58:52 +02:00
Christian Prochaska
fe3a958dbf os: add a terminal_crosslink pkg recipe
Fixes #5017
2023-10-04 14:00:46 +02:00
Christian Prochaska
16ba978025 ports: add a gdb_x86 pkg recipe
Fixes #5016
2023-10-04 14:00:42 +02:00
Christian Helmuth
07c4b92335 depot: update recipe hashes 2023-10-04 13:22:08 +02:00
Christian Prochaska
aea90dc7da hw: fix vmm_arm test on arm_v8a
Fixes #4975 regression
2023-10-04 13:22:08 +02:00
Christian Prochaska
ae899b9bc7 ports: add a test for GDB
Fixes #5014
2023-10-04 13:22:08 +02:00
Christian Prochaska
471e61f0e4 monitor: move monitor_gdb test commands to separate file
Fixes #5013
2023-10-04 13:22:08 +02:00
Christian Prochaska
51875b89fd ports: add socat_tcp pkg
Issue #5007
2023-10-04 13:22:08 +02:00
Christian Prochaska
1bb1ebe2ae sculpt: use debug monitor as runtime init
Fixes #5012
2023-10-04 13:22:08 +02:00
Christian Prochaska
7731e02a20 monitor: remove terminal write busy loop
Fixes #5011
2023-10-04 13:22:07 +02:00
Norman Feske
aff17cb177 sculpt: propagate managing_system role
This change allows for the hosting of system-management components
in Sculpt's runtime. The special role must be declared either as
<launcher managing_system="yes"> attribute or in the deploy
configuration's <start managing_system="yes"> attribute.

Issue #5009
2023-10-04 13:22:07 +02:00
Benjamin Lamowski
558a00138c vmm: rename State to Vcpu_state for clarity
Rename locally extended VCPU state from State to Vcpu_state for clarity.
The local namespace only adds two accessor methods, which does not
justify a local generic name.

Ref #4968
2023-10-04 13:22:07 +02:00
Benjamin Lamowski
0e49149a46 base-hw: rename Vm_state to Vcpu_state
Make naming across architectures coherent by renaming Vm_state to
Vcpu_state, to reflect that it contains the state of a Vcpu and not that
of an entire VM.

Ref #4968
2023-10-04 13:22:07 +02:00
Christian Prochaska
149a0183ec monitor: fix 'vCont?' command response
Fixes #5010
2023-10-04 13:22:07 +02:00
Alexander Boettcher
72a3c2fe97 vbox6: disable RDTSC exit (SVM)
Issue #4726
2023-10-04 13:22:07 +02:00
Alexander Boettcher
9ab593e1b5 nova: provide system_control cap per cpu
Issue #5009
2023-10-04 13:22:07 +02:00
Alexander Boettcher
916bd88e5e base: extend PD session by system_control_cap
Per Affinity::Location a system control cap can be requested. The capability
provides an RPC interface to request and set Cpu_state, as provided by the
former Pd::managing_system(Cpu_state) method. Invocation of those system
control capabilities then *can* (see below) be executed on the desired CPU
as described by Affinity::Location.

The system control cap will be invalid for kernels that don't support
system_control/managing_system functionality at all.

The system control cap will be ever by the same, e.g. ignoring the
Affinity::Location parameter, if the used kernel doesn't support or doesn't
require the feature to execute the system control per CPU.

The commit is a preparation step to add guarded and selective x86 MSR
access per CPU.

Fixes #5009
2023-10-04 13:22:07 +02:00
Norman Feske
ffc25fde53 sculpt: apply Dialog API to diag, panel, and graph
This patch partially converts the Sculpt manager to the dialog API.
At this stage, both the old utilities and the new dialog API are still
used simultaneously.

Issue #5008
2023-10-04 13:22:07 +02:00
Norman Feske
0c40d52010 sculpt: add Dialog::Distant_runtime
The so-called 'Distant_runtime' implements GUI dialogs via menu_view
components hosted at a distant init instance as opposed to child
components (as implemented by the 'Sandboxed_runtime'). This is
particular the case in Sculpt OS where the sculpt manager is not the
parent of the menu_view instances.

Issue #5008
2023-10-04 13:22:07 +02:00
Norman Feske
9d5af71c3d sculpt: seq events for touch_release 2023-10-04 13:22:07 +02:00
Norman Feske
37d5bdbae5 sculpt: deprecate original 'Dialog' interface
By renaming 'Dialog' to 'Deprecated_dialog', we become able to use the
name 'Dialog' for the new API while temporarily keeping the original
interface in tact.

Issue #5008
2023-10-04 13:22:07 +02:00
Norman Feske
f90058488f sculpt: screensaver refinements
- Increase default timeout to one minute
- Ignore power-button events during display-driver startup to avoid
  entering another forced blank when pressing the power button twice.
- Prevent wakeup from user activity except for the power button.
  So the volume can be adjusted without leaving the screensaver.

Issue #4950
2023-10-04 13:22:07 +02:00
Norman Feske
4fdc999087 Dialog API
The new API at gems/include/dialog/ aids the creation of simple GUI
applications based on the menu-view widget renderer. Its use is
illustrated by the simple test application at src/test/dialog/
that is accompanied with the dialog.run script.

Issue #5008
2023-10-04 13:22:06 +02:00
Norman Feske
6895175764 menu_view: omit label hover details by default
Each hover change of the character position within a label results in a
new hover report, which needs to be evaluated by the application. For
the common cases where labels are used as button texts or for presenting
passive information, the level of detail is not needed while the
recurring hover reports induce overhead at the application side.
This patch mitigates this overhead by excluding labels from the hover
reporting by default.

For use cases that actually depend of precise hover reporting of labels,
for example an editable text area, the hover reporting can be enabled by
setting the 'hover="yes"' attribute of the label.
2023-10-04 13:22:06 +02:00
Norman Feske
391c261199 menu_view: propagate widget version attr
The 'Widget::_version' attribute was meant to allow the deliberate
replacement of a widget by a same-named widget by changing the version
while keeping the name, thereby suppressing any geomety animation.

However, the implementation missed to populate the attribute with the
value provided by the dialog ROM, prompting the unconditional
re-creation of the widget whenever a 'version' attribute was specified.
Even though this had the (desired) effect of preventing geometry
animations, it could cause feedback loops between hover reports and
dialog ROMs because the 'hover_changed' condition in 'Menu_view::Main'
would always stay true while a versioned widget is hovered.
2023-10-04 13:22:06 +02:00
Norman Feske
76adfff091 menu_view: add styles/button/invisible/hovered.png
This avoids the need to handle a special case at the menu_view user side.
2023-10-04 13:22:06 +02:00
Christian Prochaska
4bef85d7bc ports: add socat
Fixes #5007
2023-10-04 13:22:06 +02:00
Christian Prochaska
abc3c5f0df libc: stat: classify transactional files as character devices
Fixes #4981
2023-10-04 13:22:06 +02:00
Josef Söntgen
ef0c859b7a virtualbox6: cache USB DMA bounce buffers
To prevent exessive allocations the bounce buffers are allocated
once and afterwards re-used. The DMA buffers are provided by an
range allocator whose backing store increases in 4 MiB chunks.

The range allocator might not merge the ranges as those chunks
are not necessarily allocated continously. Allocations larger
than the static chunk size are therefor treated as error.
2023-10-04 13:22:06 +02:00
Alexander Boettcher
264160797d qemu-usb/webcam: cache large allocation of libyuv 2023-10-04 13:22:06 +02:00
Alexander Boettcher
0d868515a5 libyuv: add support to overwrite default allocator
Internally libyuv uses malloc & free for short time dynamic memory
allocation during image transformation. The converted images are
such large, that the Libc allocator will create and destroy new Genode
dataspace per image.  In time sensitive code paths, the overhead can be
noticeable by the caller of the image transformation.
The patch adds the option to register callbacks in the libyuv library to
implement the image allocation by users of the library. They may implement
caching strategies to avoid the overhead, e.g. as seen with qemu-usb and
the webcam model.
2023-10-04 13:22:06 +02:00
Alexander Boettcher
63c5ec7390 qemu-usb: reduce overhead of capturing one picture
from 3 USB packet to 1 packet per picture. Set the maximal supported
payload to the size of one picture + the size of the required protocol
header.
2023-10-04 13:22:06 +02:00
Alexander Boettcher
385b37dca7 qemu-usb/webcam: close session after timeout
and not before. On Windows guest with more than 1 vCPU, the packets
seem to arrive and/or seem to be handled too late in the Webcam model.
An intermediate state, to due the late packet, has been used to decide to
close the Capture session too early.
2023-10-04 13:22:06 +02:00
Christian Prochaska
9c32d53914 os: add a src recipe for test-terminal_echo
Fixes #5006
2023-10-04 13:22:06 +02:00
Christian Prochaska
3cb567d0b1 GDB: support an empty initial thread list on Genode
Fixes #5005
2023-10-04 13:22:06 +02:00
Christian Prochaska
f0b734886e GDB: don't cache the memory map
Issue #5004
2023-10-04 13:22:06 +02:00
Christian Prochaska
d77cb2b1fc monitor: add 'qXfer:memory-map:read' command`
Fixes #5004
2023-10-04 13:22:06 +02:00
Christian Helmuth
c6881a8126 vbox6: silence stack-size limit warning
Our stack slots are 1M per thread including room for metadata.
Therefore, this patch reduces the stack demand of EMT threads to
1M - 16K.
2023-10-04 13:22:06 +02:00
Christian Helmuth
a7a7c56ad6 libc: silence "Warning: missing sysctl for [0][3]
The warning results from sysctlnametomib() that uses an undocumented
FreeBSD kernel interface we do not support.

Fixes #4673
2023-10-04 13:22:05 +02:00
Christian Helmuth
9db4293d7a vbox6: implement ioctl(SUPPAGEFREE &request)
Fixes #4674
2023-10-04 13:22:05 +02:00
Christian Helmuth
15d1beca1b Fix use-after-free warnings in test-libc 2023-10-04 13:22:05 +02:00
Christian Helmuth
cc1a6041a7 fb_sdl: adapt RAM quota for large screen sizes
Issue #4993
2023-10-04 13:22:05 +02:00
Robin Eklind
d3d822cd9d fb_sdl: refactor to only construct window once
In SDL2, support has been added for multiple windows.

As such, prior to this commit, invoking _sdl_screen.construct
would create a new window each time the original window was
resized.

To avoid this, refactor to only construct the window once, and
upon resize events, reconstruct the SDL_Surface and SDL_Texture
of Sdl_screen to the new window dimensions.

Issue identified by @chelmuth in https://github.com/genodelabs/genode/pull/4993#issuecomment-1729530634

Fixes #4993
2023-10-04 13:22:05 +02:00
Robin Eklind
3e68b07db0 fb_sdl: fix handling SDL_WINDOWEVENT_RESIZED
Issue #4993
2023-10-04 13:22:05 +02:00
Robin Eklind
9799adda79 fb_sdl: update to use sdl2
Following the official migration guide of SDL [1], the
fb_sdl framebuffer driver was update from SDL1 to SDL2.

The sdl2 port in world/src/lib/sdl2 is used.

Since SDL1 is in maintenance mode [2], support for other
display servers than X11 will never be implemented. In
particular, support for Wayland is missing from SDL1.

Fortunately, a port of sdl2 is maintained in genode-world.

As SDL2 is actively developed, it will provide support for
modern hardware architectures, and has mature support for
Wayland [3].

[1]: https://wiki.libsdl.org/SDL2/MigrationGuide
[2]: https://wiki.debian.org/Wayland#SDL1_.28unsupported.29
[3]: https://wiki.debian.org/Wayland#SDL2_.28supported_since_2.0.2.2B-.29

Issue #4993
2023-10-04 13:22:05 +02:00
Benjamin Lamowski
5abd2dddb8 tz_vmm: port to new VMM library API
Ref #4968
2023-10-04 13:22:05 +02:00
Christian Helmuth
3a566262fe lx_emul: multi-touch trackpad support in evdev.c
Also addresses remarks in issue #3019.
2023-10-04 13:22:05 +02:00
Christian Helmuth
12fc9a0fbb trace_logger: log priority of trace subject
Optionally log thread priority with

  <config priority="yes" ...> ... </config>

The commit also applies a cleanup of format calculations.
2023-10-04 13:22:04 +02:00
Alexander Boettcher
484bde4b4b vbox5: remove VM generic version
Issue #4968
2023-10-04 13:22:04 +02:00
Stefan Kalkowski
17a140db3d dde_linux: delete orphaned files
Fix genodelabs/genode#4998
2023-10-04 13:22:04 +02:00
Benjamin Lamowski
cfab4e74a9 vmm: port to new VMM library API
Ref #4968
2023-10-04 13:22:04 +02:00
Benjamin Lamowski
7e79128c03 vmm_x86: port to new VMM library API
Ref #4968
2023-10-04 13:22:04 +02:00
Benjamin Lamowski
9f054635bd virtualbox6: port to new VMM library API
Ref #4968
2023-10-04 13:22:04 +02:00
Benjamin Lamowski
1515a0a51e base-sel4: port to new VMM library API
Ref #4968
2023-10-04 13:22:04 +02:00
Benjamin Lamowski
5136883ded base-foc: port to new VMM library API
Ref #4968
2023-10-04 13:22:04 +02:00
Benjamin Lamowski
85012d5edd base-nova: port to new VMM library API
Ref #4968
2023-10-04 13:22:04 +02:00
Benjamin Lamowski
9489bf41a5 base-hw: port to new VMM library API
Ref #4968
2023-10-04 13:22:03 +02:00
Benjamin Lamowski
daafe3f4e2 base: rework vmm library API
The new API emphasizes control over the vCPU data by granting access
through the Vcpu::with_state() method, which makes sure that the vCPU is
stopped, invokes the supplied function with a reference to the VM state
and resumes the vCPU if the function returns true.

The old Vcpu::run(), Vcpu::pause() and Vcpu::state() methods are removed
in favor of the new API. Execution of the vCPU is now interrupted by
sending a native Genode Signal to its Vcpu_handler, which will run the
VMM's exit handling method. When this method retrieves the vCPU state by
calling Vcpu::with_state(), the outside interruption is detected and on
x86 a recall exit is injected into the state to signal the vCPU
interruption / pause request to the VMM's vCPU handler.

Ref #4968
2023-10-04 13:22:03 +02:00
Alexander Boettcher
5c27993884 nova: transfer guest fpu state via utcb
instead via the hardware registers of the FPU. On Genode all components and
so VMMs are built such, that the compiler may generate optimized code by
using the FPU at any time. We had to make sure to save the
FPU state as early as possible before the VMM component touches the FPU,
to avoid corrupting & losing guest FPU state. This caused headache again
and again. To avoid the uncertainty, we remove this feature and explicitly
transfer the FPU state via the UTCB.
2023-09-29 12:21:04 +02:00
Benjamin Lamowski
37a6669e71 libc: add support for FreeBSDs KERN_ARND sysctl
Provide FreeBSDs KERN_ARND systemctl by calling getentropy().

To use it, configure an RNG via the `rng` libc runtime parameter.

Ref #4997
2023-09-29 12:21:04 +02:00
Benjamin Lamowski
aa5751b7fc libc: add more dummies for the Rust libc crate
Add dummies for pthread_set_name_np(),
posix_spawn_file_actions_addchdir_np() and
cpuset_getaffinity().

Ref #4997
2023-09-29 12:21:04 +02:00
Benjamin Lamowski
159c3d0606 compat_libc: add versioned symbols for lstat and readdir_r
Ref #4997
2023-09-29 12:21:04 +02:00
Josef Söntgen
02c8d73426 timer-session: decrease min timeout to 1 ms
Depending on the client and use-case the current minimal timeout
value of 5 ms could be too high, lowering it to 1 ms stays within
the limit imposed by most timer drivers.

Issue #4990.
2023-09-29 12:17:45 +02:00
Josef Söntgen
ab4c36c834 virtualbox6: wait at least 1 ms during halt
When the wait value is too small the HALT attempt turnes into
busy-polling in the VMM. To prevent that always wait a minimal
amount of time.

Issue #4990.
2023-09-29 12:17:45 +02:00
Sebastian Sumpf
2bb901e1e3 rpi: disable run scripts that use 'drivers_nic_rpi'
The 'drivers_nic_rpi' packet uses the 'usb_net_drv' which is currently not
supported by the virt_linux version.
2023-09-29 12:17:45 +02:00
Norman Feske
3ebb715c5c libports: use [build_artifacts] in run scripts
...except for the run scripts related to Qt and the NIC router.

Issue #4860
2023-09-29 12:17:45 +02:00
Norman Feske
e8059ccba5 vfs/pipe: fix dangling read_ready_waiters element
This patch removes the obsolete 'io_progress_elem', which was wrongly
enqueued to the 'read_ready_waiters' fifo and not dequeued at
destruction time.

Fixes #4987
2023-09-29 12:17:45 +02:00
Norman Feske
458206b11a monitor: apply affinity to monitored children
Fixes #4996
2023-09-29 12:17:45 +02:00
Robin Eklind
d7bbb27671 doc/gdb: fix phrase "to a certain extent" 2023-09-29 12:17:45 +02:00
Christian Helmuth
b15fb2bbaf Adapt autopilot output checks in usb_hid_raw test
Issue #4958
2023-09-29 12:17:45 +02:00
Sebastian Sumpf
bb51c113ca dde_linux.port remove USB client driver sources
Remove 'usb_hid', 'usb_net', 'usb_modem' from dde_linux port. These
versions have been updated to Linux 6.1.20 which uses the 'linux.port'
file.

issue #4958
2023-09-29 12:17:45 +02:00
Sebastian Sumpf
798fb709a2 dde_linux: remove usb_modem driver
The driver is superseded by the USB network driver (usb_net) which also
contains MBIM support for LTE modems previously provided by this
driver.

issue #4958
2023-09-29 12:17:45 +02:00
Sebastian Sumpf
7e823f7c19 dde_linux: remove legacy_usb_net
issue #4958
2023-09-29 12:17:45 +02:00
Sebastian Sumpf
cd2910eb2c dde_linux: remove usb_hid_legacy
issue #4958
2023-09-29 12:17:45 +02:00
Sebastian Sumpf
d5cf77539a dde_linux: update usb_net driver to Linux 6.1.20
Driver for network-interface cards and LTE modems with MBIM support
connected via USB.

issue #4958
2023-09-29 12:17:45 +02:00
Sebastian Sumpf
f668aea42a dde_linux: update usb_hid driver to Linux 6.1.20
The drivers uses the 'virt_linux' api and the current lx_kit
implementation. It is a drop-in replacement for the Linux 4.16.3 based
version.

issue #4958
2023-09-29 12:17:45 +02:00
Sebastian Sumpf
e1b463082a usb_net.run: enable Qemu device pass-through
issue #4958
2023-09-29 12:15:07 +02:00
Sebastian Sumpf
f4d7455a9f recipe: wireguard use virt_linux api
issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
5bce4dac81 recipe: virt_linux api
for x86_32, x86_64, arm, arm_64

issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
c835993ac3 lx_emul: add wheel events to shadow evdev.c
issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
6ac68494db lx_emul/arm: add 'pteval_t'
issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
c4ec847680 lx_emul/shadow/uaccess_64: add 'clear_user'
issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
3925c7ec60 virt/lx_emul: add usb_client.c
This registers C-API USB-client device handle (i.e., USB::Connection) as
Linux 'usb_device' and probes all the initialized drivers.

issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
5eff895f9d virt/lx_emul: shadow urb handling for USB clients
allocate, free, and submit urbs to an USB service using Genode's USB
client C-API.

issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
d27e0a8fe6 virt_lx_emul: add shadow 'vmalloc.c'
issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
22231c0604 virt_lx_emul: adjust dummies for usb_hid/net
issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
71c32f2923 virt_linux: add init calls for USB HID/NET
issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
57d2b7235d virt_linux: add USB HID/NET/MBIM to kernel configuration
issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
f9e70b0300 genode_c_api/event: add wheel events
issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
c5a55e5af4 genode_c_api/usb_client: API USB clients
Through this API C-code can connect to an USB service.

issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
f896fcfadb genode_c_api/usb: add ALT_SETTING and CONFIG
issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
9f8ccc030b linux.port: add usb_net_cdc_ncm.patch
NCM tries to batch TX packets using timeouts (500us) and does not send packets
before 3 packets are in the submit queue. Timeouts take milliseconds on
dde_linux which leads to delayed ACKs and poor performance for the RX case.
Therefore, we send small packets (<100 Bytes) immediately without batching (it
might be an ACK or last packet of a larger transfer).

issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
5c1b9399b0 linux.port: add usb_net_pinephone.patch
The PinePhone Modems' CDC Ethernet Interface does not respond if RX/TX queue size
is greater 12 (experimentally determined), the default would be 60, meaning 60
RX Bulk URBs are sent at once to the device.

issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
9a6423b4ef dde_linux: move usb_net -> legacy_usb_net
issue #4958
2023-09-29 12:15:06 +02:00
Sebastian Sumpf
8f34c27ca5 dde_linux: move usb_hid -> usb_hid_legacy
issue #4958
2023-09-29 12:15:05 +02:00
Christian Helmuth
41adf8d196 jitterentropy: clear memory in jent_zalloc() 2023-09-29 12:15:05 +02:00
Johannes Schlatow
119f679278 fs_report: handle WRITE_ERR_WOULD_BLOCK
A WRITE_ERR_WOULD_BLOCK may occur when large reports are written to a file
system because this fills up the submit queue of the packet-stream interface.

Fixes genodelabs/genode#4988
2023-09-29 12:15:05 +02:00
Alice Domage
6881a71a87 depot_remove.run: improve <remove_all/> tests
This commits introduces changes to test number 4, so it must keep
more than one PKG. Also, it introduces a 5th test to verify that the
<remove_all/> functionality does delete everything in the depot.

Issue genodelabs#4866
2023-09-29 12:15:05 +02:00
Alice Domage
3f661a75e4 depot_remove.run: make test functions more intuitive
This commits introduces improvements to the test functions to avoid
code duplication, and renames these functions to reflect better what they
are used for.

Issue genodelabs#4866
2023-09-29 12:15:05 +02:00
Johannes Schlatow
0622446f09 base: print last character of unterminated strings
The last character should only be skipped if a `\0` or `\n` is found. If
the string ends without such a character or the maximum line length is
hit, we do not skip the last character.

Fixes genodelabs/genode#4985
2023-08-24 14:12:21 +02:00
Christian Helmuth
134a785fe0 depot: update recipe hashes 2023-08-24 11:01:40 +02:00
Benjamin Lamowski
9f7e47368f libports: transform compat-libc into a static library
Dynamically loading the `compat-libc` breaks `fork(2)` on Genode.

Switch `compat-libc` to a special api package that provides a source
file for statically linking the library, analogous to the `blit`
package. This also requires a quirk in Goa but should prevent breaking
`fork()` and removes the runtime and archive dependencies for Rust
packages using `compat-libc`.

Ref genodelabs/goa#61
2023-08-23 13:46:37 +02:00
Sebastian Sumpf
0a85964f91 libports: add 'compat-libc'
Implement FBSD_1.0 versions of libc functions ('stat', 'fstat'). The
functions are versioned with @FBSD_1.0, and therefore, will not clash
with libc during linking. However, to be called by our dynamic linker,
the library must be before libc in the NEEDED section of the binary
using it. This requires the lib to be in front of libc in the LIBS
variable. The library currently will call libc 'stat' and 'fstat' by
looking up the symbols via 'dlsym'.

Ref genodelabs/goa#61
2023-08-23 13:46:37 +02:00
Christian Helmuth
da53a11508 pc_nic_drv: drop incoming packets on missing uplink
Fixes sporadic null-pointer dereferences like

  [init -> nic_drv] Error: illegal READ at address 0x204 by pager_object: pd='init -> nic_drv' thread='ep' ip=0x86467
2023-08-23 13:46:37 +02:00
Christian Helmuth
bd0c680ec8 pc_nic_drv: implement dst_release 2023-08-23 13:46:37 +02:00
Christian Prochaska
8a279855ff cleanup file permissions
Fixes #4983
2023-08-23 13:46:37 +02:00
Christian Prochaska
efae71dac7 acpica: fix download link
Fixes #4982
2023-08-23 13:46:37 +02:00
Christian Prochaska
7000fb8642 monitor: add more debugging features
Fixes #4977
2023-08-23 13:46:37 +02:00
Christian Prochaska
8b7f959451 hw: send exception signals and support single-stepping
Fixes #4975
2023-08-23 13:46:37 +02:00
Christian Prochaska
f3b03fa01b ports: add gdb_arm_64 variant
Fixes #4980
2023-08-21 08:12:02 +02:00
Christian Prochaska
7a6d9f8530 ports: install GDB with install-strip
Fixes #4979
2023-08-21 08:12:02 +02:00
Christian Helmuth
65d9607ece vbox6: force C/H/S disk geometry from calculation
Some Ubuntu installations (e.g., 20.04) create installation disks with
strange C/H/S MBR partitions like 3988/255/2. Normally, VirtualBox reads
the MBR to guess disk geometry information for the virtual BIOS.
Unfortuantely, the strange values from Ubuntu lead to a heavy
virtual-disk activity on boot. Therefore, this commit forces the use of
calculated values based on the assumption that large disks use LBA
addressing anyway.

Fixes #4978
2023-08-21 08:12:02 +02:00
Christian Prochaska
9e41848927 ports: GDB fixes
Fixes #4976
2023-08-21 08:12:02 +02:00
Christian Prochaska
48e6468df1 os: support UART drivers in board-specific repositories
Fixes #4973
2023-08-21 08:12:01 +02:00
Christian Prochaska
419e5e46f6 base: add more x86_64 exception type enums
Fixes #4972
2023-08-21 08:12:01 +02:00
Alexander Boettcher
c88e6bb81d gpu/intel: fix disable invocation in fw_disable
Erroneous enable was used
2023-08-21 08:12:01 +02:00
Martin Stein
c3c7a01df5 nic_router_uplinks.run: raise report-rom caps
Caused the test to fail on x86_64+pc+sel4.

Ref #4923
2023-08-21 08:12:01 +02:00
Martin Stein
280ca8982b os net tests: unify & document target restrictions
Ref #4966
2023-08-21 08:12:01 +02:00
Martin Stein
53018515a9 net_test-pc.sculpt: minimal setup for net tests
A small sculpt setup with routed and raw access to the PC NIC-driver as well
as a launcher for the ping app.

Ref #4966
2023-08-21 08:12:01 +02:00
Martin Stein
8bad3d08d7 util/formatted_output.h: hex-dump utility
Adds Genode::Hex_dump class to the formatted_output.h header. This class can be
used to print a hexadecimal dump of a byte range. The data is printed in a
format similar to that used by Linux's 'xxd'. In addition to the 'xxd' format,
consecutive duplicate lines are replaced with a single "*\n" as done also by
Linux's 'hexdump'.

Ref #4966
2023-08-21 08:12:01 +02:00
Martin Stein
9a94fbb1ec ping: align dhcp client more with nic_router again
The DHCP client implementations of Ping originally is a copy of the NIC router
implementation adapted for Ping. The two versions diverged further over the
years. This issue should be solved by should merging them into a centralized
implementation. However, this commit treats only a recent issue with the
nic_uplink.run test on pbxa9 qemu but does this by re-aligning the two
implementations partially. The final merge should be done in a separate commit.

Ref #4966
2023-08-21 08:12:01 +02:00
Martin Stein
d8c51656d7 depot_autopilot: forward tabs and color sequences
The Depot Autopilot used to filter out tabs and color sequences before
forwarding the test log to the own log. This commit prevents this and further
cleans up the string-filters code.

Ref #4922
2023-08-21 08:12:01 +02:00
Martin Stein
987dea5f7f depot_autiopilot: consider log_prefix attribute
The new 'log_prefix' attribute is effective when used in a tests runtime in
<succeed> or <fail> tags that have a non-empty content string. When matching
the log against the pattern given in the affected <succeed> or <fail> tag, the
Depot Autopilot will consider only those test-log lines that start with the
given prefix.

Ref #4922
2023-08-21 08:12:01 +02:00
Martin Stein
c47a6b0830 depot_autopilot: simplify success-criterion syntax
* Removes the <event> tag from all test package runtime files and replaces the
  contained <timeout> and <log> sub-tags with the new tags <succeed> and
  <fail>. If a <succeed> or <fail> tag has a content, it defines a log pattern
  that should be recognized and render the test failed or successful. If a
  <succeed> or <fail> tag has an attribute after_seconds that is not set to 0,
  it defines a timeout after which the test should be rendered failed or
  successful.

* Adapts the Depot Autopilot to support the new syntax in the test-package
  runtime files. However, for now, the Depot Autopilot is kept compatible to
  the old syntax as well. If the <events> tag is present, it is prioritized
  over the new syntax.

Fixes #4922
2023-08-21 08:12:01 +02:00
Martin Stein
b587134a8d net tests: raise nic_drv/drivers cap quota
Several nightly network-related tests fail currently on sel4/pc because the
new e1000 NIC driver requires more capabilities. The "drivers nic" package
was already adapted to the new requirement but some tests fail to provide
enough caps to the corresponding sub system. This commit tries to fix all
remaining tests.

Ref #4923
2023-08-21 08:12:01 +02:00
Stefan Kalkowski
4277bdd3cd lx_emul usb: solve session close races
* During a session-close, the device-specific usb task and driver data
  gets freed. Part of it was the RPC data. To prevent use-after-free
  turn it into a pointer and leave it on the stack of the caller thread
* During a device release, URBs discards, and reset operation the Linux task
  might get blocked, and then a RPC caller task might return if the RPC
  operation was marked as finished already, although it hasn't succeeded yet
* USB devio RESET has to be done before a device release to be effective

Fix genodelabs/genode#4969
2023-08-21 08:12:01 +02:00
Stefan Kalkowski
8f4903ca86 lx_emul usb: make reset ep effective
* Within flush_transfer of the USB session a given entrypoint gets
  resetted, to be effective al related URBs need to be discarded first
* Discarding URBs shall be done in reverse order, like libusb is doing it,
  where it warns about potential races otherwise

Ref genodelabs/genode#4969
2023-08-21 08:12:00 +02:00
Martin Stein
68fd016746 ping: src and pkg recipes
Ref #4966
2023-08-21 08:12:00 +02:00
Martin Stein
c23491ef3c nic_uplink: connect a Nic to an Uplink session
* Adds a new component server/nic_uplink that forwards packets unmodified
  between one Uplink session at one side and potentially multiple Nic sessions
  at the other side.
* Adds a new run script nic_uplink.run that does a basic test with multiple
  Nic clients on this component and adds it to the autopilot list.
* Adds a new depot recipe src/nic_uplink for this component.
* Adds a new depot recipe pkg/pc_nic for deploying the pc_nic_driver together
  with a nic_uplink server. This allows for raw access to the network connected
  to the Nic of the system in contrast to the commonly used routed and NAT'd
  access via NIC router. That said, it enables the use of network protocols
  not yet supported by the NIC router at the cost of less protection.

Ref #4966
2023-08-21 08:12:00 +02:00
Martin Stein
4c4962b306 nic_router: clean-up session creation with class
Introduces a new class that does the clean-up if some exception is
thrown while creating the session. This reduces redundancy and overall
lines of code.

Ref #4966
2023-08-21 08:11:37 +02:00
Norman Feske
7aa301361d depot: update recipe hashes 2023-07-14 12:06:32 +02:00
Alexander Boettcher
7c77a98118 cpu_balancer: make test reliable
by just test the migration feature, without relying on load measured on the
CPUs. On Qemu (and depending on other load in the Linux system), the migration
feature gets not triggered in time reliable.
2023-07-14 12:06:32 +02:00
Stefan Kalkowski
ec60ad3a80 dde_linux: remove legacy_rpi_usb_host_drv
* Cleanup the dde_linux port

Fix genodelabs/genode#4965
2023-07-14 12:06:32 +02:00
Stefan Kalkowski
175ec07c06 lx_emul: allow non-SMP kernel configurations
Fix genodelabs/genode#4963
2023-07-14 12:06:32 +02:00
Stefan Kalkowski
2f6864a487 lx_emul: make ARM irqchip handler extendable
* Allow support for kernel configurations without CONFIG_IRQ_DOMAIN_HIERARCHY
* Export `irq_domain` instantiated for driver-specific extensions of the irqchip

Fix genodelabs/genode#4964
2023-07-14 12:06:32 +02:00
Martin Stein
f30c49c0c3 ping.run: raise drivers cap quota
Otherwise, at least on sel4+x86_64+qemu, the nic driver ends up in a resource
request.

Ref #4931
2023-07-14 12:06:32 +02:00
Martin Stein
ca1a94d74c base-hw imx epit-timer: improve code readability
Improves the readability of the implementation of the Timer::_duration method.

Ref #4959
2023-07-14 12:06:32 +02:00
Norman Feske
5ca6dd10f8 monitor: forward priority session argument
This change allows a monitored VBox instance to specify a distinct
(lower) priority to the VM session to ensure that the VMM is always
prioritized higher than the VCPUs. This is important because host
I/O at the VMM should always be able to preempt a busy guest.

Issue #4917
2023-07-14 12:06:32 +02:00
Norman Feske
4918035258 sandbox.h: supply Request::args to Local_service
This change allows a local service to interpret session arguments other
than the label.
2023-07-14 12:06:32 +02:00
Josef Söntgen
93d6d71a1d dde_bsd: add patch to limit internal buffer size
Decreasing the internal buffer size will implicitly limit the number
of blocks provisioned for recording and brings them in line with
the number of blocks used for playback (2).

Note that this patch also sets an upper-bound on the number of
samples in 'Audio_*::PERIOD'.
2023-07-14 12:06:32 +02:00
Alexander Boettcher
0f70cafb91 intel/display: handle all connectors disabled case
If all connectors are set to disabled by configuration, the connectors
stayed enabled since the new configuration reveals no preferred or minimal
resolution/mode. Instead, use the last set resolution in order to get to the
disabling code.
2023-07-14 12:06:32 +02:00
Martin Stein
647631af09 test/timeout: revert use of memory barriers
The memory barriers where introduced with commit "test-timeout: fix build
errors with -std=gnu++20" presumably in order to prevent GCC optimization from
removing the empty for loops the test is using because using a volatile index
variable was no longer an option.

However, the memory barriers seem to have a negative effect on the measurements
performed with the affected loops. The commit caused the timeout test to fail
at least on imx53_qsb.

This commit fixes the issue by using a simple empty for loop without volatiles
or memory barriers but protected inside a function that is compiled with
optimization disabled.

Ref #4959
2023-07-14 12:06:32 +02:00
Josef Söntgen
e18c02991e lx_kit: use central signal handler for scheduling
This commit extends the Lx_kit initialization function by passing in
a signal handler that is used to perform the normally occurring
scheduler execution and is a follow-up change for the decoupling
scheduler execution commit.

Instead of burying the signal handler in the 'Lx_kit::Scheduler'
object it is provided by the main object where the driver is free
to perform any additional step before or after executing the scheduler.

Issue #4927
Fixes #4952
2023-07-14 12:06:32 +02:00
Josef Söntgen
dd1b8a106f drivers/wifi: perform multi-staged construction
Since the wireless LAN driver is actually a 'Libc::Component' due to
its incorporation of the 'wpa_spplicant' application, we have to
intercept its construction because we have to initialize the Lx_kit
environment before any static ctors are executed. Most Linux initcalls
are implemented as ctors that will be otherwise implicitly executed
before the controll is given to us in 'Libc::Component::construct'.

Issue #4927.
2023-07-14 12:06:32 +02:00
Josef Söntgen
fc24ffcdb8 wifi: use mac address reporter
Remove the handcrafted MAC address reporter in favour the Genode
C API utility (cf. #4918).

Issue #4927
Issue #4918
2023-07-14 12:06:32 +02:00
Martin Stein
90ba794e8e base-hw imx epit-timer: fix duration calculation
The timer used to read the counter first and then the IRQ status. This
could cause a non-wrapped counter value to be considered a wrapped
counter value, leading to bogus timeout durations.

This commit fixes the bug and documents the used timer mode in the
driver in order to make future debugging of the driver easier.

Ref #4959
2023-07-14 12:06:32 +02:00
Martin Stein
9d98e8ac01 nic_dump.run: raise drivers cap quota
Fixes failing nightly test with x86_64 sel4.

Ref #4923
2023-07-14 12:06:32 +02:00
Stefan Kalkowski
cccb763737 lx_emul usb: handle RPC calls after async-URBS
Prevent missing new RPC calls handed over to a Linux task
of a corresponding usb-device, while that task blocked
during enqueuing of asynchronous URBs.

Fixed genodelabs/genode#4955
2023-07-14 12:06:32 +02:00
Christian Helmuth
62a0605cf0 depot_autopilot: skip RAM-hungry tests on foc/pbxa9
foc (or maybe bootstrap) seems to cap RAM at 256 MiB while hw uses the
entire RAM configured at the Qemu command line.
2023-07-14 12:06:32 +02:00
Christian Helmuth
7ba00f3692 drivers_interactive: increase CAP quota of usb_drv 2023-07-14 12:06:32 +02:00
Martin Stein
f33ff21ab2 nic_router_flood.run: prios, init stage, clean-up
* add a sensible priority setup into the test script in order to protect
  drivers and stack components from the demanding net clients
* delay the starting of the net clients by 5 seconds in order to give the
  drivers and stack components some time to startup in peace
* use only explicit service routing and caps values

Ref #4923
2023-07-14 12:06:32 +02:00
Norman Feske
3af5a0ca4e monitor: intercept VM session
This is needed to translate the thread capability argument of
'Vm_session::create_vcpu'.

Issue #4917
2023-07-14 12:06:32 +02:00
Alexander Boettcher
38152d6c72 intel_display: use Expanding_reporter 2023-07-14 12:06:32 +02:00
Alexander Boettcher
5ffdda783b nova: remove timestamp from kernel binary
Fixes #4956
2023-07-14 12:06:32 +02:00
Martin Stein
2fb0bfdf85 drivers_nic-pc: raise nic drv cap quota
The reason for this was that run/nic_router_disable_arp was failing on
sel4+qemu+x86_64.

Ref #4923
2023-07-14 12:06:32 +02:00
Martin Stein
c05a0eca86 xml_unquoted: fix bug with string of length 0
Ref #4922
2023-07-14 12:06:32 +02:00
Norman Feske
852bc3fc62 base-linux: remove exceptions from region_map_mmap
This patch replaces the exception-based error propagation by the use of
'Attempt' return values, which eliminates side effects of the exception
handling - cxx_heap allocations - from code paths that are used by the
the cxx_heap itself (when growing the cxx_heap).

It thereby fixes the failure of the sub_rm test at the "attach RAM ds to
any position at sub rm - this should fail" step.

Fixes #4953
2023-07-14 12:06:32 +02:00
Norman Feske
75bfc37b18 sculpt: screensaver infrastructure
This patch enhances Sculpt with the ability to detect user inactivity
for driving a screensaver by combining nitpicker's hover and focus
reports with a timer.

Issue #4950
2023-07-14 12:06:32 +02:00
Norman Feske
8463f4910a nitpicker: improve activity reporting
Nitpicker's hover and focus reports contain an 'active' attribute, which
can be inspected for the detection of user activity, e.g., as trigger
for a screensaver or for dynamic clipboard policies.

When using the 'Event' session, the reporting code updated the reports
only on incoming events. This patch adds the periodic reporting as used
when using the old 'Input' session.

Issue #4950
2023-07-14 12:06:32 +02:00
Norman Feske
ba67b535f8 gems: remove leitzentrale.run
This run script is superseded by modular Sculpt, which is able to run on
base-linux.
2023-07-14 12:06:32 +02:00
Josef Söntgen
1cac134030 lx_kit: support multiple pending IRQs
Decoupling the scheduler execution can lead to missed interrupts
because the current implementation only handles one pending
interrupt and requires immediate processing.

This commit introduces a helper object that is used to capture
any occuring interrupts that are then handled consecutively.

Issue #4927.
2023-07-14 12:06:32 +02:00
Josef Söntgen
caac994da8 lx_kit: decouple schedule execution
Prior to this commit, whenever an external event occurred, for example
timer or interrupt, the corresponding I/O signal handler was triggered.
This handler unblocked the task waiting for the event and initiated the
immediate execution of all unblocked tasks. Since these tasks may hit
serialization points, e.g. synchronously waiting for packet stream
operations, that require handling of other I/O signals this leads to
nested execution. This, however, is not supported and mixes application
and I/O level signal handling.

The flagging of the scheduling intent is now decoupled from its
execution by using an application level signal handler that is run in
the context of the components main entrypoint. The I/O signal handler
now triggers the scheduling execution by sending a local signal to
the EP.

Since it might be necessary to execute a pending schedule from the EP
directly the scheduler is extended with the 'execute' member function
that performs the check that the scheduler is called from within the
EP and triggers the execution afterwards.

Issue #4927.
2023-07-14 12:06:32 +02:00
Alexander Boettcher
1f1fafb0cf intel_fb: disable encoders of disconnected ports
On disconnect of displays, e.g. seen with Type-C connectors, the encoder was
not properly disabled due to a missing drm_client_modeset_commit. In order that
the commit succeed, however a fb must be assigned to the modeset. Missing to
do so leads to an -EINVAL by the drm_client_modeset_commit.

Fixes #4948
2023-07-14 12:06:32 +02:00
Josef Söntgen
70c57a3be3 pci_decode: calculate 64bit BAR size
Issue #4949.
2023-07-14 12:06:32 +02:00
Christian Prochaska
02209e5455 monitor: add memory write support
Fixes #4947
2023-07-14 12:06:32 +02:00
Martin Stein
7b7851abfb vfs/tresor_trust_anchor: fix alignment faults
Fixes alignment faults that occured in the AES256 implementations while
wrapping or unwrapping keys on imx53_qsb, imx6q_sabrelite, and imx7d_sabre.
The problem was that the unwrap_key/wrap_key functions did reinterpret casts
from unsigned char pointers to uint64_t pointers and then directly used the 64
bit values of referenced by the latter. Most probably this caused the compiler
to optimize operations in the assumption that the pointer is 8-byte aligned
which then created alignment faults.

As a solution, this commit changes the interface of the wrap_key/unwrap_key
functions to take uint64 pointers as arguments instead of unsigned char
pointers and then adapts the function users to ensure that they refer to
appropriately aligned memory regions.

Fixed #4932
2023-07-14 12:06:32 +02:00
Christian Helmuth
6e7b66cb8a Finally move __dso_handle into genode.ld
Issue #4784
2023-07-14 12:06:32 +02:00
Christian Helmuth
c84bbea1ca base-foc: avoid global ctor in Irq_session_component
Issue #4784
Issue #3509
2023-07-14 12:06:32 +02:00
Christian Helmuth
f6dcc3ca74 genode.ld: preserve ctors/dtors sections for analysis
Issue #3509
2023-07-14 12:06:32 +02:00
Josef Söntgen
317c5429d2 dde_bsd: decrease overall memory consumption
The initial memory backend implementation was brought over from DDE
Linux and was geared towards use-cases where a high-performing
allocator is useful. In case of the audio driver this is overkill
and since no other driver that could benefit from such an
implementation was ported in the meantime rather use a simpler
implementation that keeps the overhead down.

Fixes #4946.
2023-07-14 12:06:31 +02:00
Josef Söntgen
ff0ba89e91 dde_bsd: update mixer state report on HP sense
Issue #4946.
2023-07-14 12:06:31 +02:00
Norman Feske
fa3f5edcc2 base: remove deinit_heartbeat_monitoring function
Issue #4940
2023-07-14 12:06:31 +02:00
Norman Feske
f9bb7246ef base: remove destroy_signal_thread function
With the removal of the 'Entrypoint::schedule_suspend' mechanism, this
function is no longer called.

Issue #4940
2023-07-14 12:06:31 +02:00
Norman Feske
4193279560 base: remove entrypoint.cc from core
Since component.cc is no longer linked to core, we can also remove
entrypoint.cc, which was merely a dependency of component.cc.

Related to issue #4784
2023-07-14 12:06:31 +02:00
Stefan Kalkowski
13e0710d20 os: remove i.MX GPIO drivers
Ref genodelabs/genode#4945
2023-07-14 12:06:31 +02:00
Stefan Kalkowski
3d5ec9ea3f dde_linux: remove legacy imx6 usb host driver
Ref genodelabs/genode#4942
2023-07-14 12:06:31 +02:00
Stefan Kalkowski
5e7e6514be Remove i.MX6 platforms from base repositories
Fix genodelabs/genode#4941
2023-07-14 12:06:31 +02:00
Stefan Kalkowski
edcd44d9a7 lx_emul: shadow ARM-specific asm/uaccess.h file
Fix genodelabs/genode#4939
2023-07-14 12:06:31 +02:00
Stefan Kalkowski
b15fd68b60 lx_emul: shadow the ARM-specific asm/domain.h file
Fix genodelabs/genode#4938
2023-07-14 12:06:31 +02:00
Stefan Kalkowski
720d2847b6 lx_emul: correct the return value of clk_get
Fix genodelabs/genode#4937
2023-07-14 12:06:31 +02:00
Christian Helmuth
7563cf5c55 Remove blank lines between template<> and struct
The blank line disconnects the struct from its template definition,
which makes the whole definition harder to comprehend.
2023-07-14 12:06:31 +02:00
Stefan Kalkowski
15b30f3547 sculpt_image: add MNT Reform2 as target board
Fix genodelabs/genode#4936
2023-07-14 12:06:31 +02:00
Christian Prochaska
2dd1365af3 monitor: separate 'monitor_gdb' run scripts
Fixes #4944
2023-07-14 12:06:31 +02:00
Christian Prochaska
5a2d4c3437 monitor: apply 'wx' policy
Fixes #4943
2023-07-14 12:06:31 +02:00
Norman Feske
6e03d731a2 base-linux: avoid global ctor in wait_for_exit
This patch replaces the global '_wait_for_exit_sem' object by a local
static variable, which does not rely on the global ctors. It thereby
fixes the fault_detection test after the removal of the global ctors
execution from core ("base: remove component.cc from core").

Issue #4784
2023-07-14 12:06:31 +02:00
Christian Helmuth
1a7ff195d9 pc_linux: enable EFI and EFI_STUB
With these options enabled comparative testing between pc_linux drivers
and bzImages becomes much easier on EFI-only machines. The impact on the
actual Genode drivers is minimal.
2023-07-14 12:06:31 +02:00
Christian Helmuth
e2ddcee440 lx_emul: prevent warning about unsused static func 2023-07-14 12:06:31 +02:00
Norman Feske
1139492c4f base: remove Entrypoint::schedule_suspend
Fixes #4940
2023-07-14 12:06:31 +02:00
Norman Feske
1fd1786122 test/lx_hybrid: don't call glibc exit
This patch removes the use of the Entrypoint::schedule_suspend mechanism
and the call of glibc's exit from the lx_hybrid tests, for two reasons.

First, the interplay of atexit handlers executed by the glibc and
Genode's lx_hybrid library is complicated while bringing no benefits in
practice as lx_hybrid applications are usually servers that don't exit
anyway.

Second, the Entrypoint::schedule_suspend mechanism in not used by any
other component. By removing its use from the lx_hybrid tests, we can
remove this mechanism from the base library.

Issue #4940
2023-07-14 12:06:31 +02:00
Norman Feske
e2836bf68a ldso: remove deprecated support for legacy 'main'
Besides the removal of the legacy 'main' support, this patch simplifies
the lib/startup/_main.cc.

Issue #2199
2023-07-14 12:06:31 +02:00
Josef Söntgen
1d82a049bf nvme: address conversion warnings
This commit removes the CC_CXX_WARN_STRICT_CONVERSION suppressor
and address the resulting warnings.

Fixes #4935.
2023-07-14 12:06:31 +02:00
Norman Feske
7e1a2ac684 base: remove internal use of 'env_deprecated'
Fixes #4784
2023-07-14 12:06:31 +02:00
Norman Feske
de99945af0 base: pass 'Platform &' to 'bootstrap_component'
This eliminates the need of component.cc to pull the platform resources
out of thin air (calling 'env_deprecated()').

Issue #4784
2023-07-14 12:06:31 +02:00
Norman Feske
415d4ab23d startup: merge init_main_thread.cc into _main.cc
This makes the interplay of 'init_main_thread', 'init_platform',
'_main', and 'bootstrap_component' easier to follow.

Issue #4784
2023-07-14 12:06:31 +02:00
Norman Feske
7093258649 base: move 'prepare_init_main_thread' to Genode::
Issue #4784
2023-07-14 12:06:31 +02:00
Norman Feske
3f9698a292 base: remove component.cc from core
Issue #4784
2023-07-14 12:06:31 +02:00
Norman Feske
3a8c3dcc2d base: unify platform.cc between base, base-linux
This is a preparatory step for merging 'init_platform()' with
'bootstrap_component()'.

Issue #4784
2023-07-14 12:06:31 +02:00
Norman Feske
54cc70f9b1 base: remove Env arg from init_exception_handling
By supplying only the parts of the Env that are actually relevant for
initializing the cxx heap, we avoid the need for the 'Env' interface.
The patch also moves the call of 'init_ldso_phdr' to the outside
of the cxx library because it does not belong there.

Issue #4784
2023-07-14 12:06:31 +02:00
Christian Prochaska
59ce64b638 monitor: handle Monitored_thread case in kill_thread()
Fixes #4934
2023-07-14 12:06:31 +02:00
Christian Prochaska
8264b63e0b core: replenish UTCB quota in exception case
Fixes #4933
2023-07-14 12:06:31 +02:00
Christian Helmuth
ea294fff0c lx_emul: fix unplug of unclaimed USB devices
USB devices that are never associated to client sessions lack
usb_per_dev_data (and a kernel thread). Therefore, the devices should be
discontinued directly on unplug as no URBs can be pending.

Issue genodelabs/genode#4795
2023-07-14 12:06:31 +02:00
Josef Söntgen
afaabb3121 pc_nic_drv: add R8169 driver
This commits enables the R8169 driver and was tested with two
RTL8168h/8111h (10ec:8168 rev 0x15 sub 1462:7a38 / 1d05:109f) and
two equal RTL8125B (10ec:8125 rev 0x5 sub 1458:e000) devices
running Sculpt.

Firmware loading is for now not implemented but specific Linux
commits suggest it could be necessary. However, doing so will be
post-poned until we have gathered more experience with the driver.

Restarting the driver might lead to the following IOMMU error
messages but the device seems to work anyway:

[ 0] IOMMU:0xffffffff817ec040 FR:0x8a00000000002500 FI:0xfffffffdf8d30000 type:0x8 BDF:25:00.0
[ 0] IOMMU:0xffffffff817ec040 FR:0x2000004200002500 FI:0x000c21b0 type:0x2 BDF:25:00.0
[ 0] IOMMU:0xffffffff817ec040 FR:0x2020004200002500 FI:0x000c21a0 type:0x2 BDF:25:00.0
[ 0] IOMMU:0xffffffff817ec040 FR:0x2020004200002500 FI:0x00138000 type:0x2 BDF:25:00.0
[…]
[ 0] IOMMU:0xffffffff817ec040 FR:0x8a00000000002500 FI:0xfffffffdf8d30000 type:0x8 BDF:25:00.0
[ 0] IOMMU:0xffffffff817ec040 FR:0x2020004300002500 FI:0x00124000 type:0x2 BDF:25:00.0

Issue #4921.
2023-07-14 12:06:31 +02:00
Josef Söntgen
1996041dcc pc_linux: update initcall order for pc_nic_drv
Issue #4921.
2023-07-14 12:06:31 +02:00
Josef Söntgen
18c23ddb0c pc_linux: enable R8169
Issue #4921.
2023-07-14 12:06:31 +02:00
Christian Helmuth
2232b33b8e pci_decode: limit bus parsing to subordinate buses
While this approach still scans "holes" in the bus range, it stops
scanning at the maximum subordinate bus number reachable from the base
PCI bus at the host bridge. Startup under Qemu no longer takes about 12
seconds for scanning 256 buses.
2023-07-14 12:06:31 +02:00
Norman Feske
0ab69a2bb8 base: de-duplicate src/lib/base/platform.cc
By splitting the 'init_capability_slab()' implementation to a separate
compilation unit 'capability_slab.cc', base-hw no longer needs a
customized version of 'lib/base/platform.cc'.

Related to issue #4784
2023-07-14 12:06:31 +02:00
Norman Feske
6e30d00eef base: remove env_deprecated from signalling code
Issue #4784
2023-07-14 12:06:31 +02:00
Christian Helmuth
ee564125df Replace ipxe_nic_drv by pc_nic_drv in run scripts
Issue #4921
2023-07-14 12:06:31 +02:00
Christian Helmuth
8ecbc48211 sculpt: replace ipxe_nic_drv by pc_nic_drv
Issue #4921
2023-07-14 12:06:31 +02:00
Christian Helmuth
48cc8fb657 drivers_nic-pc: replace ipxe_nic_drv by pc_nic_drv
Also, the configuration enables MAC-address reporting and includes a
verbose mac_report_rom.

Issue #4921
2023-07-14 12:06:27 +02:00
Christian Helmuth
d258422c34 pc_nic_drv: ethernet NIC driver based on Linux 6.1
Fixes #4921
2023-07-14 12:05:54 +02:00
Christian Helmuth
8de0d8d4e0 pc_linux: update initcall order for pc_nic_drv
Issue #4921
2023-07-14 12:01:19 +02:00
Christian Helmuth
36c1dc16d4 pc_linux: enable e1000, e1000e, pcnet32
Issue #4921
2023-07-14 12:01:19 +02:00
Norman Feske
3489672bc0 base: remove env_deprecated from thread-start code
This patch replaces the internal use 'env_deprecated()' from the
implementation of the thread API in the base library. It also
replaces the global accessor 'main_thread_cap' by the explicit
propagation of the main-thread's capability to the single point of
use via a new 'init_thread_bootstap' function.

Issue #4784
2023-07-14 12:01:19 +02:00
Josef Söntgen
adf0b893e8 lx_kit: add random dummy back end
This back end can be used in place of the existing jitterentropy based
on in case random is not strictly needed by the component but one
wants to use the available 'shadow/drivers/char/random.c'
implementation.

Issue genodelabs/genode-allwinner#21.
2023-07-14 12:01:19 +02:00
Alice Domage
943c9809ed depot_remove.run: replace x86_64 by [depot_spec]
This change makes the run script compatible with all CPU architectures.

Issue genodelabs#4866
2023-07-14 12:01:19 +02:00
Josef Söntgen
c888fcbdd9 lx_emul: implement __get_random_u32_below
The implementation was already part of the Zynq's sd_card driver and
since other ARM drivers need it as well, promote it to the common
shadow library.

Issue genodelabs/genode-allwinner#21.
2023-07-14 12:01:19 +02:00
Josef Söntgen
7109b80bbd dde_linux: enable -gnu11
The option is default since 5.18 and several compilation units
require it.

Issue genodelabs/genode-allwinner#21.
2023-07-14 12:01:19 +02:00
Stefan Kalkowski
098bc66fc9 usb genode_c_api: reduce config report updates
Prevent unnecessarty config report updates, if a new USB device gets reported.

Fix genodelabs/genode#4929
2023-07-14 12:01:19 +02:00
Christian Helmuth
0a28df8805 lx_emul: skb_init() in lx_emul_init_task_function()
Issue #4921
2023-07-14 12:01:19 +02:00
Martin Stein
abe163c335 tresor: do not use on-disc-layouted structs
* Removes all previous structs that represented an on-disc block layout
  and were therfore subject to a number of layout restrictions (packed,
  padding members, enum representations, etc.).
* Adds a replacement struct without any layout restrictions for each of the
  removed structs. The new structs are named similar to the old structs.
* Adds block encoding and decoding utilities for easily converting from the
  new structs to on-disc blocks and vice-versa (Block_scanner, Block_generator,
  T::decode_to_blk, T::encode_from_blk)
* Adapts all affected places in the library to encode and decode proberly
  instead of simply casting pointers.
* Thereby cleans up the hashing utilities to use typed-reference args instead
  of void pointers.
* Re-enables run/tresor_tester and test-file_vault_vonfig_report for platforms
  rpi, imx53_qsb, imx53_qsb_tz, imx6q_sabrelite, imx7d_sabre.

Ref #4819
2023-07-14 12:01:19 +02:00
Martin Stein
434a4db637 lib/net: no color coding in packet print methods 2023-07-14 12:01:18 +02:00
Martin Stein
bf18ffbbdd lib/net: enable strict warnings
Enables strict warnings in the net lib and fixes all related compile errors.

Fixes #4924
2023-07-14 12:01:18 +02:00
Martin Stein
c907e44a02 register framework: read bitfields to fitting uint
* Replaces bool access types with uint8_t access types
* Ensures, that the framework always uses the smalles possible uint type
  for the return value wherever a bitfield is read and returned to the user.

Ref #4924
2023-07-14 12:01:18 +02:00
Norman Feske
79e262921e depot: update recipe hashes 2023-06-16 11:24:26 +02:00
Timo Nicolai
0a81bd5d5a depot_download_manager: fix verifying failed download
In some instances, the fetchurl progress determined by
depot_download_manager will be empty when the download fails (e.g. due
to a 404), this commit fixes a bug where this would be interpreted as
the download having completed which would subsequently start hash
verification of a package that has never actually been downloaded.

Fixes #4919
2023-06-16 11:24:26 +02:00
Christian Helmuth
c09b4ba46b depot: recipe for acpi_event 2023-06-16 11:24:26 +02:00
Johannes Schlatow
6e607349e1 depot: add black_hole and fonts_fs to pkg/goa
Goa now makes use of the black-hole component and has been enabled to provide
a fonts_fs.

genodelabs/genode#4928
genodelabs/goa#42
2023-06-16 11:24:26 +02:00
Alice Domage
fb0e8fffa2 New depot_remove component
The depot_remove component can delete PKG archives with
automatically resolving dependencies and deleting archives that are not
required on the system anymore.

Issue genodelabs#4866
2023-06-16 11:24:26 +02:00
Martin Stein
40338f9acb ping*.run: raise test timeout
On some platforms (x86_32/pistachio, x86_64/sel4) system startup is slow
and the previously configured 30 seconds not sufficient. With this commit, the
timeout is raised to 60 seconds only when running on such a platform.

Ref #4923
2023-06-16 11:24:26 +02:00
Martin Stein
21d4b8aba0 nic_router_disable_arp.run: raise test timeout
The previous, rather small timeout of 30 seconds caused problems on
x86_64/sel4.

Ref #4923
2023-06-16 11:24:26 +02:00
Martin Stein
62db70e2ea nic_router_dhcp: raise test timeout
It seems that the previous rather small timeout of 35 seconds caused problems
with our nightly tests on fiasco/x86_32.

Fixes #4923
2023-06-16 11:24:26 +02:00
Martin Stein
563f55e57b nic_dump.run: relax test procedure
This test was originally a copy of ping.run and therefore unnecessarily
inherited all its complexity for testing ping component behavior. Additionally,
ping.run was more actively maintained and evolved over time whereas
nic_dump.run didn't receive the same care. Now, the test fails on certain
platforms although NIC dump works just fine. Therefore, this commit reduces the
test behavior to what is really necessary for testing nic_dump and by doing so,
also fixes the failing targets.

Fixes #4926
2023-06-16 11:24:26 +02:00
Martin Stein
45e5a33b26 sd_card.run: fix broken config and automate
Fixes #4925
2023-06-16 11:24:26 +02:00
Martin Stein
cc99646b23 nic_router_flood.run: adjust success condition
On x86_32 okl4, the test timed out although the test timeout was already at
240 seconds for this platform. Instaed of raising it further, this commit
reduces the number of ping rounds for all platforms that are considered as
slower by the test.

Ref #4923
2023-06-16 11:24:26 +02:00
Norman Feske
e8ee2cc227 tool_chain_auto.run: incr. stack size for x86_32 2023-06-16 11:24:26 +02:00
Norman Feske
f789c8152c stdcxx: add missing symbol
Needed for building noux_pkg/gcc_x86 for x86_32 when using the
compiler's default optimization level (not Genode's default CC_OLEVEL).
2023-06-16 11:24:26 +02:00
Christian Helmuth
98cbfa3561 genode_c_api: MAC address reporter utility
Issue #4918
2023-06-16 11:24:26 +02:00
Christian Helmuth
29b441c6fa net: const Network_address source buffer
Issue #4918
2023-06-16 11:24:26 +02:00
Norman Feske
a27e46989f tool_chain_auto.run: use [build_artifacts]
The run script used to miss a few build targets for boot modules
specified at the 'build_boot_image' step.
2023-06-16 11:24:26 +02:00
Norman Feske
57b66987dd mk/gnu_build.mk: declare .tar as BUILD_ARTIFACTS
This way, run scripts using GNU build targets can use the result of
[build_artifact] for the 'build_boot_image' step.
2023-06-16 11:24:26 +02:00
Norman Feske
3c5d27506f base: stricter distinction between rx and rwx
This patch restricts 'Region_map::attach_executable' to create read-only
mappings, while offering the option to map the full rights using a new
'attach_rwx' method.

The 'attach_rwx' method is now used by the dynamic linker to explicitly
attach the linker area with full rwx rights. With the old page-fault
handling code, the execute flag was evaluated only for leaf dataspaces,
not for managed dataspaces while traversing region-map hierarchies.
With the new page-fault handling code, the execute bit is downgraded
to no-execute when passing a managed dataspace that is not attached
as executable.

Issue #4920
2023-06-16 11:24:26 +02:00
Norman Feske
a4c59c03e3 core: rework page-fault resolution
The change "core: allow offset-attached managed dataspaces" addressed a
corner case of the use of nested region maps. Apparently, this change
negatively affects other scenarios (tool_chain_auto).

In order to confidently cover all the differnt situations, this patch
reworks the page-fault resolution code for improved clarity and safety,
by introducing dedicated result types, reducing the use of basic types,
choosing expressive names, and fostering constness.

It also introduces a number of 'print' hooks that greatly ease manual
instrumentation and streamlines the error messages printed by core.
Those messages no longer appear when a user-level page-fault handler
is reistered for the faulted-at region map. So the monitor component
produces less noise on the attempt to dump non-existing memory.

Issue #4917
Fixes #4920
2023-06-16 11:24:26 +02:00
Norman Feske
65d3b3a32f base-linux: build fix for BOARD=pc
This is a follow-up commit to "base: remove internal use of format
strings".

Issue #2064
2023-06-16 11:24:26 +02:00
Norman Feske
47fa54992f run/libc_vfs_filesystem_test: adjust caps for sel4
Fixes libc_vfs_fs_ext2 and libc_vfs_fs_fat on x86_64/qemu/sel4.
2023-06-16 11:24:26 +02:00
Norman Feske
6af42c9fb5 test-sanitizer: simplify, increase caps for sel4 2023-06-16 11:24:26 +02:00
Christian Helmuth
54a549d808 lx_emul: move arch_atomic64_add_return to dde_linux 2023-06-16 11:24:26 +02:00
Norman Feske
6a57683e52 New debug monitor
The new monitor component at os/src/monitor is the designated successor
of the gdb_monitor. This initial version, however, implements only the
subset needed to inspect the memory of the monitored component(s).

In contrast to the gdb_monitor, the new component supports the monitoring
of multiple components, leveraging the sandbox API. It can therefore be
used as a drop-in replacement for the init component. Like the gdb_monitor,
the new monitor speaks the GDB protocol over Genode's terminal session.
But the protocol implementation does not re-use any gdbserver code,
sidestepping the complexities of POSIX.

There exist two run scripts illustrating the new component. The
os/run/monitor.run script exercises memory inspection via the 'm' command
by letting a test program monitor itself. The os/run/monitor_gdb.run
script allows for the interactive use of GDB to interact with monitored
components.

Issue #4917
2023-06-16 11:24:26 +02:00
Norman Feske
65f65073e6 sandbox: allow supplemental config nodes
Let the sandbox library disregard all unknown config sub nodes so that
supplemental information - like the monitor policy configuration - is
not interpreted as a misconfiguration ("unknown config element type ...").

Issue #4917
2023-06-16 11:24:26 +02:00
Norman Feske
add6dbac4e sandbox: add Pd_intrinsics::start_initial_thread
This hook allows for intercepting the creation of initial threads
whenever a new child is started.

Issue #4917
2023-06-16 11:24:26 +02:00
Norman Feske
0d5571a820 base: close PD session last when destructing child
This patch moves the destruction of the child's PD session after the
closing of all other sessions because the PD session's role as resource
container might still be needed for orderly reverting the session quotas
when closing the other remaining sessions.

Issue #4917
2023-06-16 11:24:26 +02:00
Norman Feske
734fc252e8 base: add Child_policy::start_initial_thread
The added interface allows for the local interception of
'Cpu_thread::start' RPC calls.

Issue #4917
2023-06-16 11:24:26 +02:00
Norman Feske
f2153f9b2f sandbox: allow for customized PD access
By default, the sandbox uses the Env::pd() as reference PD session of
the sandbox children.

However, to accomodate use cases where the interplay of the reference
PD session and the child's address space needs to be intercepted, this
patch adds a constructor that takes an interface for the controlled
access of PD intrinsics as argument.

Issue #4917
2023-06-16 11:24:26 +02:00
Norman Feske
30b70da6c1 base/child.h: Child_policy::with_address_space
This patch replaces the former 'address_space' accessor by a new
'with_address_space' interface that grants access to the region map of
the child's address space, but limits the interface lifetime to the
scope of the caller.

Issue #4917
2023-06-16 11:24:26 +02:00
Norman Feske
f47c64e246 core: allow offset-attached managed dataspaces
This patch adds the missing application of the region offset to the
resolution of page faults inside managed dataspaces, which resulted in
an unexpected "invalid mapping" message after attaching a managed
dataspace with an offset.

This limitation could be observed during the implementation of the debug
monitor that locally maps a portion of the debugging target's address
space, e.g., a view port of 16 MiB. All traditional uses of managed
dataspaces (e.g., stack area, linker area) happened to attach the
managed dataspaces from their beginning.

Issue #4917
2023-06-16 11:24:26 +02:00
Sebastian Sumpf
3e0e86f720 mesa: remove 'printf' from 'iris_bufmgr_tmp.patch'
also rename it to 'iris_bufmgr_fd.patch'

issue #4916
2023-06-16 11:24:26 +02:00
Sebastian Sumpf
e3c2fdf414 gpu/intel: enable GPU reset for GEN(8)/9/12
* add semaphore command to ring in order to be able to stop ring
  execution before reset (Wa KabyLake)
* implement reset sequence as done by the Linux driver
* reset ring and cancel job of vgpu causing hang
* lower watchdog timeout 1000ms -> 200ms
* improve scheduling of vgpus so progress after reset is made
* improve the generation chaos a little
* tested on Skylake, Kaby Lake, Tiger Lake

issue #4916
2023-06-16 11:24:26 +02:00
Alexander Boettcher
b599f4e106 sel4: stop thread on alignment fault
by not replying to the IPC. Otherwise, endless alignment faults are triggered,
seen on imx6q Sabrelite and usb_hid_raw.
2023-06-16 11:24:26 +02:00
Alexander Boettcher
530ec3115f sel4/x86: remove Nehalem kernel config adjustment
since the used Genode Qemu model now supports it.
2023-06-16 11:24:26 +02:00
Martin Stein
dea53f635f Refine tresor tests
* Use jitterentropy only if supported.
  On certain targets like pbxa9 or zynq_qemu, the performance counter always
  yields 0, which renders jitterentropy unusable. On these platforms, the
  Tresor tests now use a static value as entropy source instead.

* Adds a new package test-file_vault_config_report_no_entropy that is used by
  the Depot Autopilot on targets without jitterentropy support instead of
  test-file_vault_config_report. The only difference between the two packages
  is the value of the above described new config attribute of the File Vault.

* Circumvent alignment fault.
  The Tresor lib for now has the deficiency of using on-disc data structures
  directly in code instead of decoding them first to unpacked, naturally
  aligned structures. This causes problems with memory-access alignment on
  several platforms (rpi, imx6q_sabrelite, imx53_qsb, imx7d_sabre). As fixing
  this properly is a bit of work, the commit disables the tresor_tester and
  file_vault_config_report test on the affected platforms in autopilot mode for
  now.

* Further adjustments
  * Make benchmarks optional
  * Use a smaller tresor for rekeying
  * Clean up image parameters
  * No use implicit routes/resources
  * Reduce ram consumption
  * Reduce test timeout
  * Raise cap quota, required for sel4 x86_64.

Ref #4819
2023-06-16 11:24:26 +02:00
Martin Stein
5800ab4961 vfs/tresor_trust_anchor: remove debug mode
The debug mode turned out to be unnecessry because the plugin can be simply
replaced with an <inline> file VFS plugin that has a content size of 32 bytes.

Ref #4819
2023-06-16 11:24:26 +02:00
Martin Stein
03d7258d33 tresor: better handling of hash mismatches
Instead of throwing an uncaught exception, the corresponding request is marked
failed.

Ref #4819
2023-06-16 11:24:26 +02:00
Martin Stein
7c5c92351e file_vault: compatibility with 21.05 containers
* Fix minimum passphrase size to be the same as with File Vault 21.05.
* Adapt to different image name of File Vault 21.05.

Ref #4819
2023-06-16 11:24:25 +02:00
Martin Stein
80b729703b file_vault_config_report tests: fix for pistachio
* relaxes the timing and reduces the test steps because pistachio is quite
  slow and would otherwise trigger problems with our easy approach of using a
  dynamic rom instead of a proper manager

* provide IO_PORT and IRQ session to timer driver

Ref #4819
2023-06-16 11:24:25 +02:00
Josef Söntgen
194af03fe9 autopilot.list: replace cbe with tresor tester
Issue #4819.
2023-06-16 11:24:25 +02:00
Martin Stein
c40205e93f pkg/test-file_vault_config_report: minor style fix
Ref #4819
2023-06-16 11:24:25 +02:00
Martin Stein
d9dd518a20 pkg/file_vault: fix missing fs route
The File System route for the Tresor Init sub-component was somehow missing.

Ref #4819
2023-06-16 11:24:25 +02:00
Alexander Boettcher
ceaa02230e qemu: set default cpu model for x86_64 explicitly
With the update to sel4 and the gcc 12, assembly instructions are generated
and used, like POPCNT. The instruction is available on our native hardware,
but not emulated by the default cpu model necessarily, which leads to
undefined opcode exceptions (Qemu 4.2.1 && seL4). Additionally, the features
of the default Qemu cpu model may vary between Qemu releases and makes it
harder to correlate effects.
2023-06-16 11:24:25 +02:00
Christian Helmuth
6cb697e6d8 base: remove ancient artifact of config library
The config library was removed in issue #2431 in 2017.
2023-06-16 11:24:25 +02:00
Norman Feske
250c16ddcf os/path.h: fix misleading comments
Issue #4708
2023-06-16 11:24:25 +02:00
Christian Helmuth
4a15621dc8 libc: warn about unsupported RTLD_GLOBAL in dlopen()
Fixes #3779
2023-06-16 11:24:25 +02:00
Christian Helmuth
7441548458 Configure ld soname also for lib.so files
Fixes #4914
2023-06-16 11:24:25 +02:00
Alexander Boettcher
11764ed755 core: remove io_mem attachments before destruction
The attachment removal is triggered actually on _ds member destruction time,
but after the io_mem representation for the specific base-<platform> possibly
vanished already during _unmap_local in the ~Io_mem_dataspace. This creates
on base-sel4 several kernel warnings about invalid capabilities.

Issue #4913
2023-06-16 11:24:25 +02:00
Alexander Boettcher
b349dd9c0a sel4: convert io memory on demand
instead all during boot. On x86 and qemu this takes quite a while until
the system is booted.

Fixes #4913
2023-06-16 11:24:25 +02:00