Hi Baoquan, During driver being loaded and initialized, when there is a new dma request, the function __get_valid_domain_for_dev is called, and then new page is mapped. Please check this: struct dma_map_ops intel_dma_ops = { .alloc = intel_alloc_coherent, .free = intel_free_coherent, .map_sg = intel_map_sg, .unmap_sg = intel_unmap_sg, .map_page = intel_map_page, .unmap_page = intel_unmap_page, .mapping_error = intel_mapping_error, }; You can also add dump_stack() in __get_valid_domain_for_dev to debug. Thanks Zhenhua On 05/21/2015 02:54 PM, Baoquan He wrote: > On 05/21/15 at 09:27am, Li, ZhenHua wrote: >> Hi Baoquan, >> >> In the early version of this patchset, old page tables are used by new >> kernel. But as discussed, we need to make kernel use new pages when >> there is a new dma request , so we need to unmap the pages which were >> mapped in old kernel, and this is what this patch does. > > OK, just a new page table allocated in init_domain(), right? I thought a > specific empty page-table is allocated for these new domains in kdump > kernel. > >> >> Thanks >> Zhenhua >> >> On 05/21/2015 07:52 AM, Baoquan He wrote: >>> On 05/11/15 at 05:52pm, Li, Zhen-Hua wrote: >>>> When a device driver issues the first dma_map command for a device, we >>>> assign a new and empty page-table, thus removing all mappings from the >>>> old kernel for the device. >>> >>> Hi Zhenhua, >>> >>> From your patch I got it will remove all mappings, assign a new >>> page-table. But I didn't got why you stress an empty page-table. Did I >>> miss anything? >>> >>> Thanks >>> Baoquan >>> >>>> >>>> Signed-off-by: Li, Zhen-Hua <zhen-hual at hp.com> >>>> --