Am 2021-08-25 um 2:24 p.m. schrieb Sierra Guiza, Alejandro (Alex): > > On 8/25/2021 2:46 AM, Christoph Hellwig wrote: >> On Tue, Aug 24, 2021 at 10:48:17PM -0500, Alex Sierra wrote: >>> } else { >>> - if (!(migrate->flags & MIGRATE_VMA_SELECT_SYSTEM)) >>> + if (!(migrate->flags & MIGRATE_VMA_SELECT_SYSTEM) && >>> + !(migrate->flags & MIGRATE_VMA_SELECT_IOMEM)) >>> goto next; >>> pfn = pte_pfn(pte); >>> if (is_zero_pfn(pfn)) { >> .. also how is this going to work for the device public memory? That >> should be pte_special() an thus fail vm_normal_page. > Perhaps we're missing something, as we're not doing any special > marking for the device public pfn/entries. > pfn_valid return true, pte_special return false and pfn_t_devmap > return false on these pages. Same as system pages. > That's the reason vm_normal_page returns the page correctly through > pfn_to_page helper. Hi Christoph, I think we're missing something here. As far as I can tell, all the work we did first with DEVICE_GENERIC and now DEVICE_PUBLIC always used normal pages. Are we missing something in our driver code that would make these PTEs special? I don't understand how that can be, because driver code is not really involved in updating the CPU mappings. Maybe it's something we need to do in the migration helpers. Thanks, Felix > > Regards, > Alex S.