Re: DMA error when sg->offset value is greater than PAGE_SIZE in Intel IOMMU

From: Casey Leedom
Date: Mon Sep 25 2017 - 16:05:54 EST


| From: Dan Williams <dan.j.williams@xxxxxxxxx>
| Sent: Monday, September 25, 2017 12:31 PM
| ...
| IIUC it looks like this has been broken ever since commit e1605495c716
| "intel-iommu: Introduce domain_sg_mapping() to speed up
| intel_map_sg()". I.e. it looks like the calculation for pte_val should
| be:
|
|    pteval = (page_to_phys(sg_page(sg)) + sg->offset) | prot;

Hhmmm, shouldn't that be:

pteval = (page_to_phys(sg_page(sg)) + (sg->offset>>PAGE_SHIFT)) | prot;

???

Casey