On 03.02.2025 14:12, Oleksii Kurochko wrote:
> @@ -160,6 +158,18 @@ static inline struct page_info *virt_to_page(const void
> *v)
>
> pte_t * pt_walk(vaddr_t va, unsigned int *pte_level);
>
> +static inline mfn_t vmap_to_mfn_(vaddr_t va)
Btw., for static functions (and variables) a prefixing underscore is
fine to use. Its identifiers that don't have file scope which shouldn't.
> +{
> + pte_t *entry = pt_walk(va, NULL);
Oh, noticing the anomaly only here: Why would pt_walk() return a pointer
to a PTE, rather than the pte_t by value? All this does is encourage
open-coded accesses (even writes), when especially writes are supposed
to be going through pt_update().
> + BUG_ON(!pte_is_mapping(*entry));
> +
> + return mfn_from_pte(*entry);
> +}
> +
> +#define vmap_to_mfn(va) vmap_to_mfn_((vaddr_t)va)
You've lost the parenthesizing of va.
Jan