OpenBSD cvs log

created 2023-08-17T16:00:25Z
begin 2023-03-07T00:00:00Z
end 2023-03-14T00:00:00Z
path src/sys
commits 32

date 2023-03-07T10:24:11Z
author kettenis
files src/sys/dev/fdt/dwpcie.c log diff annotate
message Add some minimal initialization code for rk356x such that the kernel
doesn't hang.

ok millert@, dlg@

date 2023-03-07T20:09:48Z
author jan
files src/sys/net/if.c log diff annotate
src/sys/net/if.h log diff annotate
message Avoid enabling TSO on interfaces which are already attached to a bridge.

with tweaks from claudio and deraadt

ok claudio, bluhm

date 2023-03-08T04:43:07Z
author guenther
files src/sys/arch/alpha/alpha/machdep.c log diff annotate
src/sys/arch/alpha/alpha/trap.c log diff annotate
src/sys/arch/alpha/tc/tc_bus_mem.c log diff annotate
src/sys/arch/hppa/spmath/dfsqrt.c log diff annotate
src/sys/arch/hppa/spmath/fcnvff.c log diff annotate
src/sys/arch/hppa/spmath/fcnvfx.c log diff annotate
src/sys/arch/hppa/spmath/fcnvfxt.c log diff annotate
src/sys/arch/hppa/spmath/frnd.c log diff annotate
src/sys/arch/hppa/spmath/sfsqrt.c log diff annotate
src/sys/arch/hppa/stand/libsa/ct.c log diff annotate
src/sys/arch/i386/i386/mem.c log diff annotate
src/sys/arch/i386/i386/trap.c log diff annotate
src/sys/arch/luna88k/dev/lunaws.c log diff annotate
src/sys/arch/macppc/macppc/mainbus.c log diff annotate
src/sys/arch/macppc/pci/pchb.c log diff annotate
src/sys/arch/mips64/mips64/sendsig.c log diff annotate
src/sys/arch/sh/include/pmap.h log diff annotate
src/sys/arch/sparc64/sparc64/autoconf.c log diff annotate
src/sys/arch/sparc64/sparc64/machdep.c log diff annotate
src/sys/ddb/db_break.c log diff annotate
src/sys/ddb/db_command.c log diff annotate
src/sys/ddb/db_examine.c log diff annotate
src/sys/ddb/db_run.c log diff annotate
src/sys/ddb/db_variables.c log diff annotate
src/sys/ddb/db_watch.c log diff annotate
message Delete obsolete /* ARGSUSED */ lint comments.

ok miod@ millert@

date 2023-03-08T04:43:08Z
author guenther
files src/sys/dev/rnd.c log diff annotate
src/sys/dev/vnd.c log diff annotate
src/sys/dev/i2c/i2c_bitbang.c log diff annotate
src/sys/dev/pci/cmpci.c log diff annotate
src/sys/dev/pci/eso.c log diff annotate
src/sys/dev/pci/if_ipw.c log diff annotate
src/sys/dev/pci/if_iwi.c log diff annotate
src/sys/dev/pckbc/pckbd.c log diff annotate
src/sys/dev/usb/if_mtw.c log diff annotate
src/sys/dev/usb/if_otus.c log diff annotate
src/sys/dev/usb/if_rsu.c log diff annotate
src/sys/dev/usb/if_run.c log diff annotate
src/sys/dev/usb/if_urtwn.c log diff annotate
src/sys/isofs/cd9660/cd9660_rrip.c log diff annotate
src/sys/isofs/cd9660/cd9660_vfsops.c log diff annotate
src/sys/isofs/cd9660/cd9660_vnops.c log diff annotate
src/sys/lib/libsa/dev.c log diff annotate
src/sys/miscfs/deadfs/dead_vnops.c log diff annotate
src/sys/miscfs/fifofs/fifo_vnops.c log diff annotate
src/sys/msdosfs/msdosfs_denode.c log diff annotate
src/sys/netinet/if_ether.c log diff annotate
message Delete obsolete /* ARGSUSED */ lint comments.

ok miod@ millert@

date 2023-03-08T04:43:09Z
author guenther
files src/sys/netinet/ip_carp.c log diff annotate
src/sys/nfs/nfs_kq.c log diff annotate
src/sys/nfs/nfs_serv.c log diff annotate
src/sys/nfs/nfs_vfsops.c log diff annotate
src/sys/nfs/nfs_vnops.c log diff annotate
src/sys/sys/tree.h log diff annotate
src/sys/ufs/ext2fs/ext2fs_readwrite.c log diff annotate
src/sys/ufs/ext2fs/ext2fs_vfsops.c log diff annotate
src/sys/ufs/ext2fs/ext2fs_vnops.c log diff annotate
src/sys/ufs/ufs/ufs_vfsops.c log diff annotate
src/sys/ufs/ufs/ufs_vnops.c log diff annotate
src/sys/uvm/uvm_mmap.c log diff annotate
message Delete obsolete /* ARGSUSED */ lint comments.

