OpenBSD cvs log

created 2022-11-16T10:27:38Z
begin 2022-11-11T00:00:00Z
end 2022-11-12T00:00:00Z
path src/sys
commits 28

date 2022-11-11T02:21:09Z
author jsg
files src/sys/dev/pci/drm/amd/amdgpu/amdgpu_kms.c log diff annotate
src/sys/dev/pci/drm/i915/i915_drv.c log diff annotate
src/sys/dev/pci/drm/radeon/radeon_kms.c log diff annotate
message return early from drm activate functions after fatal error

avoids a page fault trap trying to take an uninitialised
modeset lock on suspend

reported and tested by Ali Farzanrad on HP ProBook 4530s

radeondrm0 at pci1 dev 0 function 0 "ATI Radeon HD 6400M" rev 0x00
drm1 at radeondrm0
radeondrm0: msi
inteldrm0 at pci0 dev 2 function 0 "Intel HD Graphics 3000" rev 0x09
drm0 at inteldrm0
inteldrm0: msi, SANDYBRIDGE, gen 6
..
radeondrm0: CAICOS
[drm] *ERROR* Unable to locate a BIOS ROM
drm:pid0:radeondrm_attachhook *ERROR* Fatal error during GPU init
inteldrm0: 1366x768, 32bpp

date 2022-11-11T06:46:48Z
author anton
files src/sys/dev/hid/files.hid log diff annotate
src/sys/dev/hid/hidcc.c log diff annotate
src/sys/dev/hid/hidccvar.h log diff annotate
message Extract the HID specific pieces from ucc(4) into hidcc. First steps
toward attaching hidcc over i2c.

ok matthieu@

date 2022-11-11T06:48:38Z
author anton
files src/sys/dev/usb/files.usb log diff annotate
src/sys/dev/usb/ucc.c log diff annotate
message Make ucc(4) the first consumer of hidcc. No intended functional change.

ok matthieu@

date 2022-11-11T07:58:42Z
author jsg
files src/sys/dev/pci/pcidevs log diff annotate
message add AMD family 19h model 44h (Rembrandt) ids

from a ThinkPad T14 Gen 3 AMD dmesg provided by Philippe Meunier

date 2022-11-11T07:59:19Z
author jsg
files src/sys/dev/pci/pcidevs.h log diff annotate
message regen

date 2022-11-11T07:59:20Z
author jsg
files src/sys/dev/pci/pcidevs_data.h log diff annotate
message regen

date 2022-11-11T10:51:46Z
author dlg
files src/sys/net/if_pflow.c log diff annotate
message prepare for moving struct pf_state from pfvar.h to pfvar_priv.h

pflow obviously looks at the kernel pf state structure to do it's
thing, so it will need the header that provides it. i'm committing
this chunk separately to the actual pf_state move to keep the commits
small and simple.

ok sashan@

date 2022-11-11T10:55:48Z
author dlg
files src/sys/net/pfvar.h log diff annotate
src/sys/net/pfvar_priv.h log diff annotate
message move struct pf_state from pfvar.h to pfvar_priv.h.

we (sashan) are going to add a mutex to the pf_state struct, but a
mutex is a kernel data structure that changes shape depending on
things like whether MULTIPROCESSOR is enabled, and should therefore
not be visible to userland. when we added a mutex to pf_state,
compiling pfctl failed because it doesn't know what a mutex is and
it can't know which version of it the current kernel is running
with.

moving struct pf_state to pfvar_priv.h makes it clear it is a private
kernel only data structure, and avoids this leak into userland.

tested by me and make build
ok sashan@

date 2022-11-11T11:02:35Z
author dlg
files src/sys/net/pf.c log diff annotate
src/sys/net/pfvar.h log diff annotate
src/sys/net/pfvar_priv.h log diff annotate
message rewrite the pf_state_peer_ntoh and pf_state_peer_hton macros as functions.

i can read this code as functions, but it takes too much effort as macros.

date 2022-11-11T11:22:48Z
author sashan
files src/sys/net/if_pfsync.c log diff annotate
message Turn KASSERT() into if() to prevent state being inserted to
pfsync snapshot multiple times.

OK dlg@

date 2022-11-11T11:45:10Z
author kettenis
files src/sys/arch/arm64/dev/aplns.c log diff annotate
src/sys/arch/arm64/dev/aplsart.c log diff annotate
src/sys/arch/arm64/dev/rtkit.c log diff annotate
src/sys/arch/arm64/dev/rtkit.h log diff annotate
message Unmap and free memory when we shutdown rtkit. This fixes an issue where
we run out of SART entries after a few suspend/resume cycles.

ok patrick@

date 2022-11-11T11:47:12Z
author dlg
files src/sys/net/pf.c log diff annotate
message rename pfsync_up() to pfsync_is_up()

foo_up() where foo is a network driver is usually a function that
configures and brings an interface up into a running state. this
small tweak just makes the code a bit easier for me to read.

date 2022-11-11T11:47:13Z
author dlg
files src/sys/net/if_pfsync.c log diff annotate
src/sys/net/if_pfsync.h log diff annotate
message rename pfsync_up() to pfsync_is_up()

foo_up() where foo is a network driver is usually a function that
configures and brings an interface up into a running state. this
small tweak just makes the code a bit easier for me to read.

date 2022-11-11T12:06:17Z
author dlg
files src/sys/net/pfvar_priv.h log diff annotate
message steal a change by sashan@ to say which bits of pf_state need which locks.

not all members are annotated yet, but that's because there's no clear
protection for them yet.

