Merge v5.6-rc2 into drm-misc-next
Lyude needs some patches in 5.6-rc2 and we didn't bring drm-misc-next forward yet, so it looks like a good occasion. Signed-off-by: Maxime Ripard <maxime@cerno.tech>
This commit is contained in:
@@ -218,7 +218,7 @@ static int ttm_mem_reg_ioremap(struct ttm_bo_device *bdev, struct ttm_mem_reg *m
|
||||
if (mem->placement & TTM_PL_FLAG_WC)
|
||||
addr = ioremap_wc(mem->bus.base + mem->bus.offset, mem->bus.size);
|
||||
else
|
||||
addr = ioremap_nocache(mem->bus.base + mem->bus.offset, mem->bus.size);
|
||||
addr = ioremap(mem->bus.base + mem->bus.offset, mem->bus.size);
|
||||
if (!addr) {
|
||||
(void) ttm_mem_io_lock(man, false);
|
||||
ttm_mem_io_free(bdev, mem);
|
||||
@@ -563,7 +563,7 @@ static int ttm_bo_ioremap(struct ttm_buffer_object *bo,
|
||||
map->virtual = ioremap_wc(bo->mem.bus.base + bo->mem.bus.offset + offset,
|
||||
size);
|
||||
else
|
||||
map->virtual = ioremap_nocache(bo->mem.bus.base + bo->mem.bus.offset + offset,
|
||||
map->virtual = ioremap(bo->mem.bus.base + bo->mem.bus.offset + offset,
|
||||
size);
|
||||
}
|
||||
return (!map->virtual) ? -ENOMEM : 0;
|
||||
|
@@ -179,7 +179,6 @@ vm_fault_t ttm_bo_vm_fault_reserved(struct vm_fault *vmf,
|
||||
pgoff_t num_prefault)
|
||||
{
|
||||
struct vm_area_struct *vma = vmf->vma;
|
||||
struct vm_area_struct cvma = *vma;
|
||||
struct ttm_buffer_object *bo = vma->vm_private_data;
|
||||
struct ttm_bo_device *bdev = bo->bdev;
|
||||
unsigned long page_offset;
|
||||
@@ -250,7 +249,7 @@ vm_fault_t ttm_bo_vm_fault_reserved(struct vm_fault *vmf,
|
||||
goto out_io_unlock;
|
||||
}
|
||||
|
||||
cvma.vm_page_prot = ttm_io_prot(bo->mem.placement, prot);
|
||||
prot = ttm_io_prot(bo->mem.placement, prot);
|
||||
if (!bo->mem.bus.is_iomem) {
|
||||
struct ttm_operation_ctx ctx = {
|
||||
.interruptible = false,
|
||||
@@ -266,7 +265,7 @@ vm_fault_t ttm_bo_vm_fault_reserved(struct vm_fault *vmf,
|
||||
}
|
||||
} else {
|
||||
/* Iomem should not be marked encrypted */
|
||||
cvma.vm_page_prot = pgprot_decrypted(cvma.vm_page_prot);
|
||||
prot = pgprot_decrypted(prot);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -289,11 +288,20 @@ vm_fault_t ttm_bo_vm_fault_reserved(struct vm_fault *vmf,
|
||||
pfn = page_to_pfn(page);
|
||||
}
|
||||
|
||||
/*
|
||||
* Note that the value of @prot at this point may differ from
|
||||
* the value of @vma->vm_page_prot in the caching- and
|
||||
* encryption bits. This is because the exact location of the
|
||||
* data may not be known at mmap() time and may also change
|
||||
* at arbitrary times while the data is mmap'ed.
|
||||
* See vmf_insert_mixed_prot() for a discussion.
|
||||
*/
|
||||
if (vma->vm_flags & VM_MIXEDMAP)
|
||||
ret = vmf_insert_mixed(&cvma, address,
|
||||
__pfn_to_pfn_t(pfn, PFN_DEV));
|
||||
ret = vmf_insert_mixed_prot(vma, address,
|
||||
__pfn_to_pfn_t(pfn, PFN_DEV),
|
||||
prot);
|
||||
else
|
||||
ret = vmf_insert_pfn(&cvma, address, pfn);
|
||||
ret = vmf_insert_pfn_prot(vma, address, pfn, prot);
|
||||
|
||||
/* Never error on prefaulted PTEs */
|
||||
if (unlikely((ret & VM_FAULT_ERROR))) {
|
||||
@@ -325,7 +333,7 @@ vm_fault_t ttm_bo_vm_fault(struct vm_fault *vmf)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
prot = vm_get_page_prot(vma->vm_flags);
|
||||
prot = vma->vm_page_prot;
|
||||
ret = ttm_bo_vm_fault_reserved(vmf, prot, TTM_BO_VM_NUM_PREFAULT);
|
||||
if (ret == VM_FAULT_RETRY && !(vmf->flags & FAULT_FLAG_RETRY_NOWAIT))
|
||||
return ret;
|
||||
|
Reference in New Issue
Block a user