|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] xen: arch_mfn_in_directmap: Reconciliate the name and the implementation
On 16.12.2021 16:22, Julien Grall wrote:
> From: Julien Grall <jgrall@xxxxxxxxxx>
>
> The name of arch_mfn_in_directmap() suggests that it will check against
> that the passed MFN should be in the directmap.
>
> However, the current callers are passing the next MFN and the
> implementation will return true for up to one MFN past the directmap.
>
> It would be more meaningful to test the exact MFN rather than the
> next one. So rework the implementation and the caller to match the
> name.
>
> Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx>
>
> ---
>
> Looking at the history, it looks like the check in init_node_heap()
> was <= and it was simply moved to a new helper without any adjustment
> as part of c6fdc9696a "boot allocator: use arch helper for virt_to_mfn
> on DIRECTMAP_VIRT region".
Really the original intention was to check the entire range; maybe it
would be better to express this again by ...
> --- a/xen/arch/x86/include/asm/mm.h
> +++ b/xen/arch/x86/include/asm/mm.h
> @@ -641,7 +641,7 @@ static inline bool arch_mfn_in_directmap(unsigned long
> mfn)
> {
> unsigned long eva = min(DIRECTMAP_VIRT_END, HYPERVISOR_VIRT_END);
>
> - return mfn <= (virt_to_mfn(eva - 1) + 1);
> + return mfn < (virt_to_mfn(eva - 1) + 1);
> }
... this instead:
static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
{
unsigned long eva = min(DIRECTMAP_VIRT_END, HYPERVISOR_VIRT_END);
return mfn + nr <= (virt_to_mfn(eva - 1) + 1);
}
This would allow an arch hook to also go beyond verifying just the last
MFN.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |