14320 Commits

Author SHA1 Message Date
7cca7a802e libports,ports,pc,dde_linux: rm Xml_node::sub_node
Issue #5608
2025-06-23 14:58:54 +02:00
c6183e6d72 TMP fixup 'vfs/block: renovate plugin' (fix 32bit)
Issue #2263.
2025-06-23 14:58:15 +02:00
f62f6b29ca lighttpd.run: forward https port 443 to server domain 2025-06-23 14:58:15 +02:00
7382e22e72 nic_router: fix state of packet waiting for ARP
This prevents duplicate packet acks and, thus, the following error on
the client side when the ack'd packet is released.

  Error: Bit_array: invalid clear
2025-06-23 14:58:15 +02:00
53fb46924c base,os: remove use of Xml_node::sub_node
Issue #5608
2025-06-23 14:58:15 +02:00
c19f795182 Allow return values for Xml_node::with_sub_node
This commit equips 'with_sub_node' with the ability of returning values
from a sub node's scope. This facilitates the use of constants instead of
variables for returning parsed information.

Issue #5608
2025-06-23 14:58:15 +02:00
a15948c64c tool: support waiting for initial bootloader msg
*TODO* meaningful commit message
*TODO* move proc run_bootloader_string to sane place (image/uboot ?)

to shorten waiting time, in case the board or the serial is not working.
2025-06-23 11:38:33 +02:00
c7603f3904 mixer: avoid using Xml_node::sub_node
Issue #5245.
2025-06-23 11:38:33 +02:00
9fb5df4f1a fixup 'vfs/block: set default I/O buffer to 4 MiB' (file_vault block_buffer_count usage)
Issue #2263.
2025-06-23 11:38:33 +02:00
7984171c69 fixup 'vfs/block: set default I/O buffer to 4 MiB' (sculpt_manager block_buffer_count)
Issue #2263.
2025-06-23 11:38:33 +02:00
fd250375d9 fixup 'vfs/block: set default I/O buffer to 4 MiB' (warn on block_buffer_count usage)
Issue #2263.
2025-06-23 11:38:33 +02:00
bc953fbac0 core: synchronize ram_dataspace_factory
During page fault resolving by the pager_ep on base-sel4 it happens,
that the Page_table_registry allocates via the used TSlab more core local
meta data.

This leads to concurrent execution of alloc_ram in the ram_dataspace_factory
by the entrypoint and pager_ep code. Synchronize ram allocation/deallocation
by a mutex.

Issue #5581
2025-06-23 11:38:33 +02:00
7ddbc15f98 sel4: synchronize in _clear_ds of core
the virtual address allocation and de-allocation. On sel4 the main, entrypoint
and pager_ep may allocate concurrently RAM, e.g. pager_ep for meta data.

Issue #5581
2025-06-23 11:38:33 +02:00
24085f7dc1 Revert "sel4: re-use virtual region in _clear_ds"
This reverts commit 73f4585f70.

Issue #5581
2025-06-23 11:38:33 +02:00
6008387b39 vfs/block: renovate plugin
This commit renovates the aged VFS Block plugin by utilizing the
Block Job API.

The plugin still creates one connection to a Block provider but
operates in a non-blocking fashion. In case multiple VFS handles
concurrently operate on the connection - in the most common usage
there is only one VFS handle in use - the Job API serializes all
requests.

Requests that a larger than the configured I/O buffer, i.e. the
shared memory dataspace between the components, are transparently
handled by the Job API. The plugin itself does not contain a
block-cache.

Unaligned (the seek offset does not match a block-boundary) and/or
partial (the count is less than a full block) requests are handled
differently depending whether it is a read or write request:

For 'read' requests the starting block is round-down to the nearest
block to cover an unaligned start offset and the transfer count is
round-up (within reasons, e.g. end-of-file) to take care of partial
blocks at the end. The constraining parameters are stored in the
Job object and performing data memcopy operations adhere to them.

For 'write' requests any unaligned and/or partial operation will
lead to issuing a 'read' request first for the covering block in
question. A crooked request is dealt with in at most three rounds.
The first round handles the unaligned start offset, the second
tries to produce the largest aligned and full request while the
third and last round handles the remaining partial request. A
unaligned buffer of 4096 bytes is used to temporarily store the
required data.

For the time being the underlying block-size needs to be a multiple
of 512 and at most 4096 bytes. Accessing a larger underlying
block-size in smaller blocks, e.g. issuing 512 byte requests on
a 4096 bytes session, is possible but might incur substantial
overhead.

Fixes #2263.
2025-06-19 10:45:31 +02:00
b10470d145 block/client: call Block::info RPC at construction
The Block session information are static for the lifetime of the
connection (and is used internally by the Job API).

Issue #2263.
2025-06-19 10:42:48 +02:00
7950d64737 vfs/block: set default I/O buffer to 4 MiB
This commit raises the Packet_stream bulk-size to 4 MiB from the
128 KiB used before. It also removes the 'block_buffer_count' option
as the count is now calculated internally and covers the complete
bulk-size. A new 'io_buffer' option is introduced that manages the
bulk-size.

This change can double the throughput with sequential I/O operations
when employing larger block-sizes.

Issue #2263.
2025-06-19 10:41:56 +02:00
e1f6a587ba sculpt: extend runtime prio-levels
Reserve the top-most priority for the runtime-init, and lower
driver, multimedia, default and background components each by one
priority-level.

Fix #5605
2025-06-19 10:39:18 +02:00
f73a53ee04 fixup "base: add test for priority scaling" (coding style)
Consistently put 'const' to the right of the type.

Issue #5603
2025-06-19 10:28:50 +02:00
208a1c1a1b fixup! base: add test for priority scaling
Issue #5603
2025-06-19 10:25:36 +02:00
a0072f2cd2 cpu_session: fix off-by-one in scale_priority()
Generic priority values actually range from 0 to PRIORITY_LIMIT-1,
hence the resulting platform priority is in the range from 0 to
pf_prio_limit-1.

Fixes #5603
2025-06-19 10:25:36 +02:00
12a8fa6a64 base: add test for priority scaling
Issue #5603
2025-06-19 10:25:36 +02:00
73f4585f70 sel4: re-use virtual region in _clear_ds
which is ever in 4k pieces at moment in size. This avoids dynamic on
several allocators. In case core has pressure on the virtual region allocator
(which is limited in base-sel4), there will be ever the one 4k to clear
dataspaces iteratively.

Issue #5581
2025-06-18 17:06:38 +02:00
57fca43099 stdcxx: prevent refs to weak symbols w/o definition
When executing

  make KERNEL=hw BOARD=virt_qemu_riscv TEST_PKGS=test-stdcxx TEST_SRCS=run/depot_autopilot

we experienced errors like

  Error: LD: symbol not found: 'transaction clone for operator new[](unsigned long)'

This issue seems to be caused by weak undefined symbols of libitm and
seems to be related to

  https://gcc.gnu.org/bugzilla/show_bug.cgi?format=multiple&id=69506

Thus, we define _GLIBCXX_USE_WEAK_REF 0 like its done in newlib and
darwin environments and, thereby, drop ITM support.

Fixes #5607
2025-06-17 14:08:16 +02:00
3ef88cb06d Revert "ldso: ignore undefined weak non-function symbols on riscv"
This reverts commit a14ee9c7f0.

Issue #5607
2025-06-17 14:08:16 +02:00
f287958d7d sculpt/depot: remove inactive depot users 2025-06-17 13:31:38 +02:00
a14ee9c7f0 ldso: ignore undefined weak non-function symbols on riscv
When executing

make KERNEL=hw BOARD=virt_qemu_riscv TEST_PKGS=test-stdcxx TEST_SRCS= run/depot_autopilot

we experience errors like

Error: LD: symbol not found: 'transaction clone for operator new[](unsigned long)'

This issue seems to be caused by weak undefined symbols of libitm and
seems to be related to
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119369. On x86 these
symbols will end as undefined functions causing R_JUMP_SLOT relocation.
Because the functions are not called, there is no problem.  On RISC-V
these symbols have no type, they are not functions and R_RISCV_64
relocations are emitted by binutils-ld. These relocations are used for
global data and resolved during library load, by searching the loaded
library only. Because the symbol cannot be resolved the test fails.

This commit ignores undefined weak symbols for R_RISCV_64 relocations
during program load.

It should be reverted after a tool chain/binutils update if possible.

issue #5607
2025-06-17 11:39:36 +02:00
725d595d8d sel4: remove trace object of core thread
on destruction to avoid memory corruption.

Issue #5581
2025-06-16 15:08:52 +02:00
113409b640 sel4: use sel4_tcb_suspend for irq thread
in destruction to avoid kernel warnings.

Issue #5581
2025-06-16 15:08:23 +02:00
c2817f122d sel4: revert core thread resources on destruction
IRQ threads are created dynamically in core via Irq_session and needs to
be reverted properly.

Issue #5581
2025-06-16 15:08:13 +02:00
70492b3ee0 sel4: support destruction of IRQs in core
Issue #5581
2025-06-16 15:08:05 +02:00
fb5fba3812 sel4: free stack memory for core threads
The irq session requires a Irq thread per IRQ, so free up also the stack
of an IRQ thread on destruction to avoid leakage of physical memory.

