OpenBSD cvs log

created 2019-12-16T18:25:37Z
begin 2019-12-12T00:00:00Z
end 2019-12-13T00:00:00Z
path src/sys
commits 9

date 2019-12-12T11:12:36Z
author mpi
files src/sys/uvm/uvm_extern.h log diff annotate
src/sys/uvm/uvm_map.c log diff annotate
message Header cleanup.

- reduces gratuitous differences with NetBSD,
- merges multiple '#ifdef _KERNEL' blocks,
- kills unused 'struct vm_map_intrsafe'
- turns 'union vm_map_object' into a anonymous union (following to NetBSD)
- move questionable vm_map_modflags() into uvm/uvm_map.c
- remove guards around MAX_KMAPENT, it is defined&used only once
- document lock differences
- fix tab vs space

ok mlarkin@, visa@

date 2019-12-12T11:12:37Z
author mpi
files src/sys/uvm/uvm_map.h log diff annotate
message Header cleanup.

- reduces gratuitous differences with NetBSD,
- merges multiple '#ifdef _KERNEL' blocks,
- kills unused 'struct vm_map_intrsafe'
- turns 'union vm_map_object' into a anonymous union (following to NetBSD)
- move questionable vm_map_modflags() into uvm/uvm_map.c
- remove guards around MAX_KMAPENT, it is defined&used only once
- document lock differences
- fix tab vs space

ok mlarkin@, visa@

date 2019-12-12T13:09:35Z
author bluhm
files src/sys/arch/amd64/stand/efiboot/exec_i386.c log diff annotate
message On a HP EliteBook 830 G6 the Computrace executable is located in
the area where the boot loader copies the kernel. Its EfiLoaderCode
is write protected, so the boot loader hangs in memmove(). As we
may use this memory after calling EFI ExitBootServices(), change
the protection bit to writeable in the page table.
OK deraadt@ mlarkin@ patrick@

date 2019-12-12T15:55:36Z
author visa
files src/sys/sys/stdarg.h log diff annotate
message Unhook from . Nowadays all the
compilers that OpenBSD provides have builtins for vararg routines
and use the machine-independent definitions in .

Input from miod@
OK millert@

date 2019-12-12T16:31:06Z
author visa
files src/sys/kern/kern_event.c log diff annotate
src/sys/sys/event.h log diff annotate
message Allow sleeping inside kqueue event filters.

In kqueue_scan(), threads have to get an exclusive access to a knote
before processing by calling knote_acquire(). This prevents the knote
from being destroyed while it is still in use. knote_acquire() also
blocks other threads from processing the knote. Once knote processing
has finished, the thread has to call knote_release().

The kqueue subsystem is still serialized by the kernel lock. If an event
filter sleeps, the kernel lock is released and another thread might
enter kqueue_scan(). kqueue_scan() uses start and end markers to keep
track of the scan's progress and it has to be aware of other threads'
markers.

This patch is a revised version of mpi@'s work derived
from DragonFly BSD. kqueue_check() has been adapted from NetBSD.

Tested by anton@, sashan@
OK mpi@, anton@, sashan@

date 2019-12-12T16:33:02Z
author visa
files src/sys/kern/uipc_socket.c log diff annotate
src/sys/miscfs/fifofs/fifo_vnops.c log diff annotate
src/sys/sys/socketvar.h log diff annotate
message Reintroduce socket locking inside socket event filters.

Tested by anton@, sashan@
OK mpi@, anton@, sashan@

date 2019-12-12T17:52:25Z
author cheloha
files src/sys/kern/kern_tc.c log diff annotate
message Recommit "tc_windup: separate timecounter.tc_freq_adj from timehands.th_adjustment"

Reverted with backout of tickless timeouts.

Original commit message:

We currently mix timecounter.tc_freq_adj and timehands.th_adjtimedelta
in ntp_update_second() to produce timehands.th_adjustment, our net skew.
But if you set a low enough adjfreq(2) adjustment you can freeze time.
This prevents ntp_update_second() from running again. So even if you
then set a sane adjfreq(2) you cannot unfreeze time without rebooting.

If we just reread timecounter.tc_freq_adj every time we recompute
timehands.th_scale we avoid this trap. visa@ notes that this is
more costly than what we currently do but that the cost itself is
negligible.

Intuitively, timecounter.tc_freq_adj is a constant skew and should be
handled separately from timehands.th_adjtimedelta, an adjustment that
we chip away at very slowly.

tedu@ notes that this problem is sort-of an argument for imposing range
limits on adjfreq(2) inputs. He's right, but I think we should still
separate the counter adjustment from the adjtime(2) adjustment, with
or without range limits.

ok visa@

date 2019-12-12T18:12:43Z
author cheloha
files src/sys/kern/kern_timeout.c log diff annotate
message Recommit "timeout(9): make CIRCQ look more like other sys/queue.h data structures"

Backed out during revert of "timeout(9): switch to tickless backend".

Original commit message:

- CIRCQ_APPEND -> CIRCQ_CONCAT
- Flip argument order of CIRCQ_INSERT to match e.g. TAILQ_INSERT_TAIL
- CIRCQ_INSERT -> CIRCQ_INSERT_TAIL
- Add CIRCQ_FOREACH, use it in ddb(4) when printing buckets
- While here, use tabs for indentation like we do with other macros

ok visa@ mpi@

date 2019-12-12T19:30:21Z
author cheloha
files src/sys/kern/kern_tc.c log diff annotate
message tc_setclock: reintroduce timeout_adjust_ticks() call

Missing piece of tickless timeout revert.