openbsd
3 years agobtrace(8): init and update timespec for BEGIN/END event
dv [Wed, 23 Jun 2021 11:24:01 +0000 (11:24 +0000)]
btrace(8): init and update timespec for BEGIN/END event

BEGIN and END use a fake dt(4) event, so in order to use the nsecs
var or time() it needs a timespec set. Init for BEGIN and update
at END.

ok mpi@

3 years agoGarbage collect prototoype for ssl_parse_serverhello_tlsext() which
tb [Wed, 23 Jun 2021 11:12:33 +0000 (11:12 +0000)]
Garbage collect prototoype for ssl_parse_serverhello_tlsext() which
was removed in t1_lib.c r1.141.

3 years agoaugment the global pf state list with its own locks.
dlg [Wed, 23 Jun 2021 06:53:51 +0000 (06:53 +0000)]
augment the global pf state list with its own locks.

before this, things that iterated over the global list of pf states
had to take the net, pf, or pf state locks. in particular, the
ioctls that dump the state table took the net and pf state locks
before iterating over the states and using copyout to export them
to userland. when we tried replacing the use rwlocks with mutexes
under the pf locks, this blew up because you can't sleep when holding
a mutex and there's a sleeping lock used inside copyout.

this diff introduces two locks around the global state list: a mutex
that protects the head and tail of the list, and an rwlock that
protects the links between elements in the list. inserts on the
state list only occur during packet handling and can be done by
taking the mutex and putting the state on the tail before releasing
the mutex. iterating over states is only done from thread/process
contexts, so we can take a read lock, then the mutex to get a
snapshot of the head and tail pointers, and then keep the read lock
to iterate between the head and tail points. because it's a read
lock we can then take other sleeping locks (eg, the one inside
copyout) without (further) gymnastics. the pf state purge code takes
the rwlock exclusively and the mutex to remove elements from the
list.

this allows the ioctls and purge code to loop over the list
concurrently and largely without blocking the creation of states
when pf is processing packets.

pfsync also iterates over the state list when doing bulk sends,
which the state purge code needs to be careful around.

ok sashan@

3 years agopf_purge_expired_states can check the time once instead of for every state.
dlg [Wed, 23 Jun 2021 05:51:27 +0000 (05:51 +0000)]
pf_purge_expired_states can check the time once instead of for every state.

3 years agopfsync_undefer_notify needs to be careful before dereferecing state keys.
dlg [Wed, 23 Jun 2021 05:43:53 +0000 (05:43 +0000)]
pfsync_undefer_notify needs to be careful before dereferecing state keys.

pfsync_undefer_notify uses the state keys to look up the address
family, which is used to figure out if it should call ipv4 or ipv6
functions. however, the pf state purge code can unlink a state from
the trees (ie, the state keys get removed) while the pfsync defer
code is holding a reference to it and expects to be able to send
the deferred packet in the future. we can test if the state keys
are set by checking if the timeout state is PFTM_UNLINK or not.

this currently relies on both pf_remove_state and pfsync_undefer_notify
being called with the NET_LOCK held. this probably needs to be
rethought later but is good enough for now.

found the hard way on a production firewall at work.

3 years agorework pf_state_expires to avoid confusion around state->timeout.
dlg [Wed, 23 Jun 2021 04:16:32 +0000 (04:16 +0000)]
rework pf_state_expires to avoid confusion around state->timeout.

im going to make it so pf_purge_expired_states() can gather states
largely without sharing a lock with pfsync or actual packet processing
in pf. if pf or pfsync unlink a state while pf_purge_expired_states
is looking at it, we can race with some checks and fall over a
KASSERT.

i'm fixing this by having the caller of pf_state_expires read
state->timeout first, do it's checks, and then pass the value as
an argument into pf_state_expires. this means there's a consistent
view of the state->timeout variable across all the checks that
pf_purge_expired_states in particular does. if pf/pfsync does change
the timeout while pf_purge_expired_states is looking at it, the
worst thing that happens is that it doesn't get picked as a candidate
for purging in this pass and will have to wait for the next sweep.

ok sashan@ as part of a bigger diff

3 years agosubstantially shorten the usage() message
deraadt [Wed, 23 Jun 2021 02:53:44 +0000 (02:53 +0000)]
substantially shorten the usage() message
pieces by jmc, pieces by me

3 years agoreduce verbosity in usage and make it match SYNOPSIS;
jmc [Tue, 22 Jun 2021 20:19:28 +0000 (20:19 +0000)]
reduce verbosity in usage and make it match SYNOPSIS;
i reformatted it to match 80w, and removed two functions that
had been used to populate usage: getdistoptlist and msgprusage;

