]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - mm/page_vma_mapped.c
KVM: x86/speculation: Disable Fill buffer clear within guests
[mirror_ubuntu-jammy-kernel.git] / mm / page_vma_mapped.c
index a4435311754b08597c3cced04df12c3effd747e6..f7b3310817910f26ea3c8e384995e1a138a1f601 100644 (file)
@@ -41,7 +41,8 @@ static bool map_pte(struct page_vma_mapped_walk *pvmw)
 
                                /* Handle un-addressable ZONE_DEVICE memory */
                                entry = pte_to_swp_entry(*pvmw->pte);
-                               if (!is_device_private_entry(entry))
+                               if (!is_device_private_entry(entry) &&
+                                   !is_device_exclusive_entry(entry))
                                        return false;
                        } else if (!pte_present(*pvmw->pte))
                                return false;
@@ -93,19 +94,21 @@ static bool check_pte(struct page_vma_mapped_walk *pvmw)
                        return false;
                entry = pte_to_swp_entry(*pvmw->pte);
 
-               if (!is_migration_entry(entry))
+               if (!is_migration_entry(entry) &&
+                   !is_device_exclusive_entry(entry))
                        return false;
 
-               pfn = migration_entry_to_pfn(entry);
+               pfn = swp_offset(entry);
        } else if (is_swap_pte(*pvmw->pte)) {
                swp_entry_t entry;
 
                /* Handle un-addressable ZONE_DEVICE memory */
                entry = pte_to_swp_entry(*pvmw->pte);
-               if (!is_device_private_entry(entry))
+               if (!is_device_private_entry(entry) &&
+                   !is_device_exclusive_entry(entry))
                        return false;
 
-               pfn = device_private_entry_to_pfn(entry);
+               pfn = swp_offset(entry);
        } else {
                if (!pte_present(*pvmw->pte))
                        return false;
@@ -233,7 +236,7 @@ restart:
                                        return not_found(pvmw);
                                entry = pmd_to_swp_entry(pmde);
                                if (!is_migration_entry(entry) ||
-                                   migration_entry_to_page(entry) != page)
+                                   pfn_swap_entry_to_page(entry) != page)
                                        return not_found(pvmw);
                                return true;
                        }