Hi: On 2021/3/23 18:26, David Hildenbrand wrote: > On 20.03.21 10:36, Miaohe Lin wrote: >> If the zone device page does not belong to un-addressable device memory, >> the variable entry will be uninitialized and lead to indeterminate pte >> entry ultimately. Fix this unexpectant case and warn about it. > > s/unexpectant/unexpected/ > >> >> Fixes: df6ad69838fc ("mm/device-public-memory: device memory cache coherent with CPU") >> Signed-off-by: Miaohe Lin <linmiaohe@xxxxxxxxxx> >> --- >> mm/migrate.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/mm/migrate.c b/mm/migrate.c >> index 20a3bf75270a..271081b014cb 100644 >> --- a/mm/migrate.c >> +++ b/mm/migrate.c >> @@ -2972,6 +2972,13 @@ static void migrate_vma_insert_page(struct migrate_vma *migrate, >> swp_entry = make_device_private_entry(page, vma->vm_flags & VM_WRITE); >> entry = swp_entry_to_pte(swp_entry); >> + } else { >> + /* >> + * For now we only support migrating to un-addressable >> + * device memory. >> + */ >> + WARN_ON(1); >> + goto abort; > > Fix it by crashing the kernel with panic_on_warn? :) > Sorry, my bad. :( > If this case can actual happen, than no WARN_ON() - rather a pr_warn_once(). If this case cannot happen, why do we even care (it's not a fix then)? Yep, this case can actual happen. Many thanks for providing alternative pr_warn_once(). > >