Age | Commit message (Collapse) | Author |
|
|
|
|
|
The timecounter struct is large and I think it may change in the
future. Changing it later will be easier if we use C99-style
initialization for all timecounter structs. It also makes reading the
code a bit easier.
For reasons I cannot explain, switching to C99-style initialization
sometimes changes the hash of the resulting object file, even though
the resulting struct should be the same. So there is a binary change
here, but only sometimes. No behavior should change in either case.
I can't compile-test this everywhere but I have been staring at the
diff for days now and I'm relatively confident this will not break
compilation. Fingers crossed.
ok gnezdo@
|
|
than uvm_km_valloc(9).
ok kettenis@
|
|
This diff exposes parts of clock_gettime(2) and gettimeofday(2) to
userland via libc eliberating processes from the need for a context
switch everytime they want to count the passage of time.
If a timecounter clock can be exposed to userland than it needs to set
its tc_user member to a non-zero value. Tested with one or multiple
counters per architecture.
The timing data is shared through a pointer found in the new ELF
auxiliary vector AUX_openbsd_timekeep containing timehands information
that is frequently updated by the kernel.
Timing differences between the last kernel update and the current time
are adjusted in userland by the tc_get_timecount() function inside the
MD usertc.c file.
This permits a much more responsive environment, quite visible in
browsers, office programs and gaming (apparently one is are able to fly
in Minecraft now).
Tested by robert@, sthen@, naddy@, kmos@, phessler@, and many others!
OK from at least kettenis@, cheloha@, naddy@, sthen@
|
|
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).
|
|
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.
|
|
This makes compiler no longer complain about unused variables.
ok kettenis@, patrick@
|
|
ok mpi@
|
|
ok mortimer@ mpi@ deraadt@
|
|
When PAE came back in 2015 the use of kvm86, required for SpeedStep on
such machine, got disabled. So there's no loss of functionality.
ok stsp@
|
|
The code in pci_init_extents() accidently passed M_NOWAIT which is
EX_FAST and does no harm. Replace it with EX_NOWAIT.
from Christian Ludwig; OK kettenis@
|
|
for now as amd64/i386 firmware still caters for legacy OSes that only
support a single PCI segment.
ok patrick@
|
|
remove the MD API.
ok deraadt@
|
|
acpimcfg(4) to call an MD initialization functions that sets up a tag for
PCI ECAM.
ok guenther@, mlarkin@, krw@
|
|
this gets rid of the source annotation which doesn't really add
anything other than adding complexitiy. randomess is generally
good enough that the few extra bits that the source type would
add are not worth it.
ok mikeb@ deraadt@
|
|
OK visa@
|
|
|
|
|
|
by pre-allocating two cryptodesc objects and storing them in an array
instead of a linked list. If more than two cryptodesc objects are
required use mallocarray to fetch them. Adapt the drivers to the new
API.
This change results in one pool-get per ESP packet instead of three.
It also simplifies softraid crypto where more cryptodesc objects are
allocated than used.
From, with and ok markus@, ok bluhm@
"looks sane" mpi@
|
|
actually use this in em(4) and xhci(4), but I'm not committing those yet
because we almost certainly need to save and restore the MSI-X registers
during suspend/resume. However, this allows mpi@ to play with multiple-vector
support in networking hardware.
Requested by mpi@
ok mlarkin@, mikeb@
|
|
|
|
ok deraadt@ guenther@ "re-wrap the long lines" kettenis@
|
|
|
|
memory addresses in their BIOS memory map making us believe they are
available. However these addresses will never actually be routed to the
PCI bus and therefore guaranteed not to work.
ok krw@, mlarkin@
|
|
done in this region using PAE w/NX caused #PFs (as they lacked the exec
permission previously).
Also unmap the region when we're finished. No sense in leaving extra
executable regions lying around.
Fixes non-ACPI uniprocessor i386 machines that have NX/PAE (these would
previously panic in pcibiosattach).
ok deraadt@
|
|
to deraadt, then myself) brings the PAE pmap on i386 (not touched in any
significant way for years) closer to the current non-PAE pmap and allows
us to take a big next step toward better i386 W^X in the kernel (similar to
what we did a few months ago on amd64). Unlike the original PAE pmap, this
diff will not be supporting > 4GB physical memory on i386 - this effort is
specifically geared toward providing W^X (via NX) only.
There still seems to be a bug removing certain pmap entries when PAE is
enabled, so I'm leaving PAE mode disabled for the moment until we can
figure out what is going on, but with this diff in the tree hopefully
others can help.
The pmap functions now operate through function pointers, due to the need
to support both non-PAE and PAE forms. My unscientific testing showed
less than 0.3% (a third of a percent) slowdown with this approach during
a base build.
Discussed for months with guenther, kettenis, and deraadt.
ok kettenis@, deraadt@
|
|
within a range that is more (or less) restrictive than the default range.
ok deraadt@, stsp@
|
|
ok deraadt, tests on glxpcib and ok mpi
|
|
ok tedu@ deraadt@
|
|
PROT_NONE, PROT_READ, PROT_WRITE, and PROT_EXEC from mman.h.
PROT_MASK is introduced as the one true way of extracting those bits.
Remove UVM_ADV_* wrapper, using the standard names.
ok doug guenther kettenis
|
|
the inteldrm code. Fix this by adding new interfaces that can map a single
page without sleeping and use that in the execbuffer fast path that needs
this "atomic" behaviour. Should fix the panic I've seen under memory pressure
on i386.
|
|
ok mpi@ kspillner@
|
|
after discussions with beck deraadt kettenis.
|
|
don't need to be married.
ok guenther miod beck jsing kettenis
|
|
unfortunate circumstances) pull machine/cpufunc.h
|
|
bus_addr_t and bus_size_t are u_long everywhere
ok kettenis@
|
|
tested by & ok mlarkin@
|
|
|
|
ok kettenis@, deraadt@
|
|
ok dlg@ mpi@ deraadt@
|
|
so remove the former and include the latter instead of pulling it
in <dev/pci/agpvar.h>. This header already requires various other
types anyway. While here remove unneeded headers.
|
|
all by itself.
|
|
inteldrm(4) manages the GTT by itself.
ok miod@
|
|
kernel resumes normal (non-cold, able to run processes, etc) operation.
Previously we were relying on specific DVACT_RESUME op's in drivers
creating callback/threads themselves, but that has become too common,
indicating the need for a built-in mechanism.
ok dlg kettenis, tested by a sufficient amount of people
|
|
error: ambiguous instructions require an explicit suffix (could be 'cmpb', 'cmpw', 'cmpl', or 'cmpq'
error: unknown token in expression
cmp -> cmpl, %cs:* -> *%cs:
ok kettenis@
|
|
resurrection of the bad idiom in the tree.
sufficient review by miod, kettenis, tedu
|
|
for PCI devices. This hook should be called twice, before and after
changing the power state of a PCI device.
Before setting the device to the new state, the ACPI layer will notify
every power resources linked to the device for that state and make sure
they are turned "_ON". After changing the state of the device, it will
decrement the reference of every power resources linked to that device
for the old state and turn them "_OFF" if they are no longer referenced.
This fixes the no-USB after resume problem seen on various ThinkPad,
problem initialy diagnosed with Alexander Polakov.
ok kettenis@, deraadt@
|
|
reduce pctr.h usage while here. ok jsing, deraadt
|
|
|