On Mon, Jun 30, 2025 at 03:00:00PM +0200, David Hildenbrand wrote:
> ... instead, look them up statically based on the page type. Maybe in the
> future we want a registration interface? At least for now, it can be
> easily handled using the two page types that actually support page
> migration.
> 
> The remaining usage of page->mapping is to flag such pages as actually
> being movable (having movable_ops), which we will change next.
> 
> Reviewed-by: Zi Yan <z...@nvidia.com>
> Signed-off-by: David Hildenbrand <da...@redhat.com>
> ---

> +static const struct movable_operations *page_movable_ops(struct page *page)
> +{
> +     VM_WARN_ON_ONCE_PAGE(!page_has_movable_ops(page), page);
> +
> +     /*
> +      * If we enable page migration for a page of a certain type by marking
> +      * it as movable, the page type must be sticky until the page gets freed
> +      * back to the buddy.
> +      */
> +#ifdef CONFIG_BALLOON_COMPACTION
> +     if (PageOffline(page))
> +             /* Only balloon compaction sets PageOffline pages movable. */
> +             return &balloon_mops;
> +#endif /* CONFIG_BALLOON_COMPACTION */
> +#if defined(CONFIG_ZSMALLOC) && defined(CONFIG_COMPACTION)
> +     if (PageZsmalloc(page))
> +             return &zsmalloc_mops;
> +#endif /* defined(CONFIG_ZSMALLOC) && defined(CONFIG_COMPACTION) */

What happens if:
  CONFIG_ZSMALLOC=y
  CONFIG_TRANSPARENT_HUGEPAGE=n
  CONFIG_COMPACTION=n
  CONFIG_MIGRATION=y

?

> +     return NULL;
> +}
> +
>  /**
>   * isolate_movable_ops_page - isolate a movable_ops page for migration
>   * @page: The page.

Otherwise LGTM.

-- 
Cheers,
Harry / Hyeonggon

Reply via email to