ok millert

3 years agoreduce verbosity in usage and make it match SYNOPSIS;
jmc [Tue, 22 Jun 2021 20:16:36 +0000 (20:16 +0000)]
reduce verbosity in usage and make it match SYNOPSIS;
ok millert

3 years agoreduce verbosity in usage and make it match SYNOPSIS;
jmc [Tue, 22 Jun 2021 20:14:25 +0000 (20:14 +0000)]
reduce verbosity in usage and make it match SYNOPSIS;
ok millert

3 years agoreduce verbosity in usage and make it match SYNOPSIS;
jmc [Tue, 22 Jun 2021 20:12:17 +0000 (20:12 +0000)]
reduce verbosity in usage and make it match SYNOPSIS;
ok millert

3 years agozap wonky commas;
jmc [Tue, 22 Jun 2021 20:01:19 +0000 (20:01 +0000)]
zap wonky commas;

3 years agoReduce verbosity in tset/reset usage()
tb [Tue, 22 Jun 2021 18:33:48 +0000 (18:33 +0000)]
Reduce verbosity in tset/reset usage()

from jmc, ok kn

3 years agoHoist initialization of _nc_progname to start of main()
tb [Tue, 22 Jun 2021 18:32:24 +0000 (18:32 +0000)]
Hoist initialization of _nc_progname to start of main()

This way early calls to err(), failed() and usage() show "reset"
instead of "tset" if the program was invoked as reset(1).

Issue noted by jmc
ok kn

3 years agoClarify tls_config_set_*_file() file I/O semantics
kn [Tue, 22 Jun 2021 17:59:48 +0000 (17:59 +0000)]
Clarify tls_config_set_*_file() file I/O semantics

tls_config_set_*_file(3) do not just set the file paths like
tls_config_set_*_path(3) do, they do load the given file(s) into memory
directly using tls_config_load_file().

This distinction is important because it means a later tls_connect(3)
will not do any file I/O (at least wrt. those files), which is relevant when
for example pleding without "[rwc]path" after loading files into memory and
before doing tls_connect(3).

The manual's current wording made me use the following due to above way of
pledging a program:
tls_load_file()
tls_config_set_ca_mem()
tls_unload_file()

While in fact a single tls_config_set_ca_file() call does the same.

tls_config.c r1.26 (Aug 2016) change the code but forgot to amend the manual
as noted by tb, thanks.

Feedback OK tb

3 years agoAdjust expected output after the change to show more proper info in Adj-RIB-Out
claudio [Tue, 22 Jun 2021 17:57:07 +0000 (17:57 +0000)]
Adjust expected output after the change to show more proper info in Adj-RIB-Out

3 years agobwfm(4) on PCI isn't really MPSAFE, and I'm not sure how this flag
patrick [Tue, 22 Jun 2021 16:36:59 +0000 (16:36 +0000)]
bwfm(4) on PCI isn't really MPSAFE, and I'm not sure how this flag
even got there in the first place.  I've been wondering why I have
seen a bit of mbuf corruption here and there since I put the bwfm(4)
M.2 PCIe card into my arm64 machine.  Well, duh.

3 years agoPp not required before list items;
jmc [Tue, 22 Jun 2021 15:01:55 +0000 (15:01 +0000)]
Pp not required before list items;

3 years agoreduce verbosity of usage(), making it match SYNOPSIS;
jmc [Tue, 22 Jun 2021 14:52:33 +0000 (14:52 +0000)]
reduce verbosity of usage(), making it match SYNOPSIS;
ok kettenis

3 years agoreduce verbosity of usage(); keep it the same as SYNOPSIS, wrapped at 80w.
jmc [Tue, 22 Jun 2021 14:51:29 +0000 (14:51 +0000)]
reduce verbosity of usage(); keep it the same as SYNOPSIS, wrapped at 80w.
lowercase for "usage", and add -e, which was missing;

ok kettenis

3 years agoThe values for blocks and offset in -b should be treated as 512-byte block
krw [Tue, 22 Jun 2021 14:01:58 +0000 (14:01 +0000)]
The values for blocks and offset in -b should be treated as 512-byte block
counts.

Tweak man page accordingly.

Requested by deraadt@ and kettenis@.

3 years agoFix uninitialized variables introduced in rev 1.361
jca [Mon, 21 Jun 2021 22:09:14 +0000 (22:09 +0000)]
Fix uninitialized variables introduced in rev 1.361

Thankfully clang elided the code in an almost harmless way (at least on
amd64 GENERIC.MP).  Spotted by chance when building kernels
with -Wno-error=uninitialized.

ok dlg@ sashan@ bluhm@