ok miod@ millert@

date 2023-03-08T18:05:05Z
author cheloha
files src/sys/arch/amd64/amd64/lapic.c log diff annotate
message amd64: lapic_timer_rearm: don't reset mode, mask, divisor

The apic timer mode, mask, and divisor are set during lapic_timer_trigger().
We don't need to reset them when rearming the timer. On physical hardware
the difference is too small to measure, but skipping two apic writes may be
a bit faster when we're running in a VM.

Bochs also likes to log when the apic divisor is changed:

38569516308i[APIC0 ] set timer divide factor to 1
38569517335i[APIC0 ] set timer divide factor to 1
38569518042i[APIC0 ] set timer divide factor to 1
[...]

With this change, Bochs is a lot less noisy.

Idea from mlarkin@.

ok mlarkin@

date 2023-03-08T23:17:02Z
author bluhm
files src/sys/netinet/ip_input.c log diff annotate
message An invalid source routing IP option could overwrite kernel memory
by using a bad option length. This bug is only reachable if both
pf IP option check is disabled and IP source routing is enabled.
reported by @fuzzingrf Erg Noor
OK claudio@ deraadt@

date 2023-03-09T00:13:47Z
author chris
files src/sys/dev/pci/if_igc.c log diff annotate
message Fix comment to reflect the disabled status of Energy Efficient Ethernet.

Intel just disabled EEE for 1Gbps and 2.5Gbps modes on both i225 and i226
chips due to bugs. We already had it this way.

ok patrick@ kevlo@

date 2023-03-09T03:50:38Z
author cheloha
files src/sys/kern/kern_clockintr.c log diff annotate
src/sys/sys/clockintr.h log diff annotate
message clockintr: add a priority queue

- Add cq_pend to struct clockintr_queue. cq_pend is the list of clock
interrupts pending to run, sorted in ascending order by cl_expiration
(earliest deadline first; EDF). If the cl_expiration of two
clockintrs is equal, the first clock interrupt scheduled has priority
(FIFO).

We may need to switch to an RB tree or a min-heap in the future.
For now, there are only three clock interrupts, so a linked list
is fine.

- Add cl_flags to struct clockintr. We have one flag, CLST_PENDING.
It indicates whether the given clockintr is enqueued on cq_pend.

- Rewrite clockintr_dispatch() to operate on cq_pend. Clock
interrupts are run in EDF order until the most imminent clockintr
expires in the future.

- Add code to clockintr_establish(), clockintr_advance() and
clockintr_schedule() to enqueue/dequeue the given clockintr
on cq_est and cq_pend as needed.

- Add cq_est to struct clockintr_queue. cq_est is the list of all
clockintrs established on a clockintr_queue.

- Add a new counter, cs_spurious, to clockintr_stat. A dispatch is
"spurious" if no clockintrs are on cq_pend when we call
clockintr_dispatch().

With input from aisha@. Heavily tested by mlarkin@. Shared with
hackers@.

ok aisha@ mlarkin@

date 2023-03-09T05:56:58Z
author dlg
files src/sys/net/bpf.c log diff annotate
src/sys/net/bpf.h log diff annotate
src/sys/net/bpfdesc.h log diff annotate
message add a timeout between capturing a packet and making the buffer readable.

before this, there were three reasons that a bpf read will finish.

the first is the obvious one: the bpf packet buffer in the kernel
fills up. by default this is about 32k, so if you're only capturing
a small packet packet every few seconds, it can take a long time
for the buffer to fill up before you can read them.

the second is if bpf has been configured to enable immediate mode with
ioctl(BIOCIMMEDIATE). this means that when any packet is written into
the bpf buffer, the buffer is immediately readable. this is fine
if the packet rate is low, but if the packet rate is high you don't
get the benefit of buffering many packets that bpf is supposed to
provide.

the third mechanism is if bpf has been configured with the BIOCSRTIMEOUT
ioctl, which sets a maximum wait time on a bpf read. BIOCSRTIMEOUT
means than a clock starts ticking down when a program (eg pflogd)
reads from bpf. when the clock reaches zero then the read returns
with whatever is in the bpf packet buffer. however, there could be
nothing in the buffer, and the read will still complete.

