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;

Reply via email to