Home | History | Annotate | Download | only in include
History log of /src/sys/arch/riscv/include/pte.h
RevisionDateAuthorComments
 1.17  13-Oct-2025  skrll risc-v: pte_make_enter set PTE_D when page is known to be modified.

PR/59696: pte_make_enter() appears to have bug vis a vis already-modified managed pages
 1.16  12-Oct-2025  skrll Fix RV32 build. Svpbmt and Memory Attribute Extension (XTheadMae) are
SV39 and above only.
 1.15  12-Oct-2025  thorpej Deal with the non-standard XTheadMae (Memory Attribute Extensions)
present on some T-Head CPU cores, notably the one found in the
Allwinner D1 SoC.

This extension allows memory attributes (cacheable, bufferable,
strongly-ordered, etc.) to be specified on a per-mapping basis.
Alas, it has two unfortunate properties:
- It uses the same bits as the standard Svpbmt (Page Based Memory Types)
extension, and the bits are completely incompatible.
- Unlike Svpbmt, which if none of its extension bits are set in the
PTE, results in rational behavior, if you don't set the XTheadMae
attibutes in the PTE correctly, the system will blow up in your face
in interesting and unpredictable ways.

So, we have to probe for XTheadMae early, when we're setting up the
initial MMU tables so that the kernel is mapped correctly when the
MMU is enabled, and then we probe for it again to set some globals
that are used when creating PTEs for new kernel and user mappings
going forward. Luckily, there are combinations of XTheadMae attributes
that map reasonably well to the Svpbmt types, so Svpbmt is used as
the abstraction.

With this, my D1 Nezha board boots to the root device prompt. \o/
 1.14  12-Oct-2024  skrll Install pte.h for libkvm
 1.13  07-May-2023  skrll branches: 1.13.6;
RISC-V support that works on QEMU with a single hart.

Thanks for Simon Burge for plic(4).
 1.12  22-Apr-2023  skrll G/C pte_index
 1.11  12-Nov-2022  skrll Note some SV39 PTE bits defined in extensions.

Fix pte_nv_entry for the kernel.

Fix pte_pde_ptpage. PTE.{X,W,R} must be zero for pointer to next level.
 1.10  18-Oct-2022  skrll Some fixes from Simon.
 1.9  15-Oct-2022  simonb #define<tab>
 1.8  30-Sep-2022  skrll Don't set A, D in page table pointers, but do set them in leaf entries.

Beagle-v now boots to the msgbufaddr panic same as qemu
 1.7  21-Sep-2022  skrll Use c99 types. NFC.
 1.6  01-May-2021  skrll Fixup some pmap / VM related #defines and code
 1.5  01-Nov-2020  skrll branches: 1.5.4;
Comments from zmcgrew@
 1.4  14-Mar-2020  skrll branches: 1.4.4;
Trailing whitespace
 1.3  16-Jun-2019  maxv Misc changes in RISC-V.
 1.2  01-Jun-2019  maxv Misc changes in RISC-V. Start changing the memory layout, too.
 1.1  19-Sep-2014  matt branches: 1.1.18; 1.1.22;
New files for Userland support of UCB RISC-V (both 32-bit and 64-bit)
 1.1.22.3  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.22.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.1.22.1  10-Jun-2019  christos Sync with HEAD
 1.1.18.2  03-Dec-2017  jdolecek update from HEAD
 1.1.18.1  19-Sep-2014  jdolecek file pte.h was added on branch tls-maxphys on 2017-12-03 11:36:39 +0000
 1.4.4.1  14-Dec-2020  thorpej Sync w/ HEAD.
 1.5.4.1  13-May-2021  thorpej Sync with HEAD.
 1.13.6.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed