As an ad-hoc experiment: can you replace the call to remap_pfn_range with remap_pfn_range_notrack (and export it if you build i915 modular) in remap_io_sg and see if that makes any difference?