OpenBSD cvs log

created 2019-08-12T15:29:22Z
begin 2019-08-06T00:00:00Z
end 2019-08-07T00:00:00Z
path src/sys
commits 12

date 2019-08-06T06:56:29Z
author kettenis
files src/sys/dev/ic/dwiic.c log diff annotate
src/sys/dev/ic/dwiicreg.h log diff annotate
message Read the fifo depths from the appropriate configuration register and
update the values if they are non-zero and smaller than the current
hardcoded depths. Fixes dwiic(4) on Ampere eMAG.

ok patrick@, jcs@

date 2019-08-06T07:16:48Z
author anton
files src/sys/dev/diskmap.c log diff annotate
message Resolve some minor nits in diskmapioctl():

* Favor ENOTTY for unknown ioctl commands
* Return the actual error from copyinstr and copyoutstr, removes the need to
initialize the local error variable
* Do not use parens around return expressions consistently

ok visa@

date 2019-08-06T07:21:29Z
author dlg
files src/sys/dev/pci/if_vmx.c log diff annotate
message use ifiq_input so we can call if_rxr_livelocked to apply backpressure

date 2019-08-06T09:36:54Z
author dlg
files src/sys/dev/pci/if_vmx.c log diff annotate
message if the rx ring gets empty and can't be filled, retry in the future

there have been several reports that vmx gets stuck sometimes and
only comes good after it's taken down and up again. hopefully this
fixes that issue.

date 2019-08-06T10:09:37Z
author dlg
files src/sys/dev/pci/if_vmx.c log diff annotate
message i replaced a misplaced tab with g, not a space. make this work again.

date 2019-08-06T10:15:27Z
author dlg
files src/sys/dev/pci/if_vmx.c log diff annotate
src/sys/dev/pci/if_vmxreg.h log diff annotate
message have a go at using msi interrupts.

vmx has an interesting feature where config in the hypervisor can
say what type of interrupts the guest should configure for the nic,
with the options of auto, msix, msi, and intx. depending on this,
the driver should try to map the type specified and fall back from
there.

also interesting is that my guest gets "auto" from the hypervisor,
which i fall through to msi with, but an msi interrupt cannot be
mapped. i cannot see any msi interrupts in this guest actually.
there must be something funky at the platform level that we don't
like, and that prevents msi from being mapped.

if msi does get mapped, we should be able to avoid a register read
on every interrupt. that should probably provide a noticable
performance improvement if we can ever take advantage of it.

date 2019-08-06T10:54:40Z
author dlg
files src/sys/dev/pci/if_vmx.c log diff annotate
message remove some debug cruft i should have removed before the last commit.

date 2019-08-06T18:06:32Z
author kettenis
files src/sys/arch/sparc64/sparc64/ipifuncs.c log diff annotate
message Block interrupts while (attempting to) send an IPI on sun4v just like we
do on sun4u. Appears to fix random kernel hangs (often involving
fpusave_proc()) on the new ports cluster machines.

ok deraadt@

date 2019-08-06T19:24:45Z
author bluhm
files src/sys/dev/pv/if_vio.c log diff annotate
message The vio(4) interface did not recover from mbuf shortage. The logic
to start the rx tick did not work since we use if_rxr_get(). An
easy fix is to start the rx timeout every second unconditionally.
OK dlg@

date 2019-08-06T22:45:02Z
author bluhm
files src/sys/kern/vfs_syscalls.c log diff annotate
message Fix white spaces.

date 2019-08-06T22:57:54Z
author bluhm
files src/sys/net/if.c log diff annotate
src/sys/net/if_loop.c log diff annotate
src/sys/net/netisr.h log diff annotate
src/sys/netinet/ip_input.c log diff annotate
message When we needed the kernel lock for local IP packet delivery, mpi@
introduced a queue to grab the lock for multiple packets. Now we
have only netlock for both IP and protocol input. So the queue is
not necessary anymore. It just switches CPU and decreases performance.
So remove the inet and inet6 ip queue for local packets.
To get TCP running on loopback, we have to queue once between TCP
input and output of the two sockets. So use the loopback queue in
looutput() unconditionally.
OK visa@

date 2019-08-06T22:57:55Z
author bluhm
files src/sys/netinet6/ip6_input.c log diff annotate
message When we needed the kernel lock for local IP packet delivery, mpi@
introduced a queue to grab the lock for multiple packets. Now we
have only netlock for both IP and protocol input. So the queue is
not necessary anymore. It just switches CPU and decreases performance.
So remove the inet and inet6 ip queue for local packets.
To get TCP running on loopback, we have to queue once between TCP
input and output of the two sockets. So use the loopback queue in
looutput() unconditionally.
OK visa@