<feed xmlns='http://www.w3.org/2005/Atom'>
<title>wireguard-openbsd/sys/arch/powerpc/include/cpu.h, branch jd/queueboosts</title>
<subtitle>WireGuard implementation for the OpenBSD kernel</subtitle>
<id>https://git.zx2c4.com/wireguard-openbsd/atom/sys/arch/powerpc/include/cpu.h?h=jd%2Fqueueboosts</id>
<link rel='self' href='https://git.zx2c4.com/wireguard-openbsd/atom/sys/arch/powerpc/include/cpu.h?h=jd%2Fqueueboosts'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/'/>
<updated>2020-06-05T14:25:05Z</updated>
<entry>
<title>Implement cpu_rnd_messybits() as a read of the cycle counter register.</title>
<updated>2020-06-05T14:25:05Z</updated>
<author>
<name>naddy</name>
<email>naddy@openbsd.org</email>
</author>
<published>2020-06-05T14:25:05Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=4f1155a8e1b8d56b62802304c62b79d4e918eb9a'/>
<id>urn:sha1:4f1155a8e1b8d56b62802304c62b79d4e918eb9a</id>
<content type='text'>
ok dlg@, powerpc/sparc64 ok kettenis@, sparc64/alpha tested by deraadt@
</content>
</entry>
<entry>
<title>introduce "cpu_rnd_messybits" for use instead of nanotime in dev/rnd.c.</title>
<updated>2020-05-31T06:23:56Z</updated>
<author>
<name>dlg</name>
<email>dlg@openbsd.org</email>
</author>
<published>2020-05-31T06:23:56Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=01802d2cc63d886227ab3b39e923ff13cf516166'/>
<id>urn:sha1:01802d2cc63d886227ab3b39e923ff13cf516166</id>
<content type='text'>
rnd.c uses nanotime to get access to some bits that change quickly
between events that it can mix into the entropy pool. it doesn't
use nanotime to get a monotonically increasing set or ordered and
accurate timestamps, it just wants something with bits that change.

there's been discussions for years about letting rnd use a clock
that's super fast to read, but not necessarily accurate, but it
wasn't until recently that i figured out it wasn't interested in
time at all, so things like keeping a fast clock coherent between
cpu cores or correct according to ntp is unecessary. this means we
can just let rnd read the cycle counters on cpus and things will
be fine.  cpus with cycle counters that vary in their speed and
arent kept consistent between cores may even be desirable in this
context.

so this is the first step in converting rnd.c to reading cycle
counter. it copies the nanotime backend to each arch, and they can
replace it with something MD as a second step later on.

djm@ suggested rnd_messybytes, but we landed on cpu_rnd_messybits.
thanks to visa for his eyes.
ok deraadt@ visa@
deraadt@ says he will help handle any MD fallout that occurs.
</content>
</entry>
<entry>
<title>Fix inline assembly in ppc_mftb(); using %L0 instead of %0+1 makes this work</title>
<updated>2020-03-17T10:14:45Z</updated>
<author>
<name>kettenis</name>
<email>kettenis@openbsd.org</email>
</author>
<published>2020-03-17T10:14:45Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=1b5c1bb041a8716a4f9de2b79b9d94b5d3e53c6a'/>
<id>urn:sha1:1b5c1bb041a8716a4f9de2b79b9d94b5d3e53c6a</id>
<content type='text'>
for both gcc and clang.  From NetBSD.  Thanks to some serious detective work
by ghoehler@.

ok deraadt@, gkeohler@
</content>
</entry>
<entry>
<title>Add intr_{disable,restore}() for powerpc.</title>
<updated>2019-03-23T05:27:53Z</updated>
<author>
<name>visa</name>
<email>visa@openbsd.org</email>
</author>
<published>2019-03-23T05:27:53Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=f803efbff0a45e217da2c5f5bdc57a47fc1931de'/>
<id>urn:sha1:f803efbff0a45e217da2c5f5bdc57a47fc1931de</id>
<content type='text'>
OK mpi@ patrick@
</content>
</entry>
<entry>
<title>Include srp.h where struct cpu_info uses srp to avoid erroring out when</title>
<updated>2018-12-05T10:28:21Z</updated>
<author>
<name>jsg</name>
<email>jsg@openbsd.org</email>
</author>
<published>2018-12-05T10:28:21Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=1a1181a966226532433438cb3741ae7cdc0727d4'/>
<id>urn:sha1:1a1181a966226532433438cb3741ae7cdc0727d4</id>
<content type='text'>
including cpu.h machine/intr.h etc without first including param.h when
MULTIPROCESSOR is defined.

ok visa@
</content>
</entry>
<entry>
<title>Flush page (through the direct map) before mapping it into AGP.  Fixes</title>
<updated>2016-05-07T22:46:54Z</updated>
<author>
<name>kettenis</name>
<email>kettenis@openbsd.org</email>
</author>
<published>2016-05-07T22:46:54Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=a24104fb51fd861f7d242c4f28afab2e22cbf697'/>
<id>urn:sha1:a24104fb51fd861f7d242c4f28afab2e22cbf697</id>
<content type='text'>
artifacts seen in X on some G5 machines.  Unfortunately not enough to fix
G4 machines.  With help from Marcus Glocker.

ok mpi@
</content>
</entry>
<entry>
<title>introduce srp, which according to the manpage i wrote is short for</title>
<updated>2015-07-02T01:33:59Z</updated>
<author>
<name>dlg</name>
<email>dlg@openbsd.org</email>
</author>
<published>2015-07-02T01:33:59Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=52776b7dd171c092a35f86a9ed8bd1c22cac9fb8'/>
<id>urn:sha1:52776b7dd171c092a35f86a9ed8bd1c22cac9fb8</id>
<content type='text'>
"shared reference pointers".

srp allows concurrent access to a data structure by multiple cpus
while avoiding interlocking cpu opcodes. it manages its own reference
counts and the garbage collection of those data structure to avoid
use after frees.

internally srp is a twisted version of hazard pointers, which are
a relative of RCU.

jmatthew wrote the bulk of a hazard pointer implementation and
changed bpf to use it to allow mpsafe access to bpfilters. however,
at s2k15 we were trying to apply it to other data structures but
the memory overhead of every hazard pointer would have blown out
significantly in several uses cases. a bulk of our time at s2k15
was spent reworking hazard pointers into srp.

this diff adds the srp api and adds the necessary metadata to struct
cpuinfo on our MP architectures. srp on uniprocessor platforms has
alternate code that is optimised because it knows there'll be no
concurrent access to data by multiple cpus.

srp is made available to the system via param.h, so it should be
available everywhere in the kernel.

the docs likely need improvement cos im too close to the implementation.

ok mpi@
</content>
</entry>
<entry>
<title>Make it possisble to disable block address translation mechanism on</title>
<updated>2015-03-31T16:00:38Z</updated>
<author>
<name>mpi</name>
<email>mpi@openbsd.org</email>
</author>
<published>2015-03-31T16:00:38Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=5c8048c1d30761e2471fbfddb5e4847568d14a54'/>
<id>urn:sha1:5c8048c1d30761e2471fbfddb5e4847568d14a54</id>
<content type='text'>
processors that support it.

Due to the way trap code is patched it is currently not possible to
enabled/disable BAT at runtime.

ok miod@, kettenis@
</content>
</entry>
<entry>
<title>no md code wants lockmgr locks, so no md code needs to include sys/lock.h</title>
<updated>2015-02-11T07:05:39Z</updated>
<author>
<name>dlg</name>
<email>dlg@openbsd.org</email>
</author>
<published>2015-02-11T07:05:39Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=d3b1d173f07835f2d78b379d23a5946ce16b055a'/>
<id>urn:sha1:d3b1d173f07835f2d78b379d23a5946ce16b055a</id>
<content type='text'>
with and ok miod@
</content>
</entry>
<entry>
<title>Implement splassert(9) for powerpc.</title>
<updated>2015-01-04T13:01:42Z</updated>
<author>
<name>mpi</name>
<email>mpi@openbsd.org</email>
</author>
<published>2015-01-04T13:01:42Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=1c471f421f412895a8ccf0461fc716494b91bf1d'/>
<id>urn:sha1:1c471f421f412895a8ccf0461fc716494b91bf1d</id>
<content type='text'>
This changes the logic to prevent a recursion when processing soft
interrupts.  Previously a per-CPU flag was set before re-enabling
interrupts.  Now the IPL level is raised to SOFTTTY which makes
splsoftassert() happy, greatly inspired by mips64.

As a side effect, the ppc_intr_{disable,enable}() dance is now done
only once instead of twice per splx(9).

While here, make use of dosoftint() instead of having 3 different
functions for dispatching soft interrupts.

Tested by deraadt@ on G4 smp and by myself G5 smp, G3, G4 and socppc.

No objection from the usual (and over busy) suspects.
</content>
</entry>
</feed>
