OpenBSD cvs log

created 2023-08-09T20:36:10Z
begin 2022-12-20T00:00:00Z
end 2022-12-27T00:00:00Z
path src/sys
commits 28

date 2022-12-21T02:23:10Z
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 prefix pf_state_key and pf_state_item struct bits to make them more unique.

this makes searching for the struct members easier, which in turn
makes tweaking code around them a lot easier too. sk_refcnt in
particular would have been a lot nicer to fiddle with than just
refcnt because pf_state structs also have a refcnt, which is annoying.

tweaks and ok sashan@
reads ok kn@

date 2022-12-21T02:31:09Z
author kevlo
files src/sys/dev/pci/if_rge.c log diff annotate
src/sys/dev/pci/if_rgereg.h log diff annotate
message Update the Rx descriptor based on the vendor driver for Linux.
This fixes a panic seen by Geoff Steckel on RTL8125 with MCLGETL.

Tested by Geoff Steckel and Nick Owens.

ok dlg@

date 2022-12-21T02:51:06Z
author dlg
files src/sys/net/pf.c log diff annotate
message consistently use the PF_REF wrappers around refcnts.

date 2022-12-21T03:02:34Z
author dlg
files src/sys/net/pf.c log diff annotate
message tiny whitespace tweak.

date 2022-12-21T07:16:03Z
author deraadt
files src/sys/kern/exec_elf.c log diff annotate
message fix a mangled comment

date 2022-12-21T07:59:02Z
author claudio
files src/sys/kern/sys_process.c log diff annotate
message The location of the aux info vector is now cached in ps_auxinfo of struct
process. Use this information to access the vector.
OK mpi@ mbuhl@ deraadt@

date 2022-12-21T09:54:23Z
author kn
files src/sys/dev/softraid.c log diff annotate
message Move duplicate code to new sr_find_discipline() helper

OK miod

date 2022-12-21T22:30:42Z
author kettenis
files src/sys/arch/arm64/arm64/cpu.c log diff annotate
src/sys/arch/arm64/arm64/intr.c log diff annotate
src/sys/arch/arm64/dev/agintc.c log diff annotate
src/sys/arch/arm64/dev/ampintc.c log diff annotate
src/sys/arch/arm64/dev/aplintc.c log diff annotate
src/sys/arch/arm64/dev/aplmbox.c log diff annotate
src/sys/arch/arm64/dev/bcm2836_intr.c log diff annotate
src/sys/arch/arm64/include/intr.h log diff annotate
message Pull enabling/disabling wakeup interrupt handling out of the aplintc(4)
DVACT_SUSPEND/DVACT_RESUME handling and push it into the MD code that
handles "suspend-to-idle". This way a failure in DVACT_SUSPEND handling
will not result in hosed interrupts on the primary interrupt controller
if we abort the suspend operation.

requested by deraadt@
ok patrick@

date 2022-12-21T23:18:09Z
author patrick
files src/sys/arch/arm64/dev/agintc.c log diff annotate
message Implement wakeup interrupt handling. This makes sure that during suspend
we only have wakeup interrupts enabled, all others are disabled.

ok kettenis@

date 2022-12-21T23:26:54Z
author patrick
files src/sys/dev/fdt/qcpdc.c log diff annotate
src/sys/dev/fdt/qcpon.c log diff annotate
src/sys/dev/fdt/qcspmi.c log diff annotate
message Have the power button trigger a wakeup from suspend.

ok kettenis@

date 2022-12-22T04:43:52Z
author dlg
files src/sys/net/toeplitz.h log diff annotate
message provide stoeplitz_n32()

date 2022-12-22T05:59:26Z
author dlg
files src/sys/conf/files log diff annotate
message use stoeplitz to generate a hash/flowid for state keys.

the hash will be used to partition work in pf and pfsync in the
future, and right now it is used as the first comparison in the rb
tree state lookup.