deraadt@ noticed this behaviour with pflogd. it wants packets logged
by pf to end up on disk in a timely fashion, but it's fine with
tolerating a bit of delay so it can take advantatage of buffering
to amortise the cost of the reads per packet. it currently does
this with BIOCSRTIMEOUT set to half a second, which means it's
always waking up every half second even if there's nothing to log.

this diff adds BIOCSWTIMEOUT, which specifies a timeout from when
bpf first puts a packet in the capture buffer, and when the buffer
becomes readable.

by default this wait timeout is infinite, meaning the buffer has
to be filled before it becomes readable. BIOCSWTIMEOUT can be set
to enable the new functionality. BIOCIMMEDIATE is turned into a
variation of BIOCSWTIMEOUT with the wait time set to 0, ie, wait 0
seconds between when a packet is written to the buffer and when the
buffer becomes readable. combining BIOCSWTIMEOUT and
BIOCIMMEDIATE simplifies the code a lot.

for pflogd, this means if there are no packets to capture, pflogd
won't wake up every half second to do nothing. however, when a
packet is logged by pf, bpf will wait another half second to see
if any more packets arrive (or the buffer fills up) before the read
fires.

discussed a lot with deraadt@ and sashan@
ok sashan@

date 2023-03-09T10:29:04Z
author claudio
files src/sys/arch/sparc64/dev/vnet.c log diff annotate
message Improve vnet(4) to work better in busy conditions.
No longer limit the ifq size to a low number, increase the slots on the
DMA Ring a bit and abstract the VNET buffer size into a define.
Enqueue packets on the ring but mark the initial packet ready at the end.
This way the other ldom is not able to rush ahead and overconsume packets.
The dring indexes are passed between ldoms and can get out of sync with
causes the TX ring to stall.
Tested by myself and jan@
OK kettenis@ jan@ kn@

date 2023-03-09T13:17:28Z
author jsg
files src/sys/arch/amd64/amd64/cpu.c log diff annotate
message branches: 1.165.4;
workaround Intel Braswell/Cherry Trail mwait hang

dlg has a Dell Wyse 3040 with
cpu0: Intel(R) Atom(TM) x5-Z8350 CPU @ 1.44GHz, 480.02 MHz, 06-4c-04
cpu0: mwait min=64, max=64, C-substates=0.2.0.0.0.0.3.3, IBE
which hangs soon after the login prompt with MP kernels

This is a hardware bug described in:
Intel Atom Z8000 Processor Series Specification Update
Document Number: 332067-012
"CHT45 Processor May Not Wake From C6 or Deeper Sleep State"

tested by dlg@, ok guenther@

date 2023-03-09T19:48:42Z
author kettenis
files src/sys/arch/arm64/dev/aplpcie.c log diff annotate
message Check that a PCIe port isn't disabled in the device tree.

ok patrick@

date 2023-03-10T10:22:55Z
author kettenis
files src/sys/dev/fdt/xhci_fdt.c log diff annotate
message Take controller out of reset; makes it work on rk356x.

ok patrick@, mlarkin@

date 2023-03-10T10:54:29Z
author kettenis
files src/sys/dev/fdt/rkclock.c log diff annotate
message Implement setting the parent clock for RK356x. This includes code for
setting external parent clocks, which is needed to switch to the clock
provided by the Ethernet PHY.

ok patrick@

date 2023-03-10T11:01:52Z
author claudio
files src/sys/dev/dt/dt_dev.c log diff annotate
message Update the stack offset for the profile probe to account for the clockintr
API functions. Fixes flamegraphs on archs I could test.
OK bluhm@ miod@

date 2023-03-10T11:04:26Z
author claudio
files src/sys/dev/dt/dt_dev.c log diff annotate
message Add the necessary stack offsets for macppc so dt(4).
Tested on a G5 and G4 macppc.
OK miod@

date 2023-03-10T22:14:32Z
author bluhm
files src/sys/dev/dt/dt_dev.c log diff annotate
src/sys/dev/dt/dtvar.h log diff annotate
message Add new dt(4) ioctl DTIOCGARGS to get the types of probe arguments.
They are already tracked as strings in the kernel. Export them to
userland using one ioctl(2) for all arguments of each probe.
OK mpi@

date 2023-03-11T10:33:27Z
author aoyama
files src/sys/arch/luna88k/luna88k/romcons.c log diff annotate
message Add missing $OpenBSD$ tag.

