Module Name: src
Committed By: riastradh
Date: Sun Jun 23 00:49:20 UTC 2024
Modified Files:
src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c
Log Message:
ttm: Sync cacheability flag logic with Linux.
To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c
diff -u src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.26 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.27
--- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.26 Sun Jun 23 00:49:06 2024
+++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Sun Jun 23 00:49:20 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: ttm_bo_vm.c,v 1.26 2024/06/23 00:49:06 riastradh Exp $ */
+/* $NetBSD: ttm_bo_vm.c,v 1.27 2024/06/23 00:49:20 riastradh Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.26 2024/06/23 00:49:06 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.27 2024/06/23 00:49:20 riastradh Exp $");
#include <sys/types.h>
@@ -183,8 +183,8 @@ ttm_bo_uvm_fault_reserved(struct uvm_fau
voff_t uoffset; /* offset in bytes into bo */
unsigned startpage; /* offset in pages into bo */
unsigned i;
- vm_prot_t vm_prot; /* VM_PROT_* */
- pgprot_t pgprot; /* VM_PROT_* | PMAP_* cacheability flags */
+ vm_prot_t vm_prot = vmf->entry->protection; /* VM_PROT_* */
+ pgprot_t prot = vm_prot; /* VM_PROT_* | PMAP_* cacheability flags */
int err, ret;
/*
@@ -233,20 +233,17 @@ ttm_bo_uvm_fault_reserved(struct uvm_fau
goto out_io_unlock;
}
- vm_prot = vmf->entry->protection;
+ prot = ttm_io_prot(bo->mem.placement, prot);
if (!bo->mem.bus.is_iomem) {
struct ttm_operation_ctx ctx = {
.interruptible = false,
.no_wait_gpu = false,
.flags = TTM_OPT_FLAG_FORCE_ALLOC
+
};
u.ttm = bo->ttm;
size = (size_t)bo->ttm->num_pages << PAGE_SHIFT;
- if (ISSET(bo->mem.placement, TTM_PL_FLAG_CACHED))
- pgprot = vm_prot;
- else
- pgprot = ttm_io_prot(bo->mem.placement, vm_prot);
if (ttm_tt_populate(bo->ttm, &ctx)) {
ret = ENOMEM;
goto out_io_unlock;
@@ -254,7 +251,6 @@ ttm_bo_uvm_fault_reserved(struct uvm_fau
} else {
u.base = (bo->mem.bus.base + bo->mem.bus.offset);
size = bo->mem.bus.size;
- pgprot = ttm_io_prot(bo->mem.placement, vm_prot);
}
KASSERT(vmf->entry->start <= vaddr);
@@ -287,9 +283,12 @@ ttm_bo_uvm_fault_reserved(struct uvm_fau
vm_prot, 0);
paddr = pmap_phys_address(cookie);
+#if 0 /* XXX Why no PMAP_* flags added here? */
+ mmapflags = pmap_mmap_flags(cookie);
+#endif
}
ret = pmap_enter(vmf->orig_map->pmap, vaddr + i*PAGE_SIZE,
- paddr, vm_prot, (PMAP_CANFAIL | pgprot));
+ paddr, vm_prot, PMAP_CANFAIL | prot);
if (ret) {
KASSERT(ret != ERESTART);
break;