[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20260121115436.45e174d3.zhiw@nvidia.com>
Date: Wed, 21 Jan 2026 11:54:36 +0200
From: Zhi Wang <zhiw@...dia.com>
To: Joel Fernandes <joelagnelf@...dia.com>
CC: <linux-kernel@...r.kernel.org>, Maarten Lankhorst
<maarten.lankhorst@...ux.intel.com>, Maxime Ripard <mripard@...nel.org>,
Simona Vetter <simona@...ll.ch>, Jonathan Corbet <corbet@....net>, "Alex
Deucher" <alexander.deucher@....com>, Christian König
<christian.koenig@....com>, Jani Nikula <jani.nikula@...ux.intel.com>,
"Joonas Lahtinen" <joonas.lahtinen@...ux.intel.com>, Rodrigo Vivi
<rodrigo.vivi@...el.com>, Tvrtko Ursulin <tursulin@...ulin.net>, Huang Rui
<ray.huang@....com>, Matthew Auld <matthew.auld@...el.com>, Matthew Brost
<matthew.brost@...el.com>, Lucas De Marchi <lucas.demarchi@...el.com>, Thomas
Hellström <thomas.hellstrom@...ux.intel.com>, Helge Deller
<deller@....de>, Danilo Krummrich <dakr@...nel.org>, Alice Ryhl
<aliceryhl@...gle.com>, Miguel Ojeda <ojeda@...nel.org>, Alex Gaynor
<alex.gaynor@...il.com>, Boqun Feng <boqun.feng@...il.com>, Gary Guo
<gary@...yguo.net>, Björn Roy Baron
<bjorn3_gh@...tonmail.com>, Benno Lossin <lossin@...nel.org>, "Andreas
Hindborg" <a.hindborg@...nel.org>, Trevor Gross <tmgross@...ch.edu>,
"Alistair Popple" <apopple@...dia.com>, Alexandre Courbot
<acourbot@...dia.com>, "Andrea Righi" <arighi@...dia.com>, Alexey Ivanov
<alexeyi@...dia.com>, "Philipp Stanner" <phasta@...nel.org>, Elle Rhumsaa
<elle@...thered-steel.dev>, "Daniel Almeida" <daniel.almeida@...labora.com>,
<joel@...lfernandes.org>, <nouveau@...ts.freedesktop.org>,
<dri-devel@...ts.freedesktop.org>, <rust-for-linux@...r.kernel.org>,
<linux-doc@...r.kernel.org>, <amd-gfx@...ts.freedesktop.org>,
<intel-gfx@...ts.freedesktop.org>, <intel-xe@...ts.freedesktop.org>,
<linux-fbdev@...r.kernel.org>
Subject: Re: [PATCH RFC v6 13/26] nova-core: mm: Add unified page table
entry wrapper enums
On Tue, 20 Jan 2026 15:42:50 -0500
Joel Fernandes <joelagnelf@...dia.com> wrote:
> Add unified Pte, Pde, and DualPde wrapper enums that abstract over
> MMU v2 and v3 page table entry formats. These enums allow the page
> table walker and VMM to work with both MMU versions.
>
snip
> +impl DualPde {
> + /// Create a [`DualPde`] from raw 128-bit value (two `u64`s) for
> the given MMU version.
> + pub(crate) fn new(version: MmuVersion, big: u64, small: u64) ->
> Self {
> + match version {
> + MmuVersion::V2 => Self::V2(ver2::DualPde::new(big, small)),
> + MmuVersion::V3 => Self::V3(ver3::DualPde::new(big, small)),
> + }
> + }
> +
> + /// Create a [`DualPde`] with only the small page table pointer set.
> + pub(crate) fn new_small(version: MmuVersion, table_pfn: Pfn) ->
> Self {
> + match version {
> + MmuVersion::V2 =>
> Self::V2(ver2::DualPde::new_small(table_pfn)),
> + MmuVersion::V3 =>
> Self::V3(ver3::DualPde::new_small(table_pfn)),
> + }
> + }
> +
> + /// Check if the small page table pointer is valid.
> + pub(crate) fn has_small(&self) -> bool {
> + match self {
> + Self::V2(d) => d.has_small(),
> + Self::V3(d) => d.has_small(),
> + }
> + }
> +
Should we also have a has_big here as well?
Z.
> + /// Get the small page table VRAM address.
> + pub(crate) fn small_vram_address(&self) -> VramAddress {
> + match self {
> + Self::V2(d) => d.small.table_vram_address(),
> + Self::V3(d) => d.small.table_vram_address(),
> + }
> + }
> +
> + /// Get the raw `u64` value of the big PDE.
> + pub(crate) fn big_raw_u64(&self) -> u64 {
> + match self {
> + Self::V2(d) => d.big.raw_u64(),
> + Self::V3(d) => d.big.raw_u64(),
> + }
> + }
> +
> + /// Get the raw `u64` value of the small PDE.
> + pub(crate) fn small_raw_u64(&self) -> u64 {
> + match self {
> + Self::V2(d) => d.small.raw_u64(),
> + Self::V3(d) => d.small.raw_u64(),
> + }
> + }
> +}
Powered by blists - more mailing lists