arm64: hugetlb: set_huge_pte_at Add WARN_ON on !pte_present
authorSteve Capper <steve.capper@arm.com>
Tue, 22 Aug 2017 10:42:41 +0000 (11:42 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Tue, 22 Aug 2017 14:41:16 +0000 (15:41 +0100)
This patch adds a WARN_ON to set_huge_pte_at as the accessor assumes
that entries to be written down are all present. (There are separate
accessors to clear huge ptes).

We will need to handle the !pte_present case where memory offlining
is used on hugetlb pages. swap and migration entries will be supplied
to set_huge_pte_at in this case.

Cc: David Woods <dwoods@mellanox.com>
Signed-off-by: Steve Capper <steve.capper@arm.com>
Signed-off-by: Punit Agrawal <punit.agrawal@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/mm/hugetlbpage.c

index 656e0ec..7b61e48 100644 (file)
@@ -67,6 +67,12 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
        unsigned long pfn;
        pgprot_t hugeprot;
 
+       /*
+        * Code needs to be expanded to handle huge swap and migration
+        * entries. Needed for HUGETLB and MEMORY_FAILURE.
+        */
+       WARN_ON(!pte_present(pte));
+
        if (!pte_cont(pte)) {
                set_pte_at(mm, addr, ptep, pte);
                return;