OpenBSD cvs log

created 2024-02-11T13:40:20Z
begin 2024-02-09T00:00:00Z
end 2024-02-10T00:00:00Z
path src/sys
commits 18

date 2024-02-09T09:53:50Z
author stsp
files src/sys/dev/ic/qwx.c log diff annotate
message remove qwx debug prints for management frame events we are already handling

date 2024-02-09T09:55:17Z
author stsp
files src/sys/dev/ic/qwx.c log diff annotate
src/sys/dev/ic/qwxvar.h log diff annotate
message add missing node reference counting to qwx's Tx completion path

date 2024-02-09T09:59:01Z
author stsp
files src/sys/dev/ic/qwx.c log diff annotate
message make ifconfig display the Tx rate selected by qwx firmware

date 2024-02-09T11:05:22Z
author bluhm
files src/sys/arch/sparc64/conf/GENERIC log diff annotate
message Enable igc(4) on sparc64.
OK deraadt@ jan@

date 2024-02-09T11:24:52Z
author stsp
files src/sys/dev/pci/if_qwx_pci.c log diff annotate
message qwx pci code must include bpfilter.h, too; spotted by kettenis

date 2024-02-09T12:45:10Z
author jsg
files src/sys/dev/ic/qwx.c log diff annotate
message avoid uninitialised var use if qwx_core_fetch_bdf() errors
ok stsp@

date 2024-02-09T12:50:10Z
author bluhm
files src/sys/dev/ic/qwxvar.h log diff annotate
message Struct layout of qwx_softc should not depend on NBPFILTER.

Due to a missing #include "bpfilter.h", the size of struct qwx_softc
varied in different object files. This made the kernel crash on
arm64. To make debugging core dumps and libkvm easier, kernel
object layout should not depend on kernel config. Remove #if
NBPFILTER > 0 from struct definition.

problem analysis kettenis@
OK deraadt@ stsp@

date 2024-02-09T14:02:11Z
author bluhm
files src/sys/net/route.c log diff annotate
src/sys/netinet/in.h log diff annotate
src/sys/netinet/in_pcb.c log diff annotate
message Route cache function returns hit or miss.

The route_cache() function can easily return whether it was a cache
hit or miss. Then the logic to perform a route lookup gets a bit
simpler. Some more complicated if (ro->ro_rt == NULL) checks still
exist elsewhere.
Also use route cache in in_pcbselsrc() instead of filling struct
route manually.

OK claudio@

date 2024-02-09T14:02:12Z
author bluhm
files src/sys/netinet6/in6.h log diff annotate
src/sys/netinet6/in6_pcb.c log diff annotate
src/sys/netinet6/in6_src.c log diff annotate
message Route cache function returns hit or miss.

The route_cache() function can easily return whether it was a cache
hit or miss. Then the logic to perform a route lookup gets a bit
simpler. Some more complicated if (ro->ro_rt == NULL) checks still
exist elsewhere.
Also use route cache in in_pcbselsrc() instead of filling struct
route manually.

OK claudio@

date 2024-02-09T14:05:48Z
author stsp
files src/sys/dev/ic/qwx.c log diff annotate
message implement qwx_dp_process_rx_err()

date 2024-02-09T14:07:27Z
author stsp
files src/sys/dev/ic/qwx.c log diff annotate
src/sys/dev/ic/qwxvar.h log diff annotate
message implement qwx_dp_process_reo_status()

date 2024-02-09T14:09:19Z
author stsp
files src/sys/dev/ic/qwx.c log diff annotate
src/sys/dev/ic/qwxvar.h log diff annotate
message implement qwx_dp_rx_process_wbm_err()

date 2024-02-09T14:11:00Z
author stsp
files src/sys/dev/ic/qwx.c log diff annotate
message implement qwx_dp_process_rxdma_err()

date 2024-02-09T14:57:36Z
author bluhm
files src/sys/dev/pci/if_qwx_pci.c log diff annotate
message Include sys/lock.h to make qwx(4) compile with GENERIC kernel.

OK stsp@

date 2024-02-09T15:06:23Z
author cheloha
files src/sys/kern/kern_clockintr.c log diff annotate
message clockintr: refactor clockintr_cancel() into clockintr_cancel_locked()