ok sashan@

date 2022-11-11T12:14:01Z
author krw
files src/sys/kern/subr_disk.c log diff annotate
message Use the first 8 bytes of GPT gh_guid as the default d_uid. gh_guid is
initialized with arc4random().

date 2022-11-11T12:29:32Z
author dlg
files src/sys/net/pfvar_priv.h log diff annotate
message kn@ points out that lock annotations are usually wrapped in ()

date 2022-11-11T12:36:05Z
author dlg
files src/sys/net/pfvar_priv.h log diff annotate
message fix a misuse of vi.

date 2022-11-11T12:50:45Z
author dlg
files src/sys/net/pfvar_priv.h log diff annotate
message kn points out that brackets are not parentheses

date 2022-11-11T13:59:40Z
author anton
files src/sys/dev/hid/hidcc.c log diff annotate
message ihidev can pass a buffer larger than the size of the claimed input
report since it unconditionally uses the size of the longest input
report. This is quite harmless and the defensive check in hidcc can
therefore be relaxed and instead only examining the number of expected
bytes.

ok matthieu@ patrick@

date 2022-11-11T15:02:31Z
author dlg
files src/sys/net/pf.c log diff annotate
src/sys/net/pfvar_priv.h log diff annotate
message add a mutex to struct pf_state and init it.

nothing is protected by it yet but it will allow us to provide
consistent updates to individual states without relying on a global
lock. getting that right between the packet processing in pf itself,
pfsync, the pf purge code, the ioctl paths, etc is not worth the
required contortions.

while pf_state does grow, it doesn't use more cachelines on machines
where we will want to run in parallel with a lot of states.

stolen from and ok sashan@

date 2022-11-11T15:25:13Z
author matthieu
files src/sys/dev/hid/hidcc.c log diff annotate
src/sys/dev/i2c/files.i2c log diff annotate
src/sys/dev/i2c/icc.c log diff annotate
message Add icc(4) to handle Customer Control keyboards attached to i2c bus.
ok anton@ patrick@

date 2022-11-11T15:27:39Z
author matthieu
files src/sys/arch/amd64/conf/GENERIC log diff annotate
src/sys/arch/arm64/conf/GENERIC log diff annotate
message Enable icc(4). ok anton@ patrick@

date 2022-11-11T16:12:08Z
author dlg
files src/sys/net/pf.c log diff annotate
src/sys/net/pf_ioctl.c log diff annotate
src/sys/net/pfvar.h log diff annotate
src/sys/net/pfvar_priv.h log diff annotate
message try pf.c r1.1143 again: move pf_purge out from under the kernel lock

this also avoids holding NET_LOCK too long.

the main change is done by running the purge tasks in systqmp instead
of systq. the pf state list was recently reworked so iteration over
the state can be done without blocking insertions.

however, scanning a lot of states can still take a lot of time, so
this also makes the state list scanner yield if it has spent too
much time running.

the other purge tasks for source nodes, rules, and fragments have
been moved to their own timeout/task pair to simplify the time
accounting.

in my environment, before this change pf purges often took 10 to
50ms. the softclock thread runs next to it often took a similar
amount of time, presumably because they ended up spinning waiting
for each other. after this change the pf_purges are more like 6 to
12ms, and dont block softclock. most of the variability in the runs
now seems to come from contention on the net lock.

tested by me sthen@ chris@
ok sashan@ kn@ claudio@

the diff was backed out because it made things a bit more racey,
but sashan@ has squashed those races this week. let's try it again.

date 2022-11-11T16:41:44Z
author mbuhl
files src/sys/dev/pci/if_igc.c log diff annotate
message Due to checksum offloading one more element could be written to the ring
than there is space available.
ok dlg

date 2022-11-11T17:12:30Z
author dlg
files src/sys/net/pfvar_priv.h log diff annotate
message me and my text editor are not getting along today

date 2022-11-11T17:23:09Z
author matthieu
files src/sys/dev/hid/hidcc.c log diff annotate
message Debug was accidentally left enabled in previous commit.

date 2022-11-11T18:09:58Z
author cheloha
files src/sys/kern/kern_fork.c log diff annotate
src/sys/kern/kern_timeout.c log diff annotate
src/sys/netinet/ip_ipsp.c log diff annotate
src/sys/sys/timeout.h log diff annotate
message timeout(9): remove timeout_set_kclock(), TIMEOUT_INITIALIZER_KCLOCK()

We have too many timeout(9) initialization functions and macros.
Let's slim it down and combine some interfaces.

- Remove timeout_set_kclock(), TIMEOUT_INITIALIZER_KCLOCK().
- Expand timeout_set_flags(), TIMEOUT_INITIALIZER_FLAGS() to accept
an additional "kclock" parameter.
- Reimplement timeout_set(), timeout_set_proc() with timeout_set_flags().
- Reimplement TIMEOUT_INITIALIZER() with TIMEOUT_INITIALIZER_FLAGS().
- Update the sole timeout_set_flags() user to pass a kclock parameter.
- Update the sole timeout_set_kclock() user to call timeout_set_flags().
- Update the sole TIMEOUT_INITIALIZER_FLAGS() user to provide a kclock
parameter.

The timeout(9) code is now a bit out of sync with the manpage. This
will be corrected in a subsequent commit.

ok kn@

date 2022-11-11T18:53:29Z
author krw
files src/sys/kern/subr_disk.c log diff annotate
message Revert last until we can guarantee gh_guid can't escape to the
d_uid written to disk.