3 years agoChange tb_freq to uint64_t. This prevents an overflow in the riscv64
kettenis [Mon, 21 Jun 2021 15:19:39 +0000 (15:19 +0000)]
Change tb_freq to uint64_t.  This prevents an overflow in the riscv64
implementation of delay(9).

ok deraadt@

3 years agobye bye -o
espie [Mon, 21 Jun 2021 15:17:32 +0000 (15:17 +0000)]
bye bye -o

3 years agoChange tb_freq to uint64_t. This prevents an overflow in the riscv64
kettenis [Mon, 21 Jun 2021 15:05:51 +0000 (15:05 +0000)]
Change tb_freq to uint64_t.  This prevents an overflow in the riscv64
implementation of delay(9).

ok deraadt@

3 years agocode is obvious, comments not required
deraadt [Mon, 21 Jun 2021 14:39:30 +0000 (14:39 +0000)]
code is obvious, comments not required

3 years agodelete old debugging code
deraadt [Mon, 21 Jun 2021 14:39:05 +0000 (14:39 +0000)]
delete old debugging code

3 years agounder some circumstances, we end up with libexecinfo -> BaseSystem being
espie [Mon, 21 Jun 2021 14:36:48 +0000 (14:36 +0000)]
under some circumstances, we end up with libexecinfo -> BaseSystem being
recorded as a new dependency.  Even though ForwardDependencies normally
takes care of that, with tags, this is not enough.

(this happens only because libexecinfo was a "tight" dependency, thus
resulting in a large UpdateSet, and when some of the objects did require
tags in the new package, and when the order of things meant that BaseSystem
was considered a bit early).

Since there's no handle at this point, a dirty but efficient test vs
BaseSystem will do (which is not a valid normal package name anyhow)

tested to fix the obnoxious warning landry@ saw, which I was able to
reproduce on a box...

3 years agocorrect riscv64 blocks
deraadt [Mon, 21 Jun 2021 14:20:20 +0000 (14:20 +0000)]
correct riscv64 blocks
discussion with espie kettenis jsg

3 years agoAdd GnuTLS interoperability test in appstest.sh
inoguchi [Mon, 21 Jun 2021 13:29:05 +0000 (13:29 +0000)]
Add GnuTLS interoperability test in appstest.sh

3 years agoWrap #define nitems in #ifndef nitems/#endif.
krw [Mon, 21 Jun 2021 13:17:20 +0000 (13:17 +0000)]
Wrap #define nitems in #ifndef nitems/#endif.

While here fix a misplaced '(' to make this nitems the same as
all its friends.

Pointed out by okan@

3 years agoFix ieee80211_node leak in iwm(4) and iwx(4).
stsp [Mon, 21 Jun 2021 10:19:21 +0000 (10:19 +0000)]
Fix ieee80211_node leak in iwm(4) and iwx(4).

CVS commit mPRyhYmlmonmI11J which added support for Rx aggregation offload
contains a node leak in the rx_reorder() function. Node leaks will cause
the driver to get stuck when roaming between access points.
Add missing calls to ieee80211_release_node() to fix this.

ok mpi@

3 years agosync
deraadt [Mon, 21 Jun 2021 06:10:20 +0000 (06:10 +0000)]
sync

3 years agovmd(8): support variable length vionet rx descriptor chains
dv [Mon, 21 Jun 2021 02:38:18 +0000 (02:38 +0000)]
vmd(8): support variable length vionet rx descriptor chains

The original implementation of the virtio network device assumed a
driver would only provide a 2-descriptor chain for receiving packets.
The virtio spec allows for variable length chains and drivers, in
practice, construct them when they use a sufficiently large MTU.

This change lets the device use variable length chains provided by
the driver, thus allowing for drivers to set an MTU up to the
underlying host-side tap(4)'s limit of TUNMRU (16384).

Size limitations are now enforced on both tx and rx-side dropping
anything violating the underlying tap(4) min and max limits.

More work is needed to increase the read(2) buffer in use by vmd
to prevent packet truncation.

OK mlarkin@

3 years agoAdd -A option to "safely" initialize a GPT without removing
krw [Mon, 21 Jun 2021 02:05:30 +0000 (02:05 +0000)]
Add -A option to "safely" initialize a GPT without removing
special boot partitions needed by some hardware. Make it
difficult to add, delete or modify those partitions with 'fdisk
-e'.

Trim back and correct syntax in usage(). Whack at man page
verbiage.

Suggestions and ok deraadt@

3 years agoWe need to store the flagged passed to sigsetjmp(3) and use it in
kettenis [Sun, 20 Jun 2021 20:43:50 +0000 (20:43 +0000)]
We need to store the flagged passed to sigsetjmp(3) and use it in
siglongjmp(3) to decide wehther we need to restore the signal mask.

