<feed xmlns='http://www.w3.org/2005/Atom'>
<title>wireguard-openbsd/sys, branch jd/queueboosts</title>
<subtitle>WireGuard implementation for the OpenBSD kernel</subtitle>
<id>https://git.zx2c4.com/wireguard-openbsd/atom/sys?h=jd%2Fqueueboosts</id>
<link rel='self' href='https://git.zx2c4.com/wireguard-openbsd/atom/sys?h=jd%2Fqueueboosts'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/'/>
<updated>2020-06-23T04:31:03Z</updated>
<entry>
<title>Mark interface as MPSAFE</title>
<updated>2020-06-23T04:31:03Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2020-06-23T04:21:54Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=fb099766628c04eb037969aacdcb0ff94b4cfe4f'/>
<id>urn:sha1:fb099766628c04eb037969aacdcb0ff94b4cfe4f</id>
<content type='text'>
This enables us to process queueing of different packet queues in
without NET_LOCK. Combined with the increase in txlen, this keeps our
encryption workers more active. This results in a ~30% performance
boost.
</content>
</entry>
<entry>
<title>Increase if_txmit to 64</title>
<updated>2020-06-23T04:24:09Z</updated>
<author>
<name>Jason A. Donenfeld</name>
<email>Jason@zx2c4.com</email>
</author>
<published>2020-06-23T04:18:04Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=1807dd1a1529b4426d7d3c99a4709bbf7598d19e'/>
<id>urn:sha1:1807dd1a1529b4426d7d3c99a4709bbf7598d19e</id>
<content type='text'>
This increases throughput by keeping the worker threads active for
longer.
</content>
</entry>
<entry>
<title>add intrmap_one, some temp code to help us write pci_intr_establish_cpu.</title>
<updated>2020-06-23T01:40:03Z</updated>
<author>
<name>dlg</name>
<email>dlg@openbsd.org</email>
</author>
<published>2020-06-23T01:40:03Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=f90eedca1997d2d936d5eda120168facc50b725b'/>
<id>urn:sha1:f90eedca1997d2d936d5eda120168facc50b725b</id>
<content type='text'>
it means we can do quick hacks to existing drivers to test interrupts
on multiple cpus. emphasis on quick and hacks.

ok jmatthew@, who will also ok the removal of it at the right time.
</content>
</entry>
<entry>
<title>Implement pci_intr_establish_cpu() for pyro(4) and vpci(4) based sparc64</title>
<updated>2020-06-23T01:21:29Z</updated>
<author>
<name>jmatthew</name>
<email>jmatthew@openbsd.org</email>
</author>
<published>2020-06-23T01:21:29Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=1d9e937e45405d8fccbf06a258cd97fbc51591ce'/>
<id>urn:sha1:1d9e937e45405d8fccbf06a258cd97fbc51591ce</id>
<content type='text'>
systems.  MSIs on these systems are delivered to event queues, which
trigger interrupts when non-empty.  The interrupt handler dequeues the
MSIs and converts them into soft interrupts, which run on the same cpu
as the event queue interrupt.

To target pci device interrupts to different cpus, we set up an event
queue per cpu in the system, or as many as we can, if there are fewer
event queues available.  For now, we don't have a way to feed this
information back to intrmap, so instead we just map interrupts for cpus
that don't have an event queue to another cpu that does have one.

Tested on V215 (pyro), T5120, T4-1, S7-2 (vpci).
dlg@ got the pyro side of it working for me.
ok dlg@ kettenis@
</content>
</entry>
<entry>
<title>timecounting: add gettime(9), getuptime(9)</title>
<updated>2020-06-22T21:16:07Z</updated>
<author>
<name>cheloha</name>
<email>cheloha@openbsd.org</email>
</author>
<published>2020-06-22T21:16:07Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=8dca5d44636110d0ff0cfe71785c8f18da7ca99e'/>
<id>urn:sha1:8dca5d44636110d0ff0cfe71785c8f18da7ca99e</id>
<content type='text'>
time_second and time_uptime are used widely in the tree.  This is a
problem on 32-bit platforms because time_t is 64-bit, so there is a
potential split-read whenever they are used at or below IPL_CLOCK.

