|
@@ -231,7 +231,7 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
|
|
|
*/
|
|
|
for (i = 0; i < TTM_BO_VM_NUM_PREFAULT; ++i) {
|
|
|
if (bo->mem.bus.is_iomem)
|
|
|
- pfn = ((bo->mem.bus.base + bo->mem.bus.offset) >> PAGE_SHIFT) + page_offset;
|
|
|
+ pfn = bdev->driver->io_mem_pfn(bo, page_offset);
|
|
|
else {
|
|
|
page = ttm->pages[page_offset];
|
|
|
if (unlikely(!page && i == 0)) {
|
|
@@ -324,6 +324,14 @@ static struct ttm_buffer_object *ttm_bo_vm_lookup(struct ttm_bo_device *bdev,
|
|
|
return bo;
|
|
|
}
|
|
|
|
|
|
+unsigned long ttm_bo_default_io_mem_pfn(struct ttm_buffer_object *bo,
|
|
|
+ unsigned long page_offset)
|
|
|
+{
|
|
|
+ return ((bo->mem.bus.base + bo->mem.bus.offset) >> PAGE_SHIFT)
|
|
|
+ + page_offset;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(ttm_bo_default_io_mem_pfn);
|
|
|
+
|
|
|
int ttm_bo_mmap(struct file *filp, struct vm_area_struct *vma,
|
|
|
struct ttm_bo_device *bdev)
|
|
|
{
|