bb11cce6 | 06-Jun-2021 |
Aaron LI <aly@aaronly.me> |
pmap: Implement pmap_npt_transform() for NVMM
This function will transform an initialized pmap structure for use by NVMM's AMD SVM backend.
AMD's NPT (nested page table), aka RVI (rapid virtualizat
pmap: Implement pmap_npt_transform() for NVMM
This function will transform an initialized pmap structure for use by NVMM's AMD SVM backend.
AMD's NPT (nested page table), aka RVI (rapid virtualization indexing) implementation is more complete than Intel's EPT; it supports A/D bits and uses the same bits positions as native x86 page tables. So this function is a simplified version of pmap_ept_transform().
show more ...
|
29701988 | 06-Jun-2021 |
Aaron LI <aly@aaronly.me> |
pmap: Implement pmap_ept_transform() for NVMM
The pmap_ept_transform() transforms an initialized pmap structure to be EPT type for Intel VMX hypervisor (e.g., NVMM) use. This implementation is deri
pmap: Implement pmap_ept_transform() for NVMM
The pmap_ept_transform() transforms an initialized pmap structure to be EPT type for Intel VMX hypervisor (e.g., NVMM) use. This implementation is derived from vmx_ept_init() and vmx_ept_pmap_pinit() in 'pc64/vmm/ept.c'.
Note that this function has a different prototype as NetBSD's one, because we don't make 'pmap_ept_has_ad' a global variable so we need to pass extra flags to the pmap.
When zeroing out the page directories, note that the valid area is two pages if there is a pm_pmlpv_iso PTE installed (i.e., the system has meltdown mitigation enabled), otherwise, it's only one page. (credit to Matt Dillon)
show more ...
|
7e0dbbc6 | 03-Jun-2021 |
Aaron LI <aly@aaronly.me> |
vm/pmap.h: Move vtophys() and vtophys_pte() macros here
The two macros are defined against with pmap_kextract(), which is also declared in this header file, so it's a better place to hold the two ma
vm/pmap.h: Move vtophys() and vtophys_pte() macros here
The two macros are defined against with pmap_kextract(), which is also declared in this header file, so it's a better place to hold the two macros.
In addition, this adjustment avoids the duplicates in both pc64 and vkernel64.
show more ...
|
712b6620 | 21-May-2021 |
Aaron LI <aly@aaronly.me> |
vm: Change 'kernel_object' global to pointer type
Following the previous commits, this commit changes the 'kernel_object' to pointer type of 'struct vm_object *'. This makes it align better with 'k
vm: Change 'kernel_object' global to pointer type
Following the previous commits, this commit changes the 'kernel_object' to pointer type of 'struct vm_object *'. This makes it align better with 'kernel_map' and simplifies the code a bit.
No functional changes.
show more ...
|
5936d3e8 | 20-May-2021 |
Aaron LI <aly@aaronly.me> |
vm: Change {buffer,clean,pager}_map globals to pointer type
Similar to the previous commit that changes global 'kernel_map' to type of 'struct vm_map *', change related globals 'buffer_map', 'clean_
vm: Change {buffer,clean,pager}_map globals to pointer type
Similar to the previous commit that changes global 'kernel_map' to type of 'struct vm_map *', change related globals 'buffer_map', 'clean_map' and 'pager_map' to pointer type, i.e., 'struct vm_map *'.
No functional changes.
show more ...
|
14067db6 | 18-Jun-2021 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Add vm_page_alloczwq()/vm_page_freezwq(), refactor comments
* Add two functions to help support nvmm.
* Refactor comments for vm_page_alloc(), vm_page_grab().
* Rename a few variables for
kernel - Add vm_page_alloczwq()/vm_page_freezwq(), refactor comments
* Add two functions to help support nvmm.
* Refactor comments for vm_page_alloc(), vm_page_grab().
* Rename a few variables for consistency.
show more ...
|