Here are two replacement interfaces: gettime(9) and getuptime(9).
The "get" prefix signifies that they do not read the hardware
timecounter, i.e. they are fast and low-res.  The lack of a unit
(e.g. micro, nano) signifies that they yield a plain time_t.

As an optimization on LP64 platforms we can just return time_second or
time_uptime, as a single read is atomic.  On 32-bit platforms we need
to do the lockless read loop and get the values from the timecounter.

In a subsequent diff these will be substituted for time_second and
time_uptime almost everywhere in the kernel.

With input from visa@ and dlg@.

ok kettenis@
</content>
</entry>
<entry>
<title>Add opalcons(4), a driver for the OPAL console.</title>
<updated>2020-06-22T21:13:40Z</updated>
<author>
<name>kettenis</name>
<email>kettenis@openbsd.org</email>
</author>
<published>2020-06-22T21:13:40Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=9cff15ef82ea860b6c29be0e577000460a15a956'/>
<id>urn:sha1:9cff15ef82ea860b6c29be0e577000460a15a956</id>
<content type='text'>
</content>
</entry>
<entry>
<title>The minimum frame size for the ELFv2 ABI is 32 bytes.  Using this value</title>
<updated>2020-06-22T18:49:36Z</updated>
<author>
<name>kettenis</name>
<email>kettenis@openbsd.org</email>
</author>
<published>2020-06-22T18:49:36Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=4d943fd61ab7ebc3390510da6f072b3fbd6ff841'/>
<id>urn:sha1:4d943fd61ab7ebc3390510da6f072b3fbd6ff841</id>
<content type='text'>
instead of 48 in the trap setup functions makes it possible to get rid
of the magic offset in proc_trampoline.

Suggested by gkoehler@
</content>
</entry>
<entry>
<title>inittodr(9): introduce dedicated flag to enable writes from resettodr(9)</title>
<updated>2020-06-22T18:25:57Z</updated>
<author>
<name>cheloha</name>
<email>cheloha@openbsd.org</email>
</author>
<published>2020-06-22T18:25:57Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=bf2d84a07eb2512358d130f21cd3f3c03b4c2d28'/>
<id>urn:sha1:bf2d84a07eb2512358d130f21cd3f3c03b4c2d28</id>
<content type='text'>
We don't want resettodr(9) to write the RTC until inittodr(9) has
actually run.  Until inittodr(9) calls tc_setclock() the system UTC
clock will contain a meaningless value and there's no sense in
overwriting a good value with a value we know is nonsense.

This is not an uncommon problem if you're debugging a problem in early
boot, e.g. a panic that occurs prior to inittodr(9).

Currently we use the following logic in resettodr(9) to inhibit writes:

	if (time_second == 1)
		return;

... this is too magical.

A better way to accomplish the same thing is to introduce a dedicated
flag set from inittodr(9).  Hence, "inittodr_done".

Suggested by visa@.

ok kettenis@
</content>
</entry>
<entry>
<title>Enable interrupts when they were enabled before the trap (except when we</title>
<updated>2020-06-22T18:15:50Z</updated>
<author>
<name>kettenis</name>
<email>kettenis@openbsd.org</email>
</author>
<published>2020-06-22T18:15:50Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=be00ebe64ffda37c7ac803f330b1c897f12b55ea'/>
<id>urn:sha1:be00ebe64ffda37c7ac803f330b1c897f12b55ea</id>
<content type='text'>
are handling "genuine" interrupts like the decrementer and hypervisor
virtualization interrupts).
</content>
</entry>
<entry>
<title>Handle data storage and data segment interrupts from userland as well.</title>
<updated>2020-06-22T18:03:22Z</updated>
<author>
<name>kettenis</name>
<email>kettenis@openbsd.org</email>
</author>
<published>2020-06-22T18:03:22Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=c0e8dfc26859acc5c80a7cd731a9232aad396d94'/>
<id>urn:sha1:c0e8dfc26859acc5c80a7cd731a9232aad396d94</id>
<content type='text'>
</content>
</entry>
</feed>
