OpenBSD cvs log

created 2025-02-03T00:22:43Z
begin 2025-01-13T00:00:00Z
end 2025-01-14T00:00:00Z
path src/sys
commits 8

date 2025-01-13T03:21:10Z
author mvs
files src/sys/kern/kern_task.c log diff annotate
src/sys/kern/kern_timeout.c log diff annotate
message taskq_del_barrier(9) and timeout_del_barrier(9) should always call
taskq_barrier(9) and timeout_barrier(9) respectively.

In the case that task or timeout were scheduled to run both
*_del_barrier(9) only remove it from pending queue and doesn't wait its
finish. However task could be simultaneously running and scheduled to the
next run, so they need to always wait until running handler has completed.

ok dlg

date 2025-01-13T13:58:41Z
author claudio
files src/sys/ntfs/ntfs_ihash.c log diff annotate
src/sys/ntfs/ntfs_ihash.h log diff annotate
src/sys/ntfs/ntfs_subr.c log diff annotate
message Do not depend on RW_SLEEPFAIL in ntfs_ntlookup

While it is a cute optimisation it makes no sense to be a special
snowflake since there is no parallelism in this code. Instead use
the same pattern used by the other filesystems that detects a
collision in ntfs_nthashins() followed by a retry of lookup.

Tested by ian@ and jmatthew@
OK mpi@

date 2025-01-13T15:32:36Z
author kirill
files src/sys/dev/usb/uvideo.c log diff annotate
src/sys/dev/usb/uvideo.h log diff annotate
message sys/uvideo: bypass unknown pixelformat to consumer

The GUID format read from a camera usually begins with a null-terminated
pixel format. Certain formats should be mapped, such as converting YUY2 to
YUYV and I420 to YVU420, among others.

Instead of rejecting unknown driver formats like M420, I bypass them to the
consumer, which likely knows how to handle these formats.

OK mglocker@

date 2025-01-13T15:33:34Z
author kirill
files src/sys/dev/i2c/ihidev.c log diff annotate
message sys/ihidev: move debug log resettign to the right place

OK mglocker@

date 2025-01-13T16:58:09Z
author kirill
files src/sys/arch/arm64/stand/efiboot/efiboot.c log diff annotate
message arm64/efiboot: load DTB on HONOR Magicbook 14 Art

OK kettenis@ mglocker@

date 2025-01-13T17:50:54Z
author krw
files src/sys/kern/subr_hibernate.c log diff annotate
src/sys/sys/hibernate.h log diff annotate
message Zeroing free pages to improve compression became superfluous with the permanent
adoption of RLE a decade ago.

Nuke uvm_pmap_zero_everything(), reaping a measureable reduction in the time
taken to suspend when there are lots of free pages.

ok mlarkin@

date 2025-01-13T18:09:24Z
author mvs
files src/sys/kern/kern_sysctl.c log diff annotate
message Rework the INP tables walkthrough in the KERN_FILE_BYFILE case of
the sysctl_file().

I don't like how KERN_FILE_BYFILE case of the sysctl_file() delivers
sockets data to the userland. It not only takes exclusive netlock
around all except divert socket tables walkthrough, but also does
copyout() with mutex(9) held. Sounds strange, but the context switch
is avoided because userland pages are wired.

The table is protected with `inpt_mtx' mutex(9), so the socket lock or
netlock should be take outside. Since we have no socket pointer, we
can't use solock(). We can't use the only shared netlock because this
left socket unprotected against concurrent threads which rely on
solock_shared().

Now it is possible to rework sysctl_file(). We can use reference
counting for all socket types, and bluhm@ introduced `inp_sofree_mtx'
mutex(9) to protect `inp_socket'. The INP tables have the special
iterator to safely release `inpt_mtx' during table walkthrough.

The FILLSO() or FILLIT2() macros can't be used unrolled, because we
need to push mutexes re-locking and solock() deep within. Introduce
the FILLINPTABLE() macro which is the unrolling, but with the socket
related locking dances. FILLIT2() macro is not required anymore and
was merged with FILLIT().

Current implementation takes the reference on `inp_socket' and
releases `inpt_mtx' mutex(9). Now it's possible to fairly use
shared_solock() on socket instead of netlock while performing
fill_file(). The copyout() is external for fill_file() and touches
nothing required to be protected so it could be made lockless.

The KERN_FILE_BYFILE case became mp-safe, but the rest sysctl_file()
cases still not, so the sysctl_vslock() dances left as is.

ok bluhm

date 2025-01-13T18:10:20Z
author mvs
files src/sys/kern/uipc_socket.c log diff annotate
message Unlock the tcp(4) case of somove().

Tested and OK bluhm@.