| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
IPMI. Use these calls to add support for impi(4) on PowerNV systems.
ok dlg@
|
|
|
|
|
|
|
|
|
|
|
|
| |
mode. On modern processors (POWER8 and later) there is no performance
penalty for this as long as exceptions are disabled in the FPSCR (which
is the default). This way we don't have to implement an
architecture-dependent system call to set the mode, as it can only be done
by the kernel.
With help from gkoehler@
ok gkoehler@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When opal(4) attaches, look in the device tree for a psscr value. In
cpu_idle_cycle(), use this psscr value and the stop instruction to
wait for the next interrupt. In mp kernels, cpu_unidle() now sends an
interrupt. In "sysctl hw.sensors", the power and temperature sensors
from opalsens(4) may show lower values.
The cpu may exit stop at the system reset vector after losing user
registers. If so, restore some registers. For now, ignore deeper
stop states that would lose hypervisor registers.
Our mp kernel uses only the first hardware thread of each core. Take
the extra threads from the firmware and stop them forever; this may
switch the core from SMT4 to single-thread mode and increase
performance.
partly by kettenis@, ok kettenis@
|
|
|
|
| |
are disabled by default on all CPUs.
|
|
|
|
|
| |
generic_space_read_N() and generic_space_write_N() as they should not do
any byte swapping.
|
| |
|
| |
|
|
|
|
| |
ok deraadt@ kettenis@
|
|
|
|
| |
on POWER8 machines with older versions of OPAL.
|
|
|
|
| |
spotted by gkoehler, ok mortimer
|
|
|
|
| |
ok deraadt@
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Before, apm -A was speeding up only one core of my POWER9.
Now, apm -A speeds up all cores, so my parallel builds are faster.
I copy the idea from amd64 and i386: mp_setperf() sends an IPI to all
cpus; the interrupt handler calls ul_setperf().
ok deraadt@ kettenis@
|
|
|
|
|
|
|
|
| |
interrupts. This fixes IPIs on machines with certain (newer?) OPAL
firmware. It also allows implementing pci_intr_establish_cpu(9), which
is needed for distributing interrupt handlers across CPUs.
tested by gkoehler@
|
|
|
|
|
|
| |
uvm_map_inentry() may sleep we would have to do the same fixup as after
calling uvm_fault() there. It is just simpler and safer to just rely
on the pointer in SPRG0.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes it possible to use more SLB entries for the kernel than the
hardware supports. The design is such that a subset of the hardware SLB
entries can be replaced when needed. This makes sure the entries
mapping kernel code and data and the page tables ar always present.
Traps for missing SLB entries are handled in real-mode and on a special
stack such that it doesn't have to rely on SLB entires mapping kernel
stacks.
With this in place we can increase KVA to 32GB. Hopefully that's enough
to support large memory configurations.
|
|
|
|
| |
than 8 SLB entries.
|
| |
|
|
|
|
|
|
|
| |
Copy signotify() from amd64, so that if proc *p is on another cpu, then
signotify(p) notifies the correct cpu.
ok kettenis@
|
| |
|
| |
|
|
|
|
| |
and earlier CPUs.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
real hardware, but it gets the kernel booting on QEMU emulating a POWER8
CPU so it's a step in the right direction.
This establishes a way to distinguish CPU features based on the AT_HWCAP
and AT_HWCAP2 features documented in the ELF ABI. Also use this to
determine the availability of the DARN instruction instead of keying of
the processor model.
|
|
|
|
|
| |
(much more) stable. Probably because we could restore an incoherent
SLB cache since there was no locking in the trap return path.
|
|
|
|
|
|
| |
by miod@ where the powerpc64 claimed to be "for all AArch64 platforms".
ok patrick@
|
|
|
|
| |
maximum numbers of cores available in any POWER9 system.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
device tree. Make sure the RB_GOODRANDOM flag only gets set if we
read a non-stale /etc/random.seed and we actually filled an
.openbsd.randomdata segment.
|
| |
|
|
|
|
|
| |
based on the octboot driver that we use for octeon. To be used in the
bootloader kernel.
|
|
|
|
|
| |
apmd/apm combo for -L/-H and such. (it gets all the rest of the mess too)
ok kettenis
|
|
|
|
| |
Fixes build of RAMDISK kernels.
|
| |
|
|
|
|
| |
a mapping from the page tables.
|
|
|
|
|
|
|
|
|
|
|
| |
be 8 bytes in the 64-bit ABI just like in the 32-bit ABI. But that means
there is no "spare" word in the TCB that we can use to store a pointer
to our struct pthread. So we have to treat powerpc64 special.
Also recognize that the thread pointer points 0x7000 bytes after the TCB.
Since the TCB is 8 bytes this means that TCB_OFFSET should be 0x7008.
Pointed out by guenther@; ok deraadt@
|
| |
|
|
|
|
| |
<machine/frame.h>.
|
|
|
|
|
|
| |
pixman in xenocara build and hopefully helps with ports as well.
suggested by matthieu@
|
|
|
|
|
|
|
|
|
| |
Get the list of Pstates from OPAL, and use special registers to
request a Pstate or check the current Pstate. The turbo Pstates are
higher than the cpu's nominal speed, but the OCC's firmware should
throttle down the cpu if it would overheat.
ok kettenis@
|
| |
|
| |
|