Issue #5581
2025-06-16 15:07:59 +02:00
df0bc1a5c0 sel4: avoid assertion in cnode mint
Issue #5581
2025-06-16 15:07:51 +02:00
3197760ca2 usb webcam: internal and external in sculpt test
Issue #5601
2025-06-16 12:33:52 +02:00
35aa971759 usb webcam: optional format attribute
By default, we let the uvc library select an appropriate mode by passing
UVC_FRAME_FORMAT_ANY to uvc_get_stream_ctrl_format_size(), but format
can still be controlled by the config.

Issue #5601
2025-06-16 12:02:48 +02:00
2b2a5f7b05 usb webcam: optional fps attribute
By default, we let the uvc library select an appropriate mode by passing
0 to uvc_get_stream_ctrl_format_size(), but fps can still be controlled
by the config.

Issue #5601
2025-06-16 12:02:48 +02:00
16278f89b5 usb_webcam: remove enabled attribute from config
The webcam is now configured on startup only and the camera stays
switched on until the app is terminated.

Issue #5601
2025-06-16 12:02:48 +02:00
ae4aef402b Update libuvc to latest upstream
Issue #5601
2025-06-16 12:02:48 +02:00
66f4f4af15 fixup "core: re-factor io_mem_session implementation"
Issue #5597
2025-06-12 15:56:59 +02:00
0d224af605 sel4: convert io_mem resources only once
In case that IO-MEM resources are requested for serveral dataspaces in
(disjunct) parts on the same physical 4k range, the sel4 kernel will deny
to convert the same 4k physical page multiple times. Seen with USB EHCI
device, e.g. on IMX6q-sabrelite.

Instead, check whether a IO-MEM resource is requested the first time
respectively the last reference is freed, so that the base-sel4 code can only
convert the frame one time respectively revert the frame only once.

Fixes #5597
2025-06-12 15:56:59 +02:00
4086d4ce85 core: re-factor io_mem_session implementation
Replace _map_local and _unmap_local in the I/O mem session component
by _acquire and _release. The _acquire and _release must be implemented
per base-<kernel>.

The commit is a preparation commit for seL4, so that it can implement
_acquire differently in a subsequent commit to solve #5597 actually.

Issue #5597
2025-06-12 15:56:59 +02:00
280f5c3cce app/depot_download_manager: use finished attribute
Rather than determing the completeness state by inspecting the
'total' and 'now' attributes in the progress use the newly made
available 'finished' attribute instead.

Issue #5600.
2025-06-12 12:38:44 +02:00
6d146121bb fixup 'app/fetchurl: download size information in bytes' (depot_download_manager)
Issue #5600.
2025-06-12 12:38:02 +02:00
58450ccd5c fixup "event_filter: tolerate missing ROMs" (session upgrade, initial attach)
Issue #5595
2025-06-12 12:30:49 +02:00
9ef36d8981 app/fetchurl: add head option
By specifying the 'head' attribute in an '<fetch>' node fetchurl is
going to issue a HTTP HEAD request.

Fixes #5600.
2025-06-11 07:35:34 +02:00
daef81e4ae app/fetchurl: denote finished state in report
This commit allows for explicitly checking the state and result of a
fetch operation by enriching the report with a 'finished' and 'result'
attribute. On a pending download 'finished' is set to 'false'. The
'result' attribute is added when the download is actually complete.

This commit is mainly a prerequisite for supporting the handling of
HEAD requests via the '<progress>' report where no data is actually
transfered and checking 'now' against 'total' will not work.

Issue #5600.
2025-06-11 07:35:05 +02:00
8875266492 app/fetchurl: download size information in bytes
This commit remedies the prior update commit that adapted to the
API change in curl in a shortsided way. As the progress callback
gives progress information as number of bytes let us do the same
in our progress report.

Issue #5600.
2025-06-11 07:34:41 +02:00
0eeb9f0bd1 app/fetchurl: avoid using Xml_node::sub_node
Issue #5600.
2025-06-11 07:31:56 +02:00
91e99516af test/event_filter: fix spurious-wakeup messages
Issue #5411
2025-06-10 16:36:37 +02:00
7965d86860 event_filter: tolerate missing ROMs
By manually obtaining the ROM sessions for includes via 'Env::try_session'
instead of using 'Attached_rom_dataspace', the event filter becomes able
to gracefully deal with 'Session_error::DENIED' as non-fatal condition.
This is desirable when interactively configuring the event filter on
Sculpt OS where temporary misconfigurations are somewhat expected.

Issue #5595
2025-06-10 15:45:33 +02:00