Age | Commit message (Collapse) | Author |
|
|
|
ok patrick@
|
|
mailbox 0 interrupt on all cores. Seems to make GENERIC.MP work on the rpi3.
|
|
like we already do in the code that flushes the BTB.
ok jsg@
|
|
it is unnecessary to zero the struct's fields right after allocation.
OK mikeb@
|
|
between the u-k and u+k tables, because they're actually in *all* tables.
ok bluhm@ kettenis@ mlarkin@
|
|
Rephrase the condition in a way that both gcc and clang accept it.
OK guenther@
|
|
with 1. Then it compiles with gcc, sign and size do not matter
here.
OK mlarkin@
|
|
There are no actual changes to the driver since the software crypto
driver is called to handle authentication operations.
This enabled padlock to be used when tunnels are setup with iked(8).
Tested by and OK fcambus
|
|
On Intel CPUs which speculate past user/supervisor page permission checks,
use a separate page table for userspace with only the minimum of kernel code
and data required for the transitions to/from the kernel (still marked as
supervisor-only, of course):
- the IDT (RO)
- three pages of kernel text in the .kutext section for interrupt, trap,
and syscall trampoline code (RX)
- one page of kernel data in the .kudata section for TLB flush IPIs (RW)
- the lapic page (RW, uncachable)
- per CPU: one page for the TSS+GDT (RO) and one page for trampoline
stacks (RW)
When a syscall, trap, or interrupt takes a CPU from userspace to kernel the
trampoline code switches page tables, switches stacks to the thread's real
kernel stack, then copies over the necessary bits from the trampoline stack.
On return to userspace the opposite occurs: recreate the iretq frame on the
trampoline stack, switch stack, switch page tables, and return to userspace.
mlarkin@ implemented the pmap bits and did 90% of the debugging, diagnosing
issues on MP in particular, and drove the final push to completion.
Many rounds of testing by naddy@, sthen@, and others
Thanks to Alex Wilson from Joyent for early discussions about trampolines
and their data requirements.
Per-CPU page layout mostly inspired by DragonFlyBSD.
ok mlarkin@ deraadt@
|
|
|
|
|
|
|
|
|
|
Reported by Renaud Allard, fix tested by Renaud (i386) and fcambus@ (amd64).
OK visa, fcambus
|
|
ok dlg@
|
|
The account flag `ASU' will no longer be set but that makes suser()
mpsafe since it no longer mess with a per-process field.
No objection from millert@, ok tedu@, bluhm@
|
|
|
|
barrier is overkill when forcing parameter visibility before IPIs.
|
|
while here, put "directory" in the right place
|
|
ok millert@
|
|
It was already done on amd64, but not on i386. Tested on an Atom N270.
OK mpi@
|
|
initially was never tested with SDIO, as there had been no user. With
bwfm(4) we now have the first SDIO card on that controller. Align the
code with the standard sdhc(4), so that it doesn't hang after the first
interrupt fires.
ok kettenis@
|
|
ok patrick@
|
|
ok krw@ mpi@
|
|
|
|
consistent across architectures.
Requested by deraadt@
ok kettenis@
|
|
stack frame format has changed. Apparently AAPCS doesn't specify
at all what a stack frame looks like. We end up with much simpler
code, but also with a lot less information in the trace.
ok kettenis@
|
|
ok dlg@
|
|
|
|
Tested by jsg@, ok patrick@
|
|
This unbreak backtrace across interrupt frames.
|
|
especially makes it easier to diff against our other linker scripts.
ok jsg@
|
|
"Processor Programming Reference (PPR) for AMD Family 17h
Model 01h, Revision B1 Processors"
ok mlarkin@ deraadt@
|
|
ok mlarkin@, deraadt@
|
|
get an alignment fault while copying the data. Turns out that since we
have .rodata in the text segment, it's very easily possible that etext
remains unaligned. Work around this by word-aligning etext. The next
step is to split .rodata out of the text segment.
ok deraadt@
|
|
and tail and cat(1) it together. It was maybe needed when ports needed
different contents, but now it's just a headache.
ok deraadt@
|
|
the number of ->dv_parent->dv_parent chains and make this more readable.
ok deraadt@ phessler@
|
|
Fixes 'make install' when /bsd is not present for some reason.
ok rob florian, "fine with me" deraadt
|
|
the boot device. We do the latter only for NFSCLIENT, but always the former.
While here, modernize the interface matching loop.
ok deraadt@
|
|
ok deraadt@
|
|
boot interface to the "netboot" group. efiboot grabs the MAC address
from the PXE environment, passes it to the kernel, where it is matched
against the list of ethernet interfaces and the boot device is set.
Concept and most of the code cribbed from amd64.
ok kettenis@
|
|
ok kettenis@
|
|
the CPUs identified and then we had to update the CPU flags afterwards.
As microcode updates can add/remove instructions and features, we need
to load it earlier. Thus, make the bootloader look for the microcode
and supply it to the kernel as another bootarg. This way we can update
the cores' microcode before we identify them.
ok deraadt@
|
|
ok patrick@
|
|
Spotted by patrick@
ok patrick@
|
|
ok mlarkin@
|
|
|
|
pmap_copy_page().
ok patrick@
|
|
the secondary CPUs receive clock interrupts. Based on diffs from drahn@.
ok patrick@
|