Move the mutex-protected portions of clockintr_cancel() into a separate
function, clockintr_cancel_locked(), so that the code can be reused by
other callers.

Thread: https://marc.info/?l=openbsd-tech&m=170629367121800&w=2

ok mpi@

date 2024-02-09T15:22:41Z
author jan
files src/sys/dev/pci/if_vmx.c log diff annotate
message vmx(4): add missing NVLAN checks

ok bluhm@

date 2024-02-09T16:52:58Z
author cheloha
files src/sys/kern/kern_clockintr.c log diff annotate
src/sys/sys/clockintr.h log diff annotate
message clockintr: add clockintr_unbind()

The clockintr_unbind() function cancels any pending execution of the
given clock interrupt object's callback and severs the binding between
the object and its host CPU. Upon return from clockintr_unbind(), the
clock interrupt object may be rebound with a call to clockintr_bind().

The optional CL_BARRIER flag tells clockintr_unbind() to block if the
clockintr's callback function is executing at the moment of the call.
This is useful when the clockintr's arg is a shared reference and the
caller needs to be certain the reference is inactive.

Now that clockintrs can be bound and unbound repeatedly, there is more
room for error. To help catch programmer errors, clockintr_unbind()
sets cl_queue to NULL. Calls to other API functions after a clockintr
is unbound will then fault on a NULL dereference. clockintr_bind()
also KASSERTs that cl_queue is NULL to ensure the clockintr is not
already bound. These checks are not perfect, but they do catch some
common errors.

With input from mpi@.

Thread: https://marc.info/?l=openbsd-tech&m=170629367121800&w=2

ok mpi@

date 2024-02-09T17:42:18Z
author cheloha
files src/sys/dev/dt/dt_dev.c log diff annotate
src/sys/dev/dt/dt_prov_profile.c log diff annotate
src/sys/dev/dt/dtvar.h log diff annotate
src/sys/kern/kern_clock.c log diff annotate
message dt(4): move interval/profile entry points to dedicated clockintr callback

To improve the utility of dt(4)'s interval and profile probes we need
to move the probe entry points from the fixed-frequency hardclock() to
a dedicated clock interrupt callback so that the probes can fire at
arbitrary frequencies.

- Remove entry points for interval/profile probes from hardclock().

- Merge dt_prov_profile_enter(), dt_prov_interval_enter(), and
dt_prov_profile_fire() into one function, dt_clock(). This is
the now-unified callback for interval/profile probes. dt_clock()
will consume multiple events during a single execution if it is
delayed, but on platforms with high quality interrupt clocks this
should be rare.

- Each struct dt_pcb gets its own clockintr handle, dp_clockintr.

- In struct dt_pcb, replace dp_maxtick/dp_nticks with dp_nsecs,
the PCB's sampling period. Aynchronous probes must initialize
dp_nsecs to a non-zero value during dtpv_alloc().

- In struct dt_pcb, replace dp_cpuid with dp_cpu so that
dt_ioctl_record_start() knows where to bind the PCB's
dp_clockintr.

- dt_ioctl_record_start() binds, staggers, and starts all
interval/profile PCBs on the given dt_softc. Each dp_clockintr
is given a reference to its enclosing PCB so that dt_clock()
doesn't need to search for it. The staggering sort-of simulates
the current behavior under hardclock().

- dt_ioctl_record_stop() unbinds all interval/profile PCBs. The
CL_BARRIER ensures that dp_clockintr's PCB reference is not in
use by dt_clock() so that the PCB may be safely freed upon
return from dt_ioctl_record_stop(). Blocking while holding
dt_lock is not ideal, but in practice blocking in this spot is
rare and dt_clock() completes quickly on all but the oldest
hardware. An extremely unlucky thread could block for every
interval/profile PCB on the softc, but this is implausible.

DT_FA_PROFILE values are up-to-date for amd64, i386, and macppc.
Somebody with the right hardware needs to check-and-maybe-fix the
values on octeon, powerpc64, and sparc64.

Joint effort with mpi@.

Thread: https://marc.info/?l=openbsd-tech&m=170629371821879&w=2

ok mpi@