ok deraadt@, drahn@

3 years agoAdjust snmp regress to recent changes
martijn [Sun, 20 Jun 2021 20:08:19 +0000 (20:08 +0000)]
Adjust snmp regress to recent changes

OK sthen@

3 years agoAdjust snmpd regress to recent changes
martijn [Sun, 20 Jun 2021 20:06:43 +0000 (20:06 +0000)]
Adjust snmpd regress to recent changes

OK sthen@

3 years agoChange the authentication protocol (-a) default to SHA-256 and the privacy
martijn [Sun, 20 Jun 2021 20:02:14 +0000 (20:02 +0000)]
Change the authentication protocol (-a) default to SHA-256 and the privacy
protocol (-x) default to AES. The old defaults are just not sane anymore.

OK sthen@

3 years agoChange default user auth to hmac-sha256 and enc to aes.
martijn [Sun, 20 Jun 2021 19:59:42 +0000 (19:59 +0000)]
Change default user auth to hmac-sha256 and enc to aes.
The old defaults are just not sane anymore.

OK sthen@

3 years agoTighten default security for snmpd(8). This is done by doing several
martijn [Sun, 20 Jun 2021 19:55:48 +0000 (19:55 +0000)]
Tighten default security for snmpd(8). This is done by doing several
things:
- Only allow SNMPv3 by default. SNMPv1 and SNMPv2c can be enabled by
  setting the new snmpv* flags on the "liston on" statements.
- Remove the default community names. They're not secure to use.
- Change the default seclevel to enc.

Initial idea, help from and OK sthen@

3 years agoreplace the Oo/Oc block of -chs in SYNOPSIS with a simple Op: the block
jmc [Sun, 20 Jun 2021 19:40:06 +0000 (19:40 +0000)]
replace the Oo/Oc block of -chs in SYNOPSIS with a simple Op: the block
would have been written this way because of the old args limit, but the
extensions to -b expose a nasty line wrap when written that way;

3 years agofew more Ns in the -b option description
deraadt [Sun, 20 Jun 2021 18:47:37 +0000 (18:47 +0000)]
few more Ns in the -b option description

3 years agoMake -b available to architectures other than amd64 and i386.
krw [Sun, 20 Jun 2021 18:44:19 +0000 (18:44 +0000)]
Make -b available to architectures other than amd64 and i386.

Extend the syntax to allow the boot partition offset and boot
partition type to be specified if needed.

ok deraadt@ kettenis@

3 years agoMystery bag of cleanups -- mostly removing old debug code, or moving
deraadt [Sun, 20 Jun 2021 17:57:10 +0000 (17:57 +0000)]
Mystery bag of cleanups -- mostly removing old debug code, or moving
local variables to just before they are needed.
ok kettenis

3 years agoMake sure we program the baud rate divisor register. Without this,
kettenis [Sun, 20 Jun 2021 17:55:37 +0000 (17:55 +0000)]
Make sure we program the baud rate divisor register.  Without this,
opening the tty corresponding to a non-console device will hang the
machine.

ok deraadt@

3 years agoSkip disabled cpus (usually service cpus without full functionality).
deraadt [Sun, 20 Jun 2021 16:51:37 +0000 (16:51 +0000)]
Skip disabled cpus (usually service cpus without full functionality).
cpumatch will also ignore them, but skipping them here avoids increment
of hw.cpusfound
ok jsg

3 years agouse __riscv instead of __riscv64
deraadt [Sun, 20 Jun 2021 16:48:50 +0000 (16:48 +0000)]
use __riscv instead of __riscv64

3 years agoAdd a test case for fmt_scaled.c r1.20
tb [Sun, 20 Jun 2021 14:09:59 +0000 (14:09 +0000)]
Add a test case for fmt_scaled.c r1.20

3 years agoscan_scaled: fix rescaling for negative numbers
tb [Sun, 20 Jun 2021 14:08:42 +0000 (14:08 +0000)]
scan_scaled: fix rescaling for negative numbers

As found by djm by fuzzing ssh, scan_scaled can overflow for negative
numbers when rescaling is needed. This is because the rescaled fractional
part is added without taking the sign into account.

ok ian jca

3 years agoReinstate locks around uvm_fault calls from upageflttrap and kpageflttrap
sthen [Sun, 20 Jun 2021 10:58:36 +0000 (10:58 +0000)]
Reinstate locks around uvm_fault calls from upageflttrap and kpageflttrap
on i386.  This is a backout of revision 1.152.

Kernel crash with messages printed concurrently from multiple CPUs
occasionally seen during ports build:

