#
e7fbb990 |
| 04-Jan-2024 |
kettenis <kettenis@openbsd.org> |
Adjust IPLs to give us more interrupt vectors for IPL_NET. That is where we need them most since multi-queue NICs seem to be a thing now.
ok patrick@, mlarkin@, jan@
|
#
0a894fa6 |
| 31-Aug-2021 |
dv <dv@openbsd.org> |
vmm(4): add ipi for vmclear, unlock kernel
On Intel VMX hosts, when a guest migrates cpus, VMCS state needs to be flushed to physical memory before being reloaded on the new cpu. This diff adds a ne
vmm(4): add ipi for vmclear, unlock kernel
On Intel VMX hosts, when a guest migrates cpus, VMCS state needs to be flushed to physical memory before being reloaded on the new cpu. This diff adds a new ipi to allow a guest resuming on a new cpu to signal to the old that it needs to vmclear.
To better surface the potential race conditions, unlock the kernel after handling the ioctl to vmm and simplify the run loops for both vmx and svm. This requires a new vcpu lock.
Tested by some on tech@. "go for it" @mlarkin
show more ...
|
#
3fb0e55c |
| 13-Sep-2020 |
jsg <jsg@openbsd.org> |
add an ipi for wbinvd and a linux style wbinvd_on_all_cpus() function
ok kettenis@ deraadt@
|
#
70cf982a |
| 25-Mar-2019 |
guenther <guenther@openbsd.org> |
Fix pctr(4) issues with MP and suspend: - use an IPI to notify other CPUs toi update CR4 and the MSRs - use the cpu(4) resume callback to restore the pctr(4) settings after suspend/hibernate
ok
Fix pctr(4) issues with MP and suspend: - use an IPI to notify other CPUs toi update CR4 and the MSRs - use the cpu(4) resume callback to restore the pctr(4) settings after suspend/hibernate
ok kettenis@ deraadt@
show more ...
|
#
36074c0d |
| 25-Mar-2019 |
guenther <guenther@openbsd.org> |
X86_IPI_NAMES's only use was #if 0'ed out; delete both
ok kettenis@ deraadt@
|
#
c9de630f |
| 05-Jun-2018 |
guenther <guenther@openbsd.org> |
Switch from lazy FPU switching to semi-eager FPU switching: track whether curproc's xstate ("extended state") is loaded in the CPU or not. - context switch, sendsig(), vmm, and doing CPU crypto in t
Switch from lazy FPU switching to semi-eager FPU switching: track whether curproc's xstate ("extended state") is loaded in the CPU or not. - context switch, sendsig(), vmm, and doing CPU crypto in the kernel all check the flag and, if set, save the old thread's state to the PCB, clear the flag, and then load the _blank_ state - when returning to userspace, if the flag is clear then set it and restore the thread's state
This simpler tracking also fixes the restoring of FPU state after nested signal handlers.
With this, %cr0's TS flag is never set, the FPU #DNA trap can no longer happen, and IPIs are no longer necessary for flushing or syncing FPU state; on the other hand, restoring xstate while returning to userspace means we have to handle xrstor faulting if we could be loading an altered state. If that happens, reset the state, fake a #GP fault (SIGBUS), and recheck for ASTs.
While here, regularize fxsave/fxrstor vs xsave/xrstor handling, by using codepatching to switch to xsave/xrstor when present in the CPU. In addition, code patch in use of xsaveopt in most places when the CPU supports that. Use the 64bit-wide variants of the instructions in all cases so that x87 instruction fault IPs are reported correctly.
This change has three motivations: 1) with modern clang, SSE registers are used even in rcrt0.o, making lazy FPU switching a smaller benefit vs trap costs 2) the Intel SDM warns that lazy FPU switching may increase power costs 3) post-Spectre rumors suggest that the %cr0 TS flag might not block speculation, permitting leaking of information about FPU state (AES keys?) across protection boundaries.
tested by many in snaps; prodding from deraadt@
show more ...
|
#
4965d1a4 |
| 13-Jan-2018 |
mpi <mpi@openbsd.org> |
Define and use IPL_MPFLOOR in our common mutex implementation.
ok kettenis@, visa@
|
#
218ead0b |
| 22-Jun-2016 |
mikeb <mikeb@openbsd.org> |
Setup Hyper-V hypercall page and an IDT vector.
ok mlarkin, kettenis, deraadt
|
#
ad5f3503 |
| 08-Dec-2015 |
mikeb <mikeb@openbsd.org> |
Set up an IDT vector for Xen callbacks
This adds support for delivering the combined Xen interrupt that later fans out into event port specific (device specific) interrupts via an IDT of a guest sys
Set up an IDT vector for Xen callbacks
This adds support for delivering the combined Xen interrupt that later fans out into event port specific (device specific) interrupts via an IDT of a guest system.
The Xen IDT vector is set to be the first of the IPL_NET group and is implemented the same way LAPIC timer and IPIs are done. The additional machinery is there to be able to mask it via standard mechanisms (e.g. splnet).
Discussed with kettenis@, OK mlarkin, reyk
show more ...
|
#
77d6d4a2 |
| 13-Nov-2015 |
mlarkin <mlarkin@openbsd.org> |
vmm(4) kernel code
circulated on hackers@, no objections. Disabled by default.
|
#
09bf4fa2 |
| 10-Feb-2015 |
mlarkin <mlarkin@openbsd.org> |
Remove a #define for an ipi removed last year. No functional change.
|
#
11984784 |
| 09-Jul-2014 |
mlarkin <mlarkin@openbsd.org> |
Fixes a hibernate issue wherein we locked the kernel lock while hatching but then parked ourselves in real mode without completing acquisition of said lock. Also removes the park routine from i386 si
Fixes a hibernate issue wherein we locked the kernel lock while hatching but then parked ourselves in real mode without completing acquisition of said lock. Also removes the park routine from i386 since we don't need it (the APs are already parked at the time we start unpack).
discussed with and ok kettenis@, also ok deraadt@
show more ...
|
#
90030bcd |
| 01-Jun-2013 |
mlarkin <mlarkin@openbsd.org> |
Introduce a new amd64 IPI, x86_ipi_halt_realmode to park CPUS into real mode and halt them. Needed for hibernate.
ok deraadt@ kettenis@ "there's no risk there"
|
#
483e3bc5 |
| 16-May-2013 |
kettenis <kettenis@openbsd.org> |
Implement a mechanism to establish interrupt handlers that don't grab the kernel lock upon entry through a new IPL_MPSAFE flag/level.
ok mikeb@, mpi@
|
#
092bf81a |
| 16-Jun-2011 |
kettenis <kettenis@openbsd.org> |
Raise the number of interrupt sources per CPU from 32 to 64. This effectively triples the number of interrupt vectors that can be handled by the primary CPU. Important for MSI, but could also fix s
Raise the number of interrupt sources per CPU from 32 to 64. This effectively triples the number of interrupt vectors that can be handled by the primary CPU. Important for MSI, but could also fix some issues with large machines loaded with a lot of devices.
tested by many; ok deraadt@, marco@
show more ...
|
#
fd94711f |
| 13-Nov-2010 |
guenther <guenther@openbsd.org> |
Switch from TSS-per-process to TSS-per-CPU, placing the TSS right next to the cpu's GDT, also making the double-fault stack per-CPU, leaving it at the top of the page of the CPU's idle process. Inli
Switch from TSS-per-process to TSS-per-CPU, placing the TSS right next to the cpu's GDT, also making the double-fault stack per-CPU, leaving it at the top of the page of the CPU's idle process. Inline pmap_activate() and pmap_deactivate() into the asm cpu_switchto routine, adding a check for the new pmap already being marked as active on the CPU. Garbage collect the hasn't-been-used-in-years GDT update IPI.
Tested by many; ok mikeb@, kettenis@
show more ...
|
#
161a6d1d |
| 22-May-2010 |
deraadt <deraadt@openbsd.org> |
this is amd64, not i386, and the protection was all busted
|
#
a2cd3cc4 |
| 28-Apr-2008 |
kettenis <kettenis@openbsd.org> |
Rename IPL_SOFTSERIAL to IPL_SOFTTY and rename the associated symbols. Remove IPL_SERIAL since it is unused.
ok krw@, weingart@, deraadt@
|
#
5714d2ea |
| 06-May-2007 |
gwk <gwk@openbsd.org> |
Add the mp setperf mechanism to AMD64, like its i386 counterpart it allows all cpus in a system supporting frequency and voltage scaling to be scaled by the same amount corresponding to the user (or
Add the mp setperf mechanism to AMD64, like its i386 counterpart it allows all cpus in a system supporting frequency and voltage scaling to be scaled by the same amount corresponding to the user (or apmd on their behalf) performance level.
This diff also teaches amd64 about acpi_hasprocfvs (ACPI has processor frequency and voltage scaling).
It also moves initilization of the underlying setperf mechanism such as powernow to mainbus from the cpu indentification and initilization code inspired by similar changes dim@ made to i386 durring h2k6. This is necessary to implement the AMD recommended method for retreiving p_state data from the ACPI _PSS object (a diff comming soon). It will also simplify the potential addition of enhanced speedstep as found on newer intel processors with EMT64 capable of running OpenBSD/amd64.
MP setperf functionality verifed by myself and Johan M:son Lindman <tybolt AT solace DOT miun DOT se> on opteron 265 and 270 systems respectively. General testing done by many others thanks!
ok tedu, dim
show more ...
|
#
02befdbe |
| 01-Feb-2007 |
art <art@openbsd.org> |
Rename the MICROSET IPI we inherited from NetBSD to simply NOP since it doesn't do anything (other than poking into the kernel a processing ASTs).
|
#
93f0663e |
| 12-Mar-2006 |
brad <brad@openbsd.org> |
remove IPL_IMP and splimp().
|
#
17e58ef0 |
| 25-Jun-2004 |
andreas <andreas@openbsd.org> |
'machine cpuinfo' and 'machine ddbcpu' in ddb for amd64
|
#
f5df1827 |
| 28-Jan-2004 |
mickey <mickey@openbsd.org> |
an amd64 arch support. hacked by art@ from netbsd sources and then later debugged by me into the shape where it can host itself. no bootloader yet as needs redoing from the recent advanced i386 sourc
an amd64 arch support. hacked by art@ from netbsd sources and then later debugged by me into the shape where it can host itself. no bootloader yet as needs redoing from the recent advanced i386 sources (anyone? ;)
show more ...
|