date 2023-03-11T20:49:33Z
author miod
files src/sys/arch/alpha/stand/Makefile.inc log diff annotate
src/sys/arch/alpha/stand/boot/Makefile log diff annotate
src/sys/arch/alpha/stand/bootxx/Makefile log diff annotate
src/sys/arch/alpha/stand/netboot/Makefile log diff annotate
message Allow strip and objcopy to be overrridden, for easier cross-buildability. NFC

date 2023-03-11T20:52:02Z
author miod
files src/sys/arch/alpha/stand/Attic/headersize.c log diff annotate
message Remove long dead "tool".

date 2023-03-11T20:56:01Z
author miod
files src/sys/arch/alpha/stand/nboot/Makefile log diff annotate
src/sys/arch/alpha/stand/nboot/conf.c log diff annotate
src/sys/arch/alpha/stand/nboot/devopen.c log diff annotate
src/sys/arch/alpha/stand/nboot/disk.c log diff annotate
src/sys/arch/alpha/stand/nboot/libsa.h log diff annotate
src/sys/arch/alpha/stand/nboot/machdep.c log diff annotate
src/sys/arch/alpha/stand/nboot/prom.c log diff annotate
src/sys/arch/alpha/stand/nboot/prom_swpal.S log diff annotate
src/sys/arch/alpha/stand/nboot/promcons.c log diff annotate
src/sys/arch/alpha/stand/nboot/rpcc.S log diff annotate
message New alpha secondary boot blocks using the MI code base. Not linked to the
build yet.

date 2023-03-12T10:46:27Z
author jmatthew
files src/sys/dev/fdt/mvtemp.c log diff annotate
message Match on the Armada 380 temperature sensor, which works the same as the
CP110 sensor.

ok kettenis@

date 2023-03-12T10:50:06Z
author jmatthew
files src/sys/arch/armv7/conf/GENERIC log diff annotate
message Enable mvtemp(4)

date 2023-03-12T14:29:50Z
author kettenis
files src/sys/arch/arm64/conf/GENERIC log diff annotate
src/sys/arch/arm64/conf/RAMDISK log diff annotate
src/sys/dev/fdt/files.fdt log diff annotate
src/sys/dev/fdt/rkclock.c log diff annotate
src/sys/dev/fdt/rkclock_clocks.h log diff annotate
src/sys/dev/fdt/rkcomphy.c log diff annotate
message Add rkcomphy(3), a driver for the "naneng" combo PHY found on the RK356x
(and RK3588). This is a PIPE PHY with support for PCIe, SATA, USB3, SGMII
and QSGMII. For now only PCIe, SATA and USB3 support are implemented.
SATA support has not been tested.

Also add the refernce clocks needed by the PHYs to rkclock(4).

ok mlarkin@

date 2023-03-12T22:18:58Z
author cheloha
files src/sys/arch/landisk/conf/GENERIC log diff annotate
src/sys/arch/landisk/conf/RAMDISK log diff annotate
src/sys/arch/sh/sh/clock.c log diff annotate
message sh, landisk: set HZ=64 again

The addition of HZ to sys/kernel.h in v1.26 overrides the default
definition of HZ in sh/clock.c, changing landisk from HZ=64 to HZ=100.

Explicitly set HZ=64 in the GENERIC and RAMDISK config(8) files to can
change it from 100 back to 64.

Not sure if this is the best thing, but it does fix the problem.

Problem confirmed by, and fix tested by, miod@.

ok miod@

date 2023-03-13T07:30:11Z
author kettenis
files src/sys/dev/pci/pcidevs log diff annotate
message Add Kingston NV2 NVMe drive.

date 2023-03-13T07:30:44Z
author kettenis
files src/sys/dev/pci/pcidevs.h log diff annotate
src/sys/dev/pci/pcidevs_data.h log diff annotate
message regen

date 2023-03-13T11:59:39Z
author aoyama
files src/sys/arch/luna88k/stand/boot/Makefile log diff annotate
src/sys/arch/luna88k/stand/boot/cmd_luna88k.c log diff annotate
src/sys/arch/luna88k/stand/boot/libsa.h log diff annotate
message Add "machine poweroff" command on luna88k bootloader.

ok miod@

date 2023-03-13T20:19:22Z
author miod
files src/sys/stand/boot/vars.c log diff annotate
message "ask name" option letter is 'n' instead of 'a' on pmax and alpha for historical
(and firmware) reasons.

date 2023-03-13T20:20:13Z
author miod
files src/sys/arch/alpha/stand/nboot/Makefile log diff annotate
src/sys/arch/alpha/stand/nboot/boot.8 log diff annotate
message Add manual page.

date 2023-03-13T20:20:59Z
author miod
files src/sys/arch/alpha/stand/Makefile log diff annotate
message Switch alpha to new boot blocks.