using stoeplitz means that pf will hash traffic the same way that
hardware using a stoeplitz key will hash incoming traffic on rings.
stoeplitz is also used by the tcp stack to generate a flow id, which
is used to pick which transmit ring is used on nics with multiple
queues too. using the same algorithm throughout the stack encourages
affinity of packets to rings and softnet threads the whole way
through.

using the hash as the first comparison in the state rb tree comparison
should encourage faster traversal of the state tree by having all
the address/port bits summarised into the single hash value. however,
tests by hrvoje popovski don't show performance changing. on the
plus side, if this change is free from a performance point of view
then it makes the future steps more straightforward.

discussed at length at h2k22
tested by sashan@ and hrvoje popovski
ok tb@ sashan@ claudio@ jmatthew@

date 2022-12-22T05:59:27Z
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 use stoeplitz to generate a hash/flowid for state keys.

the hash will be used to partition work in pf and pfsync in the
future, and right now it is used as the first comparison in the rb
tree state lookup.

using stoeplitz means that pf will hash traffic the same way that
hardware using a stoeplitz key will hash incoming traffic on rings.
stoeplitz is also used by the tcp stack to generate a flow id, which
is used to pick which transmit ring is used on nics with multiple
queues too. using the same algorithm throughout the stack encourages
affinity of packets to rings and softnet threads the whole way
through.

using the hash as the first comparison in the state rb tree comparison
should encourage faster traversal of the state tree by having all
the address/port bits summarised into the single hash value. however,
tests by hrvoje popovski don't show performance changing. on the
plus side, if this change is free from a performance point of view
then it makes the future steps more straightforward.

discussed at length at h2k22
tested by sashan@ and hrvoje popovski
ok tb@ sashan@ claudio@ jmatthew@

date 2022-12-22T15:44:02Z
author kettenis
files src/sys/arch/armv7/stand/efiboot/conf.c log diff annotate
src/sys/arch/armv7/stand/efiboot/efiboot.c log diff annotate
src/sys/arch/armv7/stand/efiboot/efiboot.h log diff annotate
message Bring over various changes from the arm64 version of this code.

ok patrick@

date 2022-12-22T19:51:11Z
author cheloha
files src/sys/arch/sparc64/sparc64/clock.c log diff annotate
src/sys/arch/sparc64/sparc64/locore.s log diff annotate
message sparc64: move retry logic out of stickcmpr_set()

In some cases, stickcmpr_set() fails to ensure that %STICK_CMPR leads
%STICK before returning to the caller. Rewriting the retry logic in C
trivially fixes the issue. So move the retry logic out into a new
function, stick_rearm().

Issue discovered by miod@, fix tested by miod@.

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

ok kettenis@

date 2022-12-23T05:35:08Z
author deraadt
files src/sys/kern/kern_pledge.c log diff annotate
message wrap a line better

date 2022-12-23T07:14:55Z
author dlg
files src/sys/net/pf.c log diff annotate
message disable the use of the has in the pf state key lookup (for now).

anton@ says the previous commit breaks ipv6 related regress tests.
disabling the use of the hash in the state key compare gets it going
again while i can figure out what's going on.

date 2022-12-23T11:29:32Z
author stsp
files src/sys/dev/pci/if_iwx.c log diff annotate
message Prevent an iwx(4) firmware error when authentication to the AP times out.

Stop session protection before tearing down firmware state after failure
to authenticate. Firmware will panic if we remove the MAC/PHY binding
while session protection is active.

test + ok kevlo@

date 2022-12-23T17:31:30Z
author kettenis
files src/sys/arch/arm64/arm64/locore.S log diff annotate
src/sys/arch/arm64/arm64/locore0.S log diff annotate
message Avoid using 1GB mappings for the identity map that we use in the early
kernel bootstrap phase and when booting the secondary CPUs. This avoids
accidentally mapping memory regions that should not be mapped (i.e. secure
memory) as all mapped memory can be accessed speculatively.

