// SPDX-License-Identifier: GPL-2.0-only /* * Based on arch/arm/mm/copypage.c * * Copyright (C) 2002 Deep Blue Solutions Ltd, All Rights Reserved. * Copyright (C) 2012 ARM Ltd.
*/
if (kasan_hw_tags_enabled())
page_kasan_tag_reset(to);
if (!system_supports_mte()) return;
if (folio_test_hugetlb(src)) { if (!folio_test_hugetlb_mte_tagged(src) ||
from != folio_page(src, 0)) return;
folio_try_hugetlb_mte_tagging(dst);
/* * Populate tags for all subpages. * * Don't assume the first page is head page since * huge page copy may start from any subpage.
*/
nr_pages = folio_nr_pages(src); for (i = 0; i < nr_pages; i++) {
kfrom = page_address(folio_page(src, i));
kto = page_address(folio_page(dst, i));
mte_copy_page_tags(kto, kfrom);
}
folio_set_hugetlb_mte_tagged(dst);
} elseif (page_mte_tagged(from)) { /* * Most of the time it's a new page that shouldn't have been * tagged yet. However, folio migration can end up reusing the * same page without untagging it. Ignore the warning if the * page is already tagged.
*/
try_page_mte_tagging(to);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.