Age | Commit message (Collapse) | Author |
|
i386 doesnt support msix, and the interrupt code assumes that it
only ties stuff to cpu0. this mostly exists so the api exists for
multiq drivers to compile against, but fail with when they try to
use it.
tested with a hacked up vmx(4).
|
|
Do the same for rdseed.
ok deraadt@
|
|
|
|
|
|
|
|
and alternatively XOR'd against TSC. now always run both sequences, and
also support rdseed as a third procedure.
ok kettenis naddy
|
|
adds kernel support for
amdgpu: vega20, raven2, renoir, navi10, navi14
inteldrm: icelake, tigerlake
Thanks to the OpenBSD Foundation for sponsoring this work, kettenis@ for
helping, patrick@ for helping adapt rockchip drm and many developers for
testing.
|
|
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.
|
|
conversion steps). it only contains kernel prototypes for 4 interfaces,
all of which legitimately belong in sys/systm.h, which are already included
by all enqueue_randomness() users.
|
|
Nothing uses the header anymore.
OK deraadt@ mpi@
|
|
discussed with deraadt@
|
|
|
|
|
|
ok kettenis@, visa@
|
|
This shrinks the ramdisks a tiny bit.
|
|
ok deraadt@, mpi@, visa@
ok cheloha@ as well (would have preferred in new file for this code)
|
|
ok sthen@, patrick@
|
|
While here use the kqfilter equivalent to `seltrue' to ensure both
interfaces are coherent.
ok visa@
|
|
passed in when setting the RTC time instead of the global time_second.
ok mpi@
|
|
amd64/arm64/armv7/sparc64 and move it to the end of machdep.c. Rework the
actual implementation for the MC14818 compatible RTC into something that can
be used as a todr_handle just like on amd64.
ok sthen@
|
|
Upgrade stacktrace_save() to stacktrace_save_at() on architectures where
the latter is missing. Define stacktrace_save() as an inline function
in header <sys/stacktrace.h> to reduce duplication of code.
OK mpi@
|
|
cache-coherent or not. To implement this, acpi(4) gets two bus_dma tags
and passes the appropriate one when attaching devices based on _CCA.
On i386/amd64, where for all practical purpose DMA is always cache-coherent,
the two tags are the same. But on arm64 they are distinct.
ok patrick@
|
|
for example, with locking assertions.
OK mpi@, anton@
|
|
EOPNOTSUPP is returned when there's no "filterops" for a given fd.
EINVAL when the requested filter isn't supported by the "filterops".
ENXIO means the underlying device is no longer valid/present.
ok visa@
|
|
arm64 and i386, the chain of call frames is continuous from kernel
to userspace. The unwinder has to stop at the latest when it reaches
the start of the kernel stack.
OK mpi@
|
|
This variant of stacktrace_save() takes an aditionnal argument to skip
an arbitrary number of frame. This allows to skip recording frames used
to execute the profiling code and produces outputs easier to understand.
Inputs from and ok visa@
|
|
|
|
ffs2 support does not fit there. But the the kernel loaded by the
floppy ramdisk does support ffs2.
|
|
This allows FFS2 to be enabled. Has been in snaps for quite some days.
With and ok deraadt@
|
|
This makes compiler no longer complain about unused variables.
ok kettenis@, patrick@
|
|
back to a 4 byte add instruction.
We do not know *why* though, so if somebody likes a challenge...
Lots of help from semarie@ who has a few systems showing the issue.
ok deraadt@
|
|
Sorry for the inconvenience. With help from semarie@.
|
|
To do this, installboot(8) patches an extra value into biosboot(8).
Code originally from Pedro Martelletto with a twist from myself and
kettenis@; ok jsing@ kettenis@
|
|
pointed out by naddy
|
|
|
|
|
|
(valid == 0) we can also inject that failure an entropic event, so xor
in that bit and proceed with submission.
the rdrand instruction can vmexit, so perform an additional rdtsc
afterwards measuring the vmexit latency (which due to caches is highly
unlikely to be constant), that's also worthwhile entropy to blend.
This works on the fundamental concept that the input-side of entropy
collection can accept bad or weak data. entropypool ^= weakdata is not
saturative or attackable, the entropy pool either remains as good or
becomes better.
ok djm jsg
|
|
adding more filter properties without cluttering the struct.
OK mpi@, anton@
|
|
|
|
with cpuid_level < 7.
Problem reported by Anthony Steinhauser.
|
|
ok tedu@ krw@ deraadt@
|
|
i was lazy and just put them at the end of the existing set. fyi,
i think major 51 is free on all archs if anyone is looking for
another one.
ok claudio@
|
|
ok deraadt
|
|
The design is fairly simple: events, in the form of descriptors on a
ring, are being produced in any kernel context and being consumed by
a userland process reading /dev/dt.
Code and hooks are all guarded under '#if NDT > 0' so this commit
shouldn't introduce any change as long as dt(4) is disable in GENERIC.
ok kettenis@, visa@, jasper@, deraadt@
|
|
ok deraadt krw
|
|
require the debugger on most architectures, and the separation makes the
code easier to use from other subsystems.
The function definitions are still conditional to DDB. However, that
should not matter for now.
OK deraadt@, mpi@
|
|
ok mpi@
|
|
ok mortimer@ mpi@ deraadt@
|
|
make the structs const so that the data are put in .rodata.
OK mpi@, deraadt@, anton@, bluhm@
|
|
Document the new feature in boot(8) man page.
OK jmc@ deraadt@
|