"WARNING: SPL NOT LOWERED ON TRAP EXIT"

and these panics

ddb{1}> sh panic
cpu1: uvm_fault(0xd470a0a0, 0xcf9b7000, 0, 1) -> e
cpu3: kernel diagnostic assertion "!_kernel_lock_held()" failed: file "/usr/src/sys/uvm/uvm_map.c", line 2707

3 years agoPut (boot) filename, next-server, host-name and domain-name into lease
florian [Sun, 20 Jun 2021 08:31:45 +0000 (08:31 +0000)]
Put (boot) filename, next-server, host-name and domain-name into lease
file for the installer.

3 years agoDon't try to install a default route with route(8) later on if we are
florian [Sun, 20 Jun 2021 08:31:03 +0000 (08:31 +0000)]
Don't try to install a default route with route(8) later on if we are
using inet autoconf, like we do with "dhcp" and "inet6 autoconf".
OK kn

3 years agoMove towards a 7.1 OpenBGPD release
claudio [Sun, 20 Jun 2021 08:05:47 +0000 (08:05 +0000)]
Move towards a 7.1 OpenBGPD release

3 years agoregen
jsg [Sun, 20 Jun 2021 06:40:52 +0000 (06:40 +0000)]
regen

3 years agoadd some devices found on the intel nuc10i7fnh
jsg [Sun, 20 Jun 2021 06:40:12 +0000 (06:40 +0000)]
add some devices found on the intel nuc10i7fnh

For the thunderbolt controller, while a public datasheet with product
ids and marketing names can't be found we know these ids are for the two
channel version of the thunderbolt 3 controller codenamed titan ridge
from public patches by Intel employees.  There are two channels per port
and the only single port titan ridge described on ark.intel.com is the
JHL7340.  The ids included with lspci refer to these devices as JHL7540
but that is a four channel / two port controller.

initial patch from fkr

3 years agoAssert that fpu_load() only gets called with the FPU "off".
kettenis [Sat, 19 Jun 2021 22:11:08 +0000 (22:11 +0000)]
Assert that fpu_load() only gets called with the FPU "off".

ok drahn@

3 years agoC version of fabs(), for now
deraadt [Sat, 19 Jun 2021 18:43:28 +0000 (18:43 +0000)]
C version of fabs(), for now
turns out same as a diff drahn didn't commit
ok kettenis

3 years agozap trailing whitespace
tb [Sat, 19 Jun 2021 18:28:51 +0000 (18:28 +0000)]
zap trailing whitespace

3 years agoCorrectly handle epoch wrapping in dtls1_get_bitmap().
jsing [Sat, 19 Jun 2021 17:21:39 +0000 (17:21 +0000)]
Correctly handle epoch wrapping in dtls1_get_bitmap().

Due to a type bug that has been present in DTLS since the code was first
committed in 2005, dtls1_get_bitmap() fails to handle next epoch correctly
when the epoch is currently 0xffff (and wraps to zero).

For various reasons unknown, the epoch field in the SSL3_RECORD_INTERNAL
(formerly SSL3_RECORD) was added as unsigned long (even though the value
is an unsigned 16 bit value on the wire, hence cannot exceed 0xffff),
however was added to other code as unsigned short.

Due to integer promotion, the r_epoch value is incremented by one to
become 0x10000, before being cast to an unsigned long and compared to
the value pulled from the DTLS record header (which is zero). Strangely
0x10000 != 0, meaning that we drop the DTLS record, instead of queueing
it for the next epoch.

Fix this issue by using more appropriate types and pulling up the
calculation of the next epoch value for improved readability.

ok inoguchi@ tb@

3 years agoAdd DTLS test cases that use non-zero initial epochs.
jsing [Sat, 19 Jun 2021 17:11:34 +0000 (17:11 +0000)]
Add DTLS test cases that use non-zero initial epochs.

In particular, test handling of 0xfffe and 0xffff - the latter results in
wrapping to zero for the next epoch. One of these tests triggers a known
bug in libssl, which will be fixed following this commit.

3 years agoProvide the ability to set the initial DTLS epoch value.
jsing [Sat, 19 Jun 2021 16:52:47 +0000 (16:52 +0000)]
Provide the ability to set the initial DTLS epoch value.

This allows for regress to test edge cases for epoch handling.

ok tb@

3 years agoInitialise the epoch for the DTLS processed and unprocessed queues.
jsing [Sat, 19 Jun 2021 16:38:27 +0000 (16:38 +0000)]
Initialise the epoch for the DTLS processed and unprocessed queues.

Currently these only get correctly initialised when
dtls1_process_buffered_records() is called - while this works it is more
accidental than intentional.