To allow the kernel to be loaded at arbitrary physical addresses (and
arbitrary virtual addresses in the future) make sure the code that builds
the page tables can handle mapping a block of memory that straddles a
1GB or 512GB boundary. This involves using two pagetable pages at all
levels except the top level and changing the link_l1_pagetable function
to accept an entry count just like link_l0_pagetable already does.

ok patrick@

date 2022-12-23T17:46:49Z
author kettenis
files src/sys/arch/arm64/arm64/cpu.c log diff annotate
src/sys/arch/arm64/include/armreg.h log diff annotate
message Add detection of EPAN feature bit.

ok deraadt@

date 2022-12-24T05:20:32Z
author dlg
files src/sys/net/pf.c log diff annotate
message fix and enable toeplitz hashing of pf_state_keys again.

the hash generated when setting up the pf pdesc struct uses outer
addresses, while the addresses used in the state table goes through
pf_state_key_addr_setup(), which does interesting things with some
ipv6 icmp values. state lookups used pf_state_key_addr_setup(), but
pf_state_key_setup copied the pdesc value, causing an inconsistency.
pf_state_key_setup now calls pf_state_key_addr_setup().

found by anton@
tested by anton@ florian@

date 2022-12-24T10:51:27Z
author patrick
files src/sys/arch/arm64/conf/GENERIC log diff annotate
src/sys/arch/arm64/conf/RAMDISK log diff annotate
message Enable pcagpio(4), and also consistently pcamux(4) while we're at it. With
this the SFP port on the ClearFog Base (CN9130) starts to work, as the SFP
slot has some GPIOs routed through a GPIO extender.

ok dlg@ kettenis@

date 2022-12-24T12:36:06Z
author patrick
files src/sys/dev/fdt/xhci_fdt.c log diff annotate
message Hook up xhci(4)'s activate function to the FDT attachment driver. This
makes the USB ports work after a suspend/resume cycle on the x13s.

ok kettenis@

date 2022-12-26T04:09:14Z
author asou
files src/sys/dev/pv/vmt.c log diff annotate
message Add close vmt.

date 2022-12-26T19:14:18Z
author miod
files src/sys/arch/macppc/dev/akbd_machdep.c log diff annotate
message Update adb_polling in akbd_cnpollc rather than akbd_cngetc; repairs ddb
input on adb machines.

date 2022-12-26T19:17:00Z
author miod
files src/sys/arch/macppc/dev/adb.c log diff annotate
message send_adb_cuda() would assume the returned value of splhigh() is the macintr
interrupt enable register; this used to be true more than 20 years ago but
the interrupt code has changed a lot since, and it is nevertheless bad
practice from md drivers to know to much about spl*() return values.

The check should become a "spl >= IPL_TTY", but management of the
adb_polling variable is good enough to need this at all.

date 2022-12-26T19:25:49Z
author miod
files src/sys/kern/vfs_subr.c log diff annotate
message Replace two (void)copystr(..., NULL) with equivalent (void)strlcpy() calls.

ok millert@

date 2022-12-26T23:50:20Z
author dv
files src/sys/arch/amd64/amd64/Attic/vmm.c log diff annotate
src/sys/arch/amd64/include/vmmvar.h log diff annotate
message vmd(8): provide a detailed e820 memory map.

When booting guests with SeaBIOS, vmd(8) supplied details about the
available guest memory via CMOS registers. Consequently, we've been
carrying some patches in the ports tree to SeaBIOS to fetch this
information like it's the 1990s.

When a vm initializes memory ranges, we now track what each range
represents. This information can be used to supply the e820 memory
map to SeaBIOS via the fw_cfg interface allowing it to properly
communicate memory ranges to a guest operating system. (This will
also allow us to drop some patches from the port.)

Given the ranges can now be marked with a purpose, this also allows
vmm(4) to switch from hard-coded mmio ranges and instead let the
information on the memory range dictate if vmm should be handling
a page fault or sending to vmd for a memory assist.

Tested by Mischa Peters and others. OK mlarkin@.