|
|
auto | arch::s390x::mmu::detail::alloc_table_with_policy (dat_level lvl, const pmm::allocation_request &policy) noexcept -> ::std::expected< u64, ::lib::kernel_error > |
| | Allocate one DAT table using a caller-supplied placement policy.
|
|
auto | arch::s390x::mmu::detail::default_table_request () noexcept -> pmm::allocation_request |
| | Build the default PMM request used for DAT table pages.
|
|
auto | arch::s390x::mmu::has_edat1 () noexcept -> bool |
| | Query EDAT-1 (1 MiB large page) availability.
|
|
auto | arch::s390x::mmu::has_edat2 () noexcept -> bool |
| | Query EDAT-2 (2 GiB large page) availability.
|
| auto | arch::s390x::mmu::init () noexcept -> void |
| | Initialize the MMU engine. Must be called after PMM init and arch::s390x::cpu::features::init().
|
|
auto | arch::s390x::mmu::detail::init_table (dat_level lvl, u64 phys) noexcept -> ::std::expected< void, ::lib::kernel_error > |
| | Fill a freshly-allocated table with empty (invalid) entries.
|
|
auto | arch::s390x::mmu::detail::map_large_1m_impl (u64 root_phys, dat_level root_level, u64 virt, u64 phys, page_prot prot) noexcept -> ::std::expected< void, ::lib::kernel_error > |
| | Map a 1 MiB large page (EDAT-1) via segment entry.
|
|
auto | arch::s390x::mmu::detail::map_large_2g_impl (u64 root_phys, dat_level root_level, u64 virt, u64 phys, page_prot prot) noexcept -> ::std::expected< void, ::lib::kernel_error > |
| | Map a 2 GiB large page (EDAT-2) via region-3 entry.
|
| auto | arch::s390x::mmu::detail::map_page_impl (u64 root_phys, dat_level root_level, u64 virt, u64 phys, page_prot prot, const pmm::allocation_request &table_policy) noexcept -> ::std::expected< void, ::lib::kernel_error > |
| | Map a single 4 KiB page using the two-phase protocol.
|
|
auto | arch::s390x::mmu::detail::protect_impl (u64 root_phys, dat_level root_level, u64 virt, page_prot new_prot) noexcept -> ::std::expected< void, ::lib::kernel_error > |
| | Change protection bits on an existing mapping.
|
|
auto | arch::s390x::mmu::pte_table_alloc () noexcept -> ::std::expected< dat_table< dat_level::page >, ::lib::kernel_error > |
| | Allocate and initialize a page table.
|
|
auto | arch::s390x::mmu::detail::table_free_level (dat_level level, u64 phys) noexcept -> void |
|
auto | arch::s390x::mmu::detail::table_is_empty (dat_level level, u64 phys) noexcept -> bool |
| auto | arch::s390x::mmu::detail::table_is_mapped (u64 phys, dat_level lvl) noexcept -> bool |
| | Fail-closed check that a DAT table physical page is backed by the HHDM before it is read or written through hhdm::phys_to_virt().
|
| auto | arch::s390x::mmu::detail::unmap_at_impl (u64 root_phys, dat_level root_level, u64 virt) noexcept -> ::std::expected< u64, ::lib::kernel_error > |
| | Unmap whatever exists at virt (4 KiB, 1 MiB, or 2 GiB).
|
| auto | arch::s390x::mmu::unmap_page_dispatch (u64 asce_val, u64 virt) noexcept -> ::std::expected< u64, ::lib::kernel_error > |
| | Runtime-dispatched unmap keyed on an ASCE value.
|
|
auto | arch::s390x::mmu::detail::validate_table_walk (u64 table_phys, dat_level lvl, u64 hhdm_start, u64 hhdm_end) noexcept -> ::std::expected< void, ::lib::kernel_error > |
| | Walk one DAT table level and recurse into child tables.
|
|
auto | arch::s390x::mmu::detail::walk_impl (u64 root_phys, dat_level root_level, u64 virt) noexcept -> ::std::expected< u64, ::lib::kernel_error > |
| | Walk the page tables to resolve virt → phys.
|
MMU engine implementation — DAT table walk/map internals.
SPDX-License-Identifier: Apache-2.0