#
6bd9427e |
| 25-Jan-2023 |
kettenis <kettenis@openbsd.org> |
Implement execute-only mappings by using the Virtual Page Class Key Protection mechanism provided by modern POWER CPUs. This is implemented in a way data allows us to use the Data Address Compare me
Implement execute-only mappings by using the Virtual Page Class Key Protection mechanism provided by modern POWER CPUs. This is implemented in a way data allows us to use the Data Address Compare mechanism that was available on older versions of the architecture if we ever add support for these older CPUs (e.g. the PowerPC 970 aka G5).
Special thanks to gkoehler@ for spotting the bug in my initial implementation that made this not work at all.
ok deraadt@, gkoehler@
show more ...
|
#
196daab3 |
| 30-Dec-2020 |
gkoehler <gkoehler@openbsd.org> |
Enter power-saving mode on POWER9 (ISA v3)
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
Enter power-saving mode on POWER9 (ISA v3)
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@
show more ...
|
#
94f240f4 |
| 22-Dec-2020 |
kettenis <kettenis@openbsd.org> |
Clear FSCR register. This gives us a sane default state where all facilities are disabled by default on all CPUs.
|
#
c2b3d03c |
| 23-Aug-2020 |
kettenis <kettenis@openbsd.org> |
Add support for POWER8 (and maybe earlier) CPUs. Not sure if this works on real hardware, but it gets the kernel booting on QEMU emulating a POWER8 CPU so it's a step in the right direction.
This e
Add support for POWER8 (and maybe earlier) CPUs. Not sure if this works on 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.
show more ...
|
#
b286a873 |
| 10-Jul-2020 |
gkoehler <gkoehler@openbsd.org> |
Add hw.cpuspeed and hw.setperf
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 spee
Add hw.cpuspeed and hw.setperf
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@
show more ...
|
#
9c82a784 |
| 26-Jun-2020 |
kettenis <kettenis@openbsd.org> |
Add sync().
|
#
381de2fe |
| 17-Jun-2020 |
kettenis <kettenis@openbsd.org> |
Print CPU name and cache info in the same way as we do on arm64.
|
#
c1cbf458 |
| 09-Jun-2020 |
kettenis <kettenis@openbsd.org> |
Add mtdec().
|
#
8c07258a |
| 07-Jun-2020 |
kettenis <kettenis@openbsd.org> |
mainbus(4) and cpu(4).
|
#
dfe2a243 |
| 06-Jun-2020 |
kettenis <kettenis@openbsd.org> |
Bootstrap a kernel pmap and enable translations.
|
#
f6e57a87 |
| 22-May-2020 |
kettenis <kettenis@openbsd.org> |
Add some very simple trap handling.
|