ok tb@

3 years agoAdd more complex DTLS tests for delay/reordering.
jsing [Sat, 19 Jun 2021 16:29:51 +0000 (16:29 +0000)]
Add more complex DTLS tests for delay/reordering.

These tests exercise the various queues and delayed processing that exists
in the DTLS code.

3 years agoExpand comment that details why two DTLS tests currently fail.
jsing [Sat, 19 Jun 2021 15:52:41 +0000 (15:52 +0000)]
Expand comment that details why two DTLS tests currently fail.

Two tests currently fail (and are disabled) due to a flaw in the DTLSv1.0
specification - this flaw was addressed in DTLSv1.2, however our DTLS
server code still needs to support the fix.

Quoting RFC 6347 section 4.2.4:

"This requirement applies to DTLS 1.0 as well, and though not explicit in
 [DTLS1], it was always required for the state machine to function
 correctly."

In otherwords, both the original DTLS implementation and the DTLSv1.0
specification have a broken state machine, resulting in possible dead lock.

3 years agoProvide the ability to delay/reorder DTLS packets.
jsing [Sat, 19 Jun 2021 15:33:37 +0000 (15:33 +0000)]
Provide the ability to delay/reorder DTLS packets.

Add a test that delays the client CCS, resulting in it arriving after the
client Finished message.

3 years agosync with riscv64.html
jsg [Sat, 19 Jun 2021 14:34:19 +0000 (14:34 +0000)]
sync with riscv64.html

3 years agotimecounting: add FRAC_TO_NSEC(), BINTIME_TO_NSEC()
cheloha [Sat, 19 Jun 2021 13:49:39 +0000 (13:49 +0000)]
timecounting: add FRAC_TO_NSEC(), BINTIME_TO_NSEC()

Refactor the fraction-to-nanosecond conversion from BINTIME_TO_TIMESPEC()
into a dedicated routine, FRAC_TO_NSEC(), so we can reuse it elsewhere.

Then add a new BINTIME_TO_NSEC() function to sys/time.h to deduplicate
conversion code in nsecuptime(), getnsecuptime(), and tc_setclock().

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

ok dlg@

3 years agosync
deraadt [Sat, 19 Jun 2021 05:36:30 +0000 (05:36 +0000)]
sync

3 years agoarm64 -> riscv64
jsg [Sat, 19 Jun 2021 03:10:17 +0000 (03:10 +0000)]
arm64 -> riscv64

3 years agobootaa64.efi -> bootriscv64.efi
jsg [Sat, 19 Jun 2021 03:08:16 +0000 (03:08 +0000)]
bootaa64.efi -> bootriscv64.efi

3 years agoadd riscv64 to allarchs
jsg [Sat, 19 Jun 2021 03:06:36 +0000 (03:06 +0000)]
add riscv64 to allarchs

3 years agotimeout(9): change argument order for timeout_set_kclock()
cheloha [Sat, 19 Jun 2021 02:05:33 +0000 (02:05 +0000)]
timeout(9): change argument order for timeout_set_kclock()

Move the kclock argument before the flags argument.  XORing a bunch of
flags together may "sprawl", and I'd rather have any sprawl at the end
of the parameter list.

timeout_set_kclock() is undocumented and there is only one caller, so
no big refactor required.

Best to do this argument order shuffle before any bigger refactors of
e.g. timeout_set(9).

3 years agooce(4) in RAMDISK for riscv64
mlarkin [Sat, 19 Jun 2021 01:17:34 +0000 (01:17 +0000)]
oce(4) in RAMDISK for riscv64

3 years agoEnable oce(4) for riscv64
mlarkin [Fri, 18 Jun 2021 22:44:21 +0000 (22:44 +0000)]
Enable oce(4) for riscv64

"free commit" kettenis@

3 years agosync
deraadt [Fri, 18 Jun 2021 22:30:35 +0000 (22:30 +0000)]
sync

3 years agoalarm.3: miscellaneous improvements to alarm(3) documentation
cheloha [Fri, 18 Jun 2021 22:21:29 +0000 (22:21 +0000)]
alarm.3: miscellaneous improvements to alarm(3) documentation

Improve the alarm(3) manpage:

- Better one-line description of the interface.

- Carefully describe what alarm(3) actually does.  In particular, the
  first paragraph of the current DESCRIPTION is misleading in several
  ways.

- Remove mention of the 100 million second limit.  As of kern_time.c v1.154,
  setitimer(2) no longer has this limit on OpenBSD.

- An alarm is "pending" if it has been scheduled but has not yet
  "expired".

- Rewrite RETURN VALUES. Remind the reader that calling alarm(3)
  cancels any pending alarm.  Enumerate all the cases where alarm(3)
  could return zero.

- Remove all descriptions of errors and errno.  With the removal of
  the 100 million second limit, alarm(3) basically cannot fail on
  OpenBSD unless the stack is corrupted.

  Unfortunately, the standard does not prescribe a portable return
  value to report an error to the caller.

- Add a CAVEATS section.  Discourage use of alarm(3) and setitimer(2)'s
  ITIMER_REAL timer in the same program.

With input from millert@, deraadt@, and jmc@.

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

ok millert@, jmc@

3 years agoWhen we do a context switch, always set the FPU to "off" for the old proc.
kettenis [Fri, 18 Jun 2021 21:52:47 +0000 (21:52 +0000)]
When we do a context switch, always set the FPU to "off" for the old proc.
Disable the optimization to mark the new proc "clean" since it causes
random failures in regress.  Hopefully we can revisit this soon.

ok drahn@

3 years agoProvide directions on how to install Unmatched
drahn [Fri, 18 Jun 2021 21:32:06 +0000 (21:32 +0000)]
Provide directions on how to install Unmatched
ok jsg@(with suggested improvements) mlarkin@

3 years agoNeed to enable interrupts while processing supervisor traps as well.
kettenis [Fri, 18 Jun 2021 21:05:16 +0000 (21:05 +0000)]
Need to enable interrupts while processing supervisor traps as well.

yikes deraadt@, ok mlarkin@

3 years agodo not guess at MP support yet.
deraadt [Fri, 18 Jun 2021 20:58:16 +0000 (20:58 +0000)]
do not guess at MP support yet.

3 years agoRemove SSL_CTX_set_read_ahead() calls - it is now the default for DTLS.
jsing [Fri, 18 Jun 2021 18:26:38 +0000 (18:26 +0000)]
Remove SSL_CTX_set_read_ahead() calls - it is now the default for DTLS.

3 years agosetitimer(2): increase timer limit to UINT_MAX seconds
cheloha [Fri, 18 Jun 2021 15:59:14 +0000 (15:59 +0000)]
setitimer(2): increase timer limit to UINT_MAX seconds

Currently setitimer(2) rejects timers larger than 100 million seconds
and sets EINVAL.

With the change to kclock timeouts there is no longer any reason to
use this arbitrary value.  Kclock timeouts support the full range of a
timespec, so we can increase the upper bound without practical risk of
arithmetic overflow.

If we push the limit to UINT_MAX we can support the full input range
of alarm(3).  We can then simplify the alarm.3 manpage in a separate
patch.

We can push the limit even higher in the future if we find software
that doesn't like the UINT_MAX limit.  Until then, UINT_MAX seconds
(over 68 years) is plenty for all practical timers.

ok claudio@

3 years agoThe crypto(9) framework used by IPsec runs on a kernel task that
bluhm [Fri, 18 Jun 2021 15:34:21 +0000 (15:34 +0000)]
The crypto(9) framework used by IPsec runs on a kernel task that
is protected by kernel lock.  There were crashes in swcr_authenc()
when it was accessing swcr_sessions.  As a quick fix, protect all
calls from network stack to crypto with kernel lock.  This also
covers the rekeying case that is called from pfkey via tdb_init().
OK mvs@

3 years agovmd diskfmt regress: don't copy source files, cleanup disk images
dv [Fri, 18 Jun 2021 14:35:59 +0000 (14:35 +0000)]
vmd diskfmt regress: don't copy source files, cleanup disk images

Previous version of the diskfmt regress tests for vmd(8) would copy
source files from the tree in order to compile them. Using some of
the ssh regress tests as inspiration, use the .PATH to allow building
object files from other parts of the tree in place.

Since 4G disk images are made as part of the test, clean those up
when done by adding in a proper REGRESS_CLEANUP target.

"go for it" mlarkin@

3 years agoLimit regress libexecinfo to amd64 or llvm >=12.
mortimer [Fri, 18 Jun 2021 14:09:31 +0000 (14:09 +0000)]
Limit regress libexecinfo to amd64 or llvm >=12.

Only amd64 has unwind info by default, so this regress test only works
on amd64. In llvm12, more architectures have unwind info by default, so
this test should work on those architectures.

Found by bluhm. OK bluhm@

3 years agoEnable 32-bit I/O addressing. This gets rid of the io address conflict
kettenis [Fri, 18 Jun 2021 12:12:22 +0000 (12:12 +0000)]
Enable 32-bit I/O addressing.  This gets rid of the io address conflict
messages on the HiFive Unmatched.

ok patrick@

3 years agospecial is SMALL
florian [Fri, 18 Jun 2021 11:46:06 +0000 (11:46 +0000)]
special is SMALL

3 years agofix SMALL build
florian [Fri, 18 Jun 2021 11:44:48 +0000 (11:44 +0000)]
fix SMALL build

3 years agospecial is SMALL
florian [Fri, 18 Jun 2021 11:43:38 +0000 (11:43 +0000)]
special is SMALL

3 years agoMention %1 under choose-tree also.
nicm [Fri, 18 Jun 2021 07:46:54 +0000 (07:46 +0000)]
Mention %1 under choose-tree also.

3 years agorecognise BCM5762 B0
jsg [Fri, 18 Jun 2021 06:53:42 +0000 (06:53 +0000)]
recognise BCM5762 B0
from Brad

3 years agoThe pmap needs to know which CPUs to send IPIs when TLB entries
guenther [Fri, 18 Jun 2021 06:17:28 +0000 (06:17 +0000)]
The pmap needs to know which CPUs to send IPIs when TLB entries
need to be invalidated.  Instead of keeping a bitset of CPUs in
each pmap, have each cpu_info track which pmap it has loaded: replace
pmap->pm_cpus with cpu_info->ci_proc_pmap.  This reduces the atomic
operations (and cache thrashing) and simplifies cpu_switchto()

Also, fix a defect in cpu_switchto()'s "am I loading the same cr3?"
test: ignore the CR3_REUSE_PCID bit when checking that.  This makes
switching between kernel threads slightly less costly.

over a week in snaps with no complaints
looks ok to mlarkin@ kettenis@ mpi@

3 years agoinitial plic(4) sfcc(4) sfclock(4)
jsg [Fri, 18 Jun 2021 04:29:09 +0000 (04:29 +0000)]
initial plic(4) sfcc(4) sfclock(4)

3 years agovmd(8): handle VIRTIO_BLK_T_GET_ID, check descriptor r/w flags
dv [Thu, 17 Jun 2021 22:03:33 +0000 (22:03 +0000)]
vmd(8): handle VIRTIO_BLK_T_GET_ID, check descriptor r/w flags

Linux guests like to issue VIRTIO_BLK_T_GET_ID commands in attempts
to read the device serial number. It's not part of the virtio spec,
but has been part of QEMU and Bhyve for multiple years. It will be
landing in the next version of virtio (1.2), so this stubs out
handling for the request type. The added benefit is it helps squelch
log noise from Linux guests.

For now, no serial number is set and the request status is set to
VIRTIO_BLK_S_UNSUPP to tell the driver we don't support it.

While here, swap the response to VIRTIO_BLK_T_FLUSH{,_OUT} to be
also returning VIRTIO_BLK_S_UNSUPP. It's not negotiated nor
implemented. Lastly, add checks for validating the vioblk device
is only reading/writing descriptors with approrpriate read/write-only
flags per the virtio spec.

With input from claudio@, OK mlarkin@

3 years agosync
sthen [Thu, 17 Jun 2021 18:33:15 +0000 (18:33 +0000)]
sync

3 years agocompar is a function arg (Fa) not function name (Fn);
jmc [Thu, 17 Jun 2021 18:18:15 +0000 (18:18 +0000)]
compar is a function arg (Fa) not function name (Fn);

3 years agoAdd sfclock(4), a driver for the PRCI (Power Reset Clocking Interrupt) block
kettenis [Thu, 17 Jun 2021 16:10:50 +0000 (16:10 +0000)]
Add sfclock(4), a driver for the PRCI (Power Reset Clocking Interrupt) block
of the SiFive FU740 SoC.

ok deraadt@

3 years agoRevert previous: unref of amap outside of the KERNEL_LOCK().
mpi [Thu, 17 Jun 2021 16:10:39 +0000 (16:10 +0000)]
Revert previous: unref of amap outside of the KERNEL_LOCK().

This change introduced or exposed a leak of anons which result in system
freezes.

anton@ observed a high number of INUSE for anonpl and semarie@ saw multiple
processes waiting in the fault handler on "flt_noramX" probably the one
related to allocating an anon.

3 years agoOn OpenBSD _JBLEN is the number of slots (of type long) in jmp_buf.
kettenis [Thu, 17 Jun 2021 16:09:08 +0000 (16:09 +0000)]
On OpenBSD _JBLEN is the number of slots (of type long) in jmp_buf.
We don't need 256 slots, so change it to 32 which leaves us with a few
spare slots and is probably what was intended.

This fixes building emacs which does some insane setjmp(3)/longjmp(3)
stuff and gets upset when jmp_buf is 2048 bytes.

ok deraadt@