CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Thu Jul 21 08:07:56 UTC 2022 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: drm/ttm: Cast to potentially larger types before << PAGE_SHIFT. Not sure if this is a problem but it might affect, e.g., i386pae. Can't hurt, in any case, to cast to what the type will be after the shift anyway. To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 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.21 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.22 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.21 Wed Jul 20 01:12:14 2022 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Thu Jul 21 08:07:56 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.21 2022/07/20 01:12:14 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.22 2022/07/21 08:07:56 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.21 2022/07/20 01:12:14 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.22 2022/07/21 08:07:56 riastradh Exp $"); #include @@ -163,7 +163,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u .flags = TTM_OPT_FLAG_FORCE_ALLOC, }; u.ttm = bo->ttm; - size = (bo->ttm->num_pages << PAGE_SHIFT); + size = (size_t)bo->ttm->num_pages << PAGE_SHIFT; if (ISSET(bo->mem.placement, TTM_PL_FLAG_CACHED)) pgprot = vm_prot; else @@ -195,12 +195,12 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u if (!bo->mem.bus.is_iomem) { paddr = page_to_phys(u.ttm->pages[startpage + i]); } else if (bdev->driver->io_mem_pfn) { - paddr = (*bdev->driver->io_mem_pfn)(bo, startpage + i) - << PAGE_SHIFT; + paddr = (paddr_t)(*bdev->driver->io_mem_pfn)(bo, + startpage + i) << PAGE_SHIFT; } else { const paddr_t cookie = bus_space_mmap(bdev->memt, - u.base, ((startpage + i) << PAGE_SHIFT), vm_prot, - 0); + u.base, (off_t)(startpage + i) << PAGE_SHIFT, + vm_prot, 0); paddr = pmap_phys_address(cookie); } @@ -292,7 +292,7 @@ ttm_bo_mmap_object(struct ttm_bo_device /* Success! */ *uobjp = >uvmobj; *uoffsetp = (offset - - (drm_vma_node_start(>base.vma_node) << PAGE_SHIFT)); + ((off_t)drm_vma_node_start(>base.vma_node) << PAGE_SHIFT)); return 0; fail1: ttm_bo_put(bo);
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Thu Jul 21 08:07:56 UTC 2022 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: drm/ttm: Cast to potentially larger types before << PAGE_SHIFT. Not sure if this is a problem but it might affect, e.g., i386pae. Can't hurt, in any case, to cast to what the type will be after the shift anyway. To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Wed Jul 20 01:12:14 UTC 2022 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: drm/ttm: Handle io_mem_pfn, used by amdgpu. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Wed Jul 20 01:12:14 UTC 2022 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: drm/ttm: Handle io_mem_pfn, used by amdgpu. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 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.20 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.21 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.20 Sun Dec 19 11:34:14 2021 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Wed Jul 20 01:12:14 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.20 2021/12/19 11:34:14 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.21 2022/07/20 01:12:14 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.20 2021/12/19 11:34:14 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.21 2022/07/20 01:12:14 riastradh Exp $"); #include @@ -192,14 +192,17 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u /* XXX PGO_ALLPAGES? */ if (pps[i] == PGO_DONTCARE) continue; - if (bo->mem.bus.is_iomem) { + if (!bo->mem.bus.is_iomem) { + paddr = page_to_phys(u.ttm->pages[startpage + i]); + } else if (bdev->driver->io_mem_pfn) { + paddr = (*bdev->driver->io_mem_pfn)(bo, startpage + i) + << PAGE_SHIFT; + } else { const paddr_t cookie = bus_space_mmap(bdev->memt, u.base, ((startpage + i) << PAGE_SHIFT), vm_prot, 0); paddr = pmap_phys_address(cookie); - } else { - paddr = page_to_phys(u.ttm->pages[startpage + i]); } ret = -pmap_enter(ufi->orig_map->pmap, vaddr + i*PAGE_SIZE, paddr, vm_prot, (PMAP_CANFAIL | pgprot));
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sun Dec 19 11:34:14 UTC 2021 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: drm/ttm: More careful diagnostics earlier on. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 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.19 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.20 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.19 Sun Dec 19 11:34:06 2021 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Sun Dec 19 11:34:14 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.19 2021/12/19 11:34:06 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.20 2021/12/19 11:34:14 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.19 2021/12/19 11:34:06 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.20 2021/12/19 11:34:14 riastradh Exp $"); #include @@ -254,7 +254,29 @@ ttm_bo_mmap_object(struct ttm_bo_device ret = ttm_bo_uvm_lookup(bdev, startpage, npages, ); if (ret) goto fail0; - KASSERT(drm_vma_node_start(>base.vma_node) <= offset); + KASSERTMSG((drm_vma_node_start(>base.vma_node) <= startpage), + "mapping npages=0x%jx @ pfn=0x%jx" + " from vma npages=0x%jx @ pfn=0x%jx", + (uintmax_t)npages, + (uintmax_t)startpage, + (uintmax_t)drm_vma_node_size(>base.vma_node), + (uintmax_t)drm_vma_node_start(>base.vma_node)); + KASSERTMSG((npages <= drm_vma_node_size(>base.vma_node)), + "mapping npages=0x%jx @ pfn=0x%jx" + " from vma npages=0x%jx @ pfn=0x%jx", + (uintmax_t)npages, + (uintmax_t)startpage, + (uintmax_t)drm_vma_node_size(>base.vma_node), + (uintmax_t)drm_vma_node_start(>base.vma_node)); + KASSERTMSG(((startpage - drm_vma_node_start(>base.vma_node)) + <= (drm_vma_node_size(>base.vma_node) - npages)), + "mapping npages=0x%jx @ pfn=0x%jx" + " from vma npages=0x%jx @ pfn=0x%jx", + (uintmax_t)npages, + (uintmax_t)startpage, + (uintmax_t)drm_vma_node_size(>base.vma_node), + (uintmax_t)drm_vma_node_start(>base.vma_node)); + /* XXX Just assert this? */ if (__predict_false(bdev->driver->verify_access == NULL)) { ret = -EPERM;
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sun Dec 19 11:34:14 UTC 2021 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: drm/ttm: More careful diagnostics earlier on. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sun Dec 19 11:34:06 UTC 2021 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: drm/ttm: Compare bytes to bytes, not pages to bytes. While here, KASSERT -> KASSERTMSG for better diagnostics. To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 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.18 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.19 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.18 Sun Dec 19 11:09:25 2021 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Sun Dec 19 11:34:06 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.18 2021/12/19 11:09:25 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.19 2021/12/19 11:34:06 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.18 2021/12/19 11:09:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.19 2021/12/19 11:34:06 riastradh Exp $"); #include @@ -178,8 +178,12 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u KASSERT((ufi->entry->offset & (PAGE_SIZE - 1)) == 0); KASSERT(ufi->entry->offset <= size); KASSERT((vaddr - ufi->entry->start) <= (size - ufi->entry->offset)); - KASSERT(npages <= ((size - ufi->entry->offset) - - (vaddr - ufi->entry->start))); + KASSERTMSG(((size_t)npages << PAGE_SHIFT <= + ((size - ufi->entry->offset) - (vaddr - ufi->entry->start))), + "vaddr=%jx npages=%d bo=%p is_iomem=%d size=%zu" + " start=%jx offset=%jx", + (uintmax_t)vaddr, npages, bo, (int)bo->mem.bus.is_iomem, size, + (uintmax_t)ufi->entry->start, (uintmax_t)ufi->entry->offset); uoffset = (ufi->entry->offset + (vaddr - ufi->entry->start)); startpage = (uoffset >> PAGE_SHIFT); for (i = 0; i < npages; i++) {
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sun Dec 19 11:34:06 UTC 2021 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: drm/ttm: Compare bytes to bytes, not pages to bytes. While here, KASSERT -> KASSERTMSG for better diagnostics. To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sun Dec 19 11:09:25 UTC 2021 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: drm/ttm: ttm_bo_put(bo) won't bo=NULL like ttm_bo_unref() did. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 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.17 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.18 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.17 Sun Dec 19 09:57:33 2021 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Sun Dec 19 11:09:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.17 2021/12/19 09:57:33 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.18 2021/12/19 11:09:25 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.17 2021/12/19 09:57:33 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.18 2021/12/19 11:09:25 riastradh Exp $"); #include @@ -65,7 +65,6 @@ ttm_bo_uvm_detach(struct uvm_object *uob struct ttm_buffer_object, uvmobj); ttm_bo_put(bo); - KASSERT(bo == NULL); } int
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sun Dec 19 11:09:25 UTC 2021 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: drm/ttm: ttm_bo_put(bo) won't bo=NULL like ttm_bo_unref() did. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sun Dec 19 01:50:55 UTC 2021 Modified Files: src/sys/external/bsd/drm2/ttm: files.ttm ttm_agp_backend.c Log Message: Fix up ttm agp. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/ttm/files.ttm cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.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/files.ttm diff -u src/sys/external/bsd/drm2/ttm/files.ttm:1.4 src/sys/external/bsd/drm2/ttm/files.ttm:1.5 --- src/sys/external/bsd/drm2/ttm/files.ttm:1.4 Sun Dec 19 01:47:31 2021 +++ src/sys/external/bsd/drm2/ttm/files.ttm Sun Dec 19 01:50:54 2021 @@ -1,4 +1,4 @@ -# $NetBSD: files.ttm,v 1.4 2021/12/19 01:47:31 riastradh Exp $ +# $NetBSD: files.ttm,v 1.5 2021/12/19 01:50:54 riastradh Exp $ # TTM, the texture and tiling manager. @@ -7,6 +7,7 @@ version 20180827 define drmkms_ttm: drmkms makeoptions drmkms "CWARNFLAGS.ttm_bo.c"+="${${ACTIVE_CC} == gcc && ${HAVE_GCC:U0} >= 7:? -Wno-error=implicit-fallthrough :}" +makeoptions drmkms_ttm "CPPFLAGS.drmkms_ttm"+="-DCONFIG_AGP=1" makeoptions drmkms_ttm "CWARNFLAGS.drmkms_ttm"+="-Wno-missing-field-initializers" makeoptions drmkms_ttm "CWARNFLAGS.drmkms_ttm"+="-Wno-shadow" Index: src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c diff -u src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.8 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.9 --- src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.8 Tue Aug 28 03:41:40 2018 +++ src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c Sun Dec 19 01:50:54 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_agp_backend.c,v 1.8 2018/08/28 03:41:40 riastradh Exp $ */ +/* $NetBSD: ttm_agp_backend.c,v 1.9 2021/12/19 01:50:54 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_agp_backend.c,v 1.8 2018/08/28 03:41:40 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_agp_backend.c,v 1.9 2021/12/19 01:50:54 riastradh Exp $"); #include #include @@ -39,10 +39,11 @@ __KERNEL_RCSID(0, "$NetBSD: ttm_agp_back #include #include +#include + #include #include - -#if CONFIG_AGP +#include struct ttm_agp { struct ttm_dma_tt ttm_dma; @@ -54,8 +55,8 @@ struct ttm_agp { static const struct ttm_backend_func ttm_agp_backend_func; struct ttm_tt * -ttm_agp_tt_create(struct ttm_bo_device *bdev, struct agp_bridge_data *bridge, -unsigned long size, uint32_t page_flags, struct page *dummy_read_page) +ttm_agp_tt_create(struct ttm_buffer_object *bo, struct agp_bridge_data *bridge, +uint32_t page_flags) { struct ttm_agp *ttm_agp; @@ -63,8 +64,7 @@ ttm_agp_tt_create(struct ttm_bo_device * ttm_agp->agp = >abd_sc; ttm_agp->ttm_dma.ttm.func = _agp_backend_func; - if (ttm_dma_tt_init(_agp->ttm_dma, bdev, size, page_flags, - dummy_read_page) != 0) + if (ttm_dma_tt_init(_agp->ttm_dma, bo, page_flags) != 0) goto fail; /* Success! */ @@ -75,7 +75,7 @@ fail: kmem_free(ttm_agp, sizeof(*ttm_agp } int -ttm_agp_tt_populate(struct ttm_tt *ttm) +ttm_agp_tt_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx) { KASSERTMSG((ttm->state == tt_unpopulated), @@ -169,5 +169,3 @@ static const struct ttm_backend_func ttm .unbind = _agp_unbind, .destroy = _agp_destroy, }; - -#endif
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sun Dec 19 01:50:55 UTC 2021 Modified Files: src/sys/external/bsd/drm2/ttm: files.ttm ttm_agp_backend.c Log Message: Fix up ttm agp. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/ttm/files.ttm cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sun Dec 19 01:47:31 UTC 2021 Modified Files: src/sys/external/bsd/drm2/ttm: files.ttm Log Message: Build ttm with -Wno-missing-field-initializers, -Wno-shadow. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/ttm/files.ttm 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/files.ttm diff -u src/sys/external/bsd/drm2/ttm/files.ttm:1.3 src/sys/external/bsd/drm2/ttm/files.ttm:1.4 --- src/sys/external/bsd/drm2/ttm/files.ttm:1.3 Mon Sep 30 00:06:02 2019 +++ src/sys/external/bsd/drm2/ttm/files.ttm Sun Dec 19 01:47:31 2021 @@ -1,10 +1,14 @@ -# $NetBSD: files.ttm,v 1.3 2019/09/30 00:06:02 mrg Exp $ +# $NetBSD: files.ttm,v 1.4 2021/12/19 01:47:31 riastradh Exp $ # TTM, the texture and tiling manager. +version 20180827 + define drmkms_ttm: drmkms makeoptions drmkms "CWARNFLAGS.ttm_bo.c"+="${${ACTIVE_CC} == gcc && ${HAVE_GCC:U0} >= 7:? -Wno-error=implicit-fallthrough :}" +makeoptions drmkms_ttm "CWARNFLAGS.drmkms_ttm"+="-Wno-missing-field-initializers" +makeoptions drmkms_ttm "CWARNFLAGS.drmkms_ttm"+="-Wno-shadow" file external/bsd/drm2/ttm/ttm_agp_backend.c drmkms_ttm file external/bsd/drm2/dist/drm/ttm/ttm_memory.c drmkms_ttm
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sun Dec 19 01:47:31 UTC 2021 Modified Files: src/sys/external/bsd/drm2/ttm: files.ttm Log Message: Build ttm with -Wno-missing-field-initializers, -Wno-shadow. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/ttm/files.ttm Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sun Dec 19 01:47:24 UTC 2021 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Sync ttm_bo_vm.c. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 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.14 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.15 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.14 Sun Feb 23 15:46:40 2020 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Sun Dec 19 01:47:24 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.14 2020/02/23 15:46:40 ad Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.15 2021/12/19 01:47:24 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.14 2020/02/23 15:46:40 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.15 2021/12/19 01:47:24 riastradh Exp $"); #include @@ -101,7 +101,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u } /* Try to lock the buffer. */ - ret = ttm_bo_reserve(bo, true, true, false, NULL); + ret = ttm_bo_reserve(bo, true, true, NULL); if (ret) { if (ret != -EBUSY) goto out0; @@ -132,7 +132,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u ret = ttm_bo_uvm_fault_idle(bo, ufi); if (ret) { - KASSERT(ret == -ERESTART); + KASSERT(ret == -ERESTART || ret == -EFAULT); /* ttm_bo_uvm_fault_idle calls uvmfault_unlockall for us. */ ttm_bo_unreserve(bo); /* XXX errno Linux->NetBSD */ @@ -156,13 +156,18 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u size = bo->mem.bus.size; pgprot = ttm_io_prot(bo->mem.placement, vm_prot); } else { + struct ttm_operation_ctx ctx = { + .interruptible = false, + .no_wait_gpu = false, + .flags = TTM_OPT_FLAG_FORCE_ALLOC, + }; u.ttm = bo->ttm; size = (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 ((*u.ttm->bdev->driver->ttm_tt_populate)(u.ttm)) { + if (ttm_tt_populate(u.ttm, )) { ret = -ENOMEM; goto out2; } @@ -208,16 +213,24 @@ out0: uvmfault_unlockall(ufi, ufi->entry static int ttm_bo_uvm_fault_idle(struct ttm_buffer_object *bo, struct uvm_faultinfo *ufi) { + int ret = 0; - if (__predict_true(!test_bit(TTM_BO_PRIV_FLAG_MOVING, - >priv_flags))) - return 0; - if (ttm_bo_wait(bo, false, false, true) == 0) - return 0; - - uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, NULL); - (void)ttm_bo_wait(bo, false, true, false); - return -ERESTART; + if (__predict_true(!bo->moving)) + goto out0; + + if (dma_fence_is_signaled(bo->moving)) + goto out1; + + if (dma_fence_wait(bo->moving, true) != 0) { + ret = -EFAULT; + goto out2; + } + + ret = -ERESTART; +out2: uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, NULL); +out1: dma_fence_put(bo->moving); + bo->moving = NULL; +out0: return ret; } int
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sun Dec 19 01:47:24 UTC 2021 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Sync ttm_bo_vm.c. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: jmcneill Date: Tue Jan 28 23:24:09 UTC 2020 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Do not extract mmap flags from the bus_space_mmap cookie as they may conflict with the bo's existing protection flags. This caused VRAM to be incorrectly mapped as Device-nGnRE on Arm64 instead of Normal-NC. Ok riastradh@. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: jmcneill Date: Tue Jan 28 23:24:09 UTC 2020 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Do not extract mmap flags from the bus_space_mmap cookie as they may conflict with the bo's existing protection flags. This caused VRAM to be incorrectly mapped as Device-nGnRE on Arm64 instead of Normal-NC. Ok riastradh@. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 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.12 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.13 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.12 Sat Mar 9 01:59:47 2019 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Tue Jan 28 23:24:09 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.12 2019/03/09 01:59:47 mrg Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.13 2020/01/28 23:24:09 jmcneill Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.12 2019/03/09 01:59:47 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.13 2020/01/28 23:24:09 jmcneill Exp $"); #include @@ -89,7 +89,6 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u unsigned i; vm_prot_t vm_prot; /* VM_PROT_* */ pgprot_t pgprot; /* VM_PROT_* | PMAP_* cacheability flags */ - unsigned mmapflags; int ret; /* Thanks, uvm, but we don't need this lock. */ @@ -189,13 +188,11 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u 0); paddr = pmap_phys_address(cookie); - mmapflags = pmap_mmap_flags(cookie); } else { paddr = page_to_phys(u.ttm->pages[startpage + i]); - mmapflags = 0; } ret = -pmap_enter(ufi->orig_map->pmap, vaddr + i*PAGE_SIZE, - paddr, vm_prot, (PMAP_CANFAIL | pgprot | mmapflags)); + paddr, vm_prot, (PMAP_CANFAIL | pgprot)); if (ret) goto out3; }
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: chs Date: Sun Apr 21 15:49:50 UTC 2019 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bus_dma.c Log Message: in ttm_bus_dma_populate(), move the clearing of TTM_PAGE_FLAG_SWAPPED to be earlier to avoid wrongly asserting if bus_dmamap_load_pglist() fails. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.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_bus_dma.c diff -u src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.7 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.8 --- src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.7 Thu Mar 9 08:27:18 2017 +++ src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c Sun Apr 21 15:49:50 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bus_dma.c,v 1.7 2017/03/09 08:27:18 maya Exp $ */ +/* $NetBSD: ttm_bus_dma.c,v 1.8 2019/04/21 15:49:50 chs Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bus_dma.c,v 1.7 2017/03/09 08:27:18 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bus_dma.c,v 1.8 2019/04/21 15:49:50 chs Exp $"); #include @@ -70,6 +70,9 @@ ttm_bus_dma_populate(struct ttm_dma_tt * /* Mark it populated but unbound. */ ttm_dma->ttm.state = tt_unbound; + /* Mark it wired. */ + ttm_dma->ttm.page_flags &= ~TTM_PAGE_FLAG_SWAPPED; + /* Load the DMA map. */ /* XXX errno NetBSD->Linux */ ret = -bus_dmamap_load_pglist(ttm_dma->ttm.bdev->dmat, @@ -78,9 +81,6 @@ ttm_bus_dma_populate(struct ttm_dma_tt * if (ret) goto fail1; - /* Mark it wired. */ - ttm_dma->ttm.page_flags &= ~TTM_PAGE_FLAG_SWAPPED; - /* Success! */ return 0;
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: chs Date: Sun Apr 21 15:49:50 UTC 2019 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bus_dma.c Log Message: in ttm_bus_dma_populate(), move the clearing of TTM_PAGE_FLAG_SWAPPED to be earlier to avoid wrongly asserting if bus_dmamap_load_pglist() fails. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: mrg Date: Sat Mar 9 01:59:47 UTC 2019 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: ttm_bo_uvm_fault() is a netbsd API function and thus should return netbsd errnos. fix the one "return -ERESTART". To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: mrg Date: Sat Mar 9 01:59:47 UTC 2019 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: ttm_bo_uvm_fault() is a netbsd API function and thus should return netbsd errnos. fix the one "return -ERESTART". To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 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.11 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.12 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.11 Mon Aug 27 07:53:28 2018 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Sat Mar 9 01:59:47 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.11 2018/08/27 07:53:28 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.12 2019/03/09 01:59:47 mrg Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.11 2018/08/27 07:53:28 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.12 2019/03/09 01:59:47 mrg Exp $"); #include @@ -112,7 +112,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u */ uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, NULL); (void)ttm_bo_wait_unreserved(bo); - return -ERESTART; + return ERESTART; } /* drm prime buffers are not mappable. XXX Catch this earlier? */
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:53:28 UTC 2018 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: struct ttm_bo_device::fence_lock is no more. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 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.10 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.11 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.10 Tue Jul 28 01:25:00 2015 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Mon Aug 27 07:53:28 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.10 2015/07/28 01:25:00 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.11 2018/08/27 07:53:28 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.10 2015/07/28 01:25:00 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.11 2018/08/27 07:53:28 riastradh Exp $"); #include @@ -211,22 +211,16 @@ out0: uvmfault_unlockall(ufi, ufi->entry static int ttm_bo_uvm_fault_idle(struct ttm_buffer_object *bo, struct uvm_faultinfo *ufi) { - struct ttm_bo_device *const bdev = bo->bdev; - int ret = 0; - spin_lock(>fence_lock); if (__predict_true(!test_bit(TTM_BO_PRIV_FLAG_MOVING, >priv_flags))) - goto out; + return 0; if (ttm_bo_wait(bo, false, false, true) == 0) - goto out; + return 0; uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, NULL); (void)ttm_bo_wait(bo, false, true, false); - ret = -ERESTART; - -out: spin_unlock(>fence_lock); - return ret; + return -ERESTART; } int
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:53:28 UTC 2018 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: struct ttm_bo_device::fence_lock is no more. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: maya Date: Thu Mar 9 08:05:21 UTC 2017 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bus_dma.c Log Message: oops, copied the code from the wrong diff. ... unbreak the build, still doing the same thing. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: maya Date: Thu Mar 9 08:05:21 UTC 2017 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bus_dma.c Log Message: oops, copied the code from the wrong diff. ... unbreak the build, still doing the same thing. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.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_bus_dma.c diff -u src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.5 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.6 --- src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.5 Thu Mar 9 07:55:23 2017 +++ src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c Thu Mar 9 08:05:21 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bus_dma.c,v 1.5 2017/03/09 07:55:23 maya Exp $ */ +/* $NetBSD: ttm_bus_dma.c,v 1.6 2017/03/09 08:05:21 maya Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bus_dma.c,v 1.5 2017/03/09 07:55:23 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bus_dma.c,v 1.6 2017/03/09 08:05:21 maya Exp $"); #include @@ -86,9 +86,9 @@ ttm_bus_dma_populate(struct ttm_dma_tt * fail2: __unused bus_dmamap_unload(ttm_dma->ttm.bdev->dmat, ttm_dma->dma_address); -fail1: KASSERT(ttm->state == tt_unbound); +fail1: KASSERT(ttm_dma->ttm.state == tt_unbound); ttm_tt_unwire(_dma->ttm); - ttm->state = tt_unpopulated; + ttm_dma->ttm.state = tt_unpopulated; fail0: KASSERT(ret); return ret; }
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: maya Date: Thu Mar 9 07:55:23 UTC 2017 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bus_dma.c Log Message: Restore unpopulated state on fail1 error path. I shouldn't have committed it separately. from riastradh@ To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: maya Date: Thu Mar 9 07:55:23 UTC 2017 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bus_dma.c Log Message: Restore unpopulated state on fail1 error path. I shouldn't have committed it separately. from riastradh@ To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.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_bus_dma.c diff -u src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.4 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.5 --- src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.4 Thu Mar 9 07:50:50 2017 +++ src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c Thu Mar 9 07:55:23 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bus_dma.c,v 1.4 2017/03/09 07:50:50 maya Exp $ */ +/* $NetBSD: ttm_bus_dma.c,v 1.5 2017/03/09 07:55:23 maya Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bus_dma.c,v 1.4 2017/03/09 07:50:50 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bus_dma.c,v 1.5 2017/03/09 07:55:23 maya Exp $"); #include @@ -86,7 +86,9 @@ ttm_bus_dma_populate(struct ttm_dma_tt * fail2: __unused bus_dmamap_unload(ttm_dma->ttm.bdev->dmat, ttm_dma->dma_address); -fail1: ttm_tt_unwire(_dma->ttm); +fail1: KASSERT(ttm->state == tt_unbound); + ttm_tt_unwire(_dma->ttm); + ttm->state = tt_unpopulated; fail0: KASSERT(ret); return ret; }
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: maya Date: Thu Mar 9 07:50:50 UTC 2017 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bus_dma.c Log Message: Remove redundant handling for tt_unbound case, and assert that it is the unpopulated case. All callers of ttm_bus_dma_populate (ttm_agp_tt_populate, radeon_ttm_tt_populate, nouveau_ttm_tt_populate) return early if it isn't unpopulated. from riastradh@ To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: maya Date: Thu Mar 9 07:50:50 UTC 2017 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bus_dma.c Log Message: Remove redundant handling for tt_unbound case, and assert that it is the unpopulated case. All callers of ttm_bus_dma_populate (ttm_agp_tt_populate, radeon_ttm_tt_populate, nouveau_ttm_tt_populate) return early if it isn't unpopulated. from riastradh@ To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.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_bus_dma.c diff -u src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.3 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.4 --- src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.3 Thu Mar 9 07:42:36 2017 +++ src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c Thu Mar 9 07:50:50 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bus_dma.c,v 1.3 2017/03/09 07:42:36 maya Exp $ */ +/* $NetBSD: ttm_bus_dma.c,v 1.4 2017/03/09 07:50:50 maya Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bus_dma.c,v 1.3 2017/03/09 07:42:36 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bus_dma.c,v 1.4 2017/03/09 07:50:50 maya Exp $"); #include @@ -55,23 +55,12 @@ ttm_bus_dma_populate(struct ttm_dma_tt * { int ret; - KASSERT(ttm_dma->ttm.state != tt_bound); + KASSERT(ttm_dma->ttm.state == tt_unpopulated); - /* Check the current state. */ - if (ttm_dma->ttm.state == tt_unbound) { - /* - * If it's populated, then if the pages are wired and - * loaded already, nothing to do. - */ - if (!ISSET(ttm_dma->ttm.page_flags, TTM_PAGE_FLAG_SWAPPED)) - return 0; - } else if (ttm_dma->ttm.state == tt_unpopulated) { - /* If it's unpopulated, it can't be swapped. */ - KASSERT(!ISSET(ttm_dma->ttm.page_flags, - TTM_PAGE_FLAG_SWAPPED)); - /* Pretend it is now, for the sake of ttm_tt_wire. */ - ttm_dma->ttm.page_flags |= TTM_PAGE_FLAG_SWAPPED; - } + /* If it's unpopulated, it can't be swapped. */ + KASSERT(!ISSET(ttm_dma->ttm.page_flags, TTM_PAGE_FLAG_SWAPPED)); + /* Pretend it is now, for the sake of ttm_tt_wire. */ + ttm_dma->ttm.page_flags |= TTM_PAGE_FLAG_SWAPPED; /* Wire the uvm pages and fill the ttm page array. */ ret = ttm_tt_wire(_dma->ttm);
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: maya Date: Thu Mar 9 07:42:36 UTC 2017 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bus_dma.c Log Message: Mark the state as unbound a bit earlier, to avoid triggering an assert in the fail1 error path. PR kern/52048: radeondrmkms: ttm->state == tt_unbound assertion To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.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_bus_dma.c diff -u src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.2 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.3 --- src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c:1.2 Sun Apr 24 04:26:12 2016 +++ src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c Thu Mar 9 07:42:36 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bus_dma.c,v 1.2 2016/04/24 04:26:12 riastradh Exp $ */ +/* $NetBSD: ttm_bus_dma.c,v 1.3 2017/03/09 07:42:36 maya Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bus_dma.c,v 1.2 2016/04/24 04:26:12 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bus_dma.c,v 1.3 2017/03/09 07:42:36 maya Exp $"); #include @@ -78,6 +78,9 @@ ttm_bus_dma_populate(struct ttm_dma_tt * if (ret) goto fail0; + /* Mark it populated but unbound. */ + ttm_dma->ttm.state = tt_unbound; + /* Load the DMA map. */ /* XXX errno NetBSD->Linux */ ret = -bus_dmamap_load_pglist(ttm_dma->ttm.bdev->dmat, @@ -89,9 +92,6 @@ ttm_bus_dma_populate(struct ttm_dma_tt * /* Mark it wired. */ ttm_dma->ttm.page_flags &= ~TTM_PAGE_FLAG_SWAPPED; - /* Mark it populated but unbound. */ - ttm_dma->ttm.state = tt_unbound; - /* Success! */ return 0;
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: maya Date: Thu Mar 9 07:42:36 UTC 2017 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bus_dma.c Log Message: Mark the state as unbound a bit earlier, to avoid triggering an assert in the fail1 error path. PR kern/52048: radeondrmkms: ttm->state == tt_unbound assertion To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/ttm/ttm_bus_dma.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: jmcneill Date: Sat Oct 17 21:05:57 UTC 2015 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_agp_backend.c Log Message: only build ttm_agp code if __OS_HAS_AGP is defined To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: jmcneill Date: Sat Oct 17 21:05:57 UTC 2015 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_agp_backend.c Log Message: only build ttm_agp code if __OS_HAS_AGP is defined To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.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_agp_backend.c diff -u src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.4 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.5 --- src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.4 Sat Apr 25 21:00:29 2015 +++ src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c Sat Oct 17 21:05:57 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_agp_backend.c,v 1.4 2015/04/25 21:00:29 riastradh Exp $ */ +/* $NetBSD: ttm_agp_backend.c,v 1.5 2015/10/17 21:05:57 jmcneill Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_agp_backend.c,v 1.4 2015/04/25 21:00:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_agp_backend.c,v 1.5 2015/10/17 21:05:57 jmcneill Exp $"); #include #include @@ -42,6 +42,8 @@ __KERNEL_RCSID(0, "$NetBSD: ttm_agp_back #include #include +#if __OS_HAS_AGP + struct ttm_agp { struct ttm_dma_tt ttm_dma; struct agp_softc *agp; @@ -164,3 +166,5 @@ static const struct ttm_backend_func ttm .unbind = _agp_unbind, .destroy = _agp_destroy, }; + +#endif
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Mon Jul 27 22:26:51 UTC 2015 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Fix error branch: ttm_bo_unreserve on failure after ttm_bo_reserve. Tiny chance this will fix PR kern/49862 by not leaking a ww_mutex lock. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 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.8 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.9 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.8 Thu Nov 6 13:14:31 2014 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Mon Jul 27 22:26:50 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.8 2014/11/06 13:14:31 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.9 2015/07/27 22:26:50 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.8 2014/11/06 13:14:31 riastradh Exp $); +__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.9 2015/07/27 22:26:50 riastradh Exp $); #include sys/types.h @@ -118,7 +118,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u /* drm prime buffers are not mappable. XXX Catch this earlier? */ if (bo-ttm ISSET(bo-ttm-page_flags, TTM_PAGE_FLAG_SG)) { ret = -EINVAL; - goto out0; + goto out1; } /* Notify the driver of a fault if it wants. */ @@ -127,7 +127,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u if (ret) { if (ret == -ERESTART) ret = -EIO; - goto out0; + goto out1; } }
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Mon Jul 27 22:26:51 UTC 2015 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Fix error branch: ttm_bo_unreserve on failure after ttm_bo_reserve. Tiny chance this will fix PR kern/49862 by not leaking a ww_mutex lock. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Tue Jul 28 01:25:00 UTC 2015 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: ttm_bo_unreserve in case of ttm_bo_uvm_fault_idle restart. Better chance of fixing PR kern/49862 by avoiding leaking a buffer ww_mutex lock. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Tue Jul 28 01:25:00 UTC 2015 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: ttm_bo_unreserve in case of ttm_bo_uvm_fault_idle restart. Better chance of fixing PR kern/49862 by avoiding leaking a buffer ww_mutex lock. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 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.9 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.10 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.9 Mon Jul 27 22:26:50 2015 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Tue Jul 28 01:25:00 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.9 2015/07/27 22:26:50 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.10 2015/07/28 01:25:00 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.9 2015/07/27 22:26:50 riastradh Exp $); +__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.10 2015/07/28 01:25:00 riastradh Exp $); #include sys/types.h @@ -133,8 +133,9 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u ret = ttm_bo_uvm_fault_idle(bo, ufi); if (ret) { - /* Unlocks if it restarts. */ KASSERT(ret == -ERESTART); + /* ttm_bo_uvm_fault_idle calls uvmfault_unlockall for us. */ + ttm_bo_unreserve(bo); /* XXX errno Linux-NetBSD */ return -ret; }
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sat Apr 25 21:00:29 UTC 2015 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_agp_backend.c Log Message: kmem_free the container structure, not a substructure. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sat Apr 25 21:00:29 UTC 2015 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_agp_backend.c Log Message: kmem_free the container structure, not a substructure. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.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_agp_backend.c diff -u src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.3 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.4 --- src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.3 Thu Aug 14 16:50:22 2014 +++ src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c Sat Apr 25 21:00:29 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_agp_backend.c,v 1.3 2014/08/14 16:50:22 riastradh Exp $ */ +/* $NetBSD: ttm_agp_backend.c,v 1.4 2015/04/25 21:00:29 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: ttm_agp_backend.c,v 1.3 2014/08/14 16:50:22 riastradh Exp $); +__KERNEL_RCSID(0, $NetBSD: ttm_agp_backend.c,v 1.4 2015/04/25 21:00:29 riastradh Exp $); #include sys/types.h #include sys/kmem.h @@ -156,7 +156,7 @@ ttm_agp_destroy(struct ttm_tt *ttm) if (ttm_agp-bound) ttm_agp_unbind(ttm); ttm_tt_fini(ttm); - kmem_free(ttm, sizeof(*ttm)); + kmem_free(ttm_agp, sizeof(*ttm_agp)); } static const struct ttm_backend_func ttm_agp_backend_func = {
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Thu Nov 6 13:14:31 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Update comment to reflect recent change to. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 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.7 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.8 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.7 Wed Nov 5 15:03:19 2014 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Thu Nov 6 13:14:31 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.7 2014/11/05 15:03:19 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.8 2014/11/06 13:14:31 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.7 2014/11/05 15:03:19 riastradh Exp $); +__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.8 2014/11/06 13:14:31 riastradh Exp $); #include sys/types.h @@ -107,9 +107,8 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u if (ret != -EBUSY) goto out0; /* - * It's currently locked. Unlock the fault (requires - * relocking uobj's vmobjlock first), wait for it, and - * start over. + * It's currently locked. Unlock the fault, wait for + * it, and start over. */ uvmfault_unlockall(ufi, ufi-entry-aref.ar_amap, NULL); (void)ttm_bo_wait_unreserved(bo);
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Thu Nov 6 13:14:31 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Update comment to reflect recent change to. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Wed Nov 5 14:47:16 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Simplify uvmfault_unlockall use in ttm_bo_uvm_fault. Pass NULL for uobj instead of locking uobj-vmobjlock before calling uvmfault_unlockall. Should fix lockdebug unlocking-unlocked-mutex crash in ttm_bo_uvm_fault_idle. XXX pullup to netbsd-7 To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 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.5 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.6 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.5 Wed Sep 10 18:24:16 2014 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Wed Nov 5 14:47:16 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.5 2014/09/10 18:24:16 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.6 2014/11/05 14:47:16 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.5 2014/09/10 18:24:16 riastradh Exp $); +__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.6 2014/11/05 14:47:16 riastradh Exp $); #include sys/types.h @@ -45,7 +45,7 @@ __KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c, #include ttm/ttm_bo_driver.h static int ttm_bo_uvm_fault_idle(struct ttm_buffer_object *, - struct uvm_faultinfo *, struct uvm_object *); + struct uvm_faultinfo *); static int ttm_bo_uvm_lookup(struct ttm_bo_device *, unsigned long, unsigned long, struct ttm_buffer_object **); @@ -111,8 +111,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u * relocking uobj's vmobjlock first), wait for it, and * start over. */ - mutex_enter(uobj-vmobjlock); - uvmfault_unlockall(ufi, ufi-entry-aref.ar_amap, uobj); + uvmfault_unlockall(ufi, ufi-entry-aref.ar_amap, NULL); (void)ttm_bo_wait_unreserved(bo); return -ERESTART; } @@ -204,15 +203,13 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u out3: pmap_update(ufi-orig_map-pmap); out2: ttm_mem_io_unlock(man); out1: ttm_bo_unreserve(bo); -out0: mutex_enter(uobj-vmobjlock); - uvmfault_unlockall(ufi, ufi-entry-aref.ar_amap, uobj); +out0: uvmfault_unlockall(ufi, ufi-entry-aref.ar_amap, NULL); /* XXX errno Linux-NetBSD */ return -ret; } static int -ttm_bo_uvm_fault_idle(struct ttm_buffer_object *bo, struct uvm_faultinfo *ufi, -struct uvm_object *uobj) +ttm_bo_uvm_fault_idle(struct ttm_buffer_object *bo, struct uvm_faultinfo *ufi) { struct ttm_bo_device *const bdev = bo-bdev; int ret = 0; @@ -224,7 +221,7 @@ ttm_bo_uvm_fault_idle(struct ttm_buffer_ if (ttm_bo_wait(bo, false, false, true) == 0) goto out; - uvmfault_unlockall(ufi, ufi-entry-aref.ar_amap, uobj); + uvmfault_unlockall(ufi, ufi-entry-aref.ar_amap, NULL); (void)ttm_bo_wait(bo, false, true, false); ret = -ERESTART;
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Wed Nov 5 15:03:19 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Oops -- fix call to ttm_bo_uvm_fault_idle in last commit. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 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.6 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.7 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.6 Wed Nov 5 14:47:16 2014 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Wed Nov 5 15:03:19 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.6 2014/11/05 14:47:16 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.7 2014/11/05 15:03:19 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.6 2014/11/05 14:47:16 riastradh Exp $); +__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.7 2014/11/05 15:03:19 riastradh Exp $); #include sys/types.h @@ -132,7 +132,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u } } - ret = ttm_bo_uvm_fault_idle(bo, ufi, uobj); + ret = ttm_bo_uvm_fault_idle(bo, ufi); if (ret) { /* Unlocks if it restarts. */ KASSERT(ret == -ERESTART);
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Wed Nov 5 14:47:16 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Simplify uvmfault_unlockall use in ttm_bo_uvm_fault. Pass NULL for uobj instead of locking uobj-vmobjlock before calling uvmfault_unlockall. Should fix lockdebug unlocking-unlocked-mutex crash in ttm_bo_uvm_fault_idle. XXX pullup to netbsd-7 To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Wed Nov 5 15:03:19 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Oops -- fix call to ttm_bo_uvm_fault_idle in last commit. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Wed Sep 10 18:24:16 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: We dropped vmobjlock, so reacquire it before uvmfault_unlockall. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 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.4 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.5 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.4 Wed Aug 20 13:48:08 2014 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Wed Sep 10 18:24:16 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.4 2014/08/20 13:48:08 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.5 2014/09/10 18:24:16 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.4 2014/08/20 13:48:08 riastradh Exp $); +__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.5 2014/09/10 18:24:16 riastradh Exp $); #include sys/types.h @@ -107,9 +107,11 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u if (ret != -EBUSY) goto out0; /* - * It's currently locked. Unlock the fault, wait for - * it, and start over. + * It's currently locked. Unlock the fault (requires + * relocking uobj's vmobjlock first), wait for it, and + * start over. */ + mutex_enter(uobj-vmobjlock); uvmfault_unlockall(ufi, ufi-entry-aref.ar_amap, uobj); (void)ttm_bo_wait_unreserved(bo); return -ERESTART;
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Wed Sep 10 18:24:16 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: We dropped vmobjlock, so reacquire it before uvmfault_unlockall. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Mon Aug 18 01:17:35 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: bus_space_mmap cookies are not paddrs, so don't pmap_enter them! To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 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.2 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.3 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2 Sat Aug 9 00:18:58 2014 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Mon Aug 18 01:17:34 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.2 2014/08/09 00:18:58 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.3 2014/08/18 01:17:34 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.2 2014/08/09 00:18:58 riastradh Exp $); +__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.3 2014/08/18 01:17:34 riastradh Exp $); #include sys/types.h @@ -89,6 +89,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u unsigned i; vm_prot_t vm_prot; /* VM_PROT_* */ pgprot_t pgprot; /* VM_PROT_* | PMAP_* cacheability flags */ + unsigned mmapflags; int ret; /* Copy-on-write mappings make no sense for the graphics aperture. */ @@ -178,13 +179,19 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u /* XXX PGO_ALLPAGES? */ if (pps[i] == PGO_DONTCARE) continue; - if (bo-mem.bus.is_iomem) - paddr = bus_space_mmap(bdev-memt, u.base, - ((startpage + i) PAGE_SHIFT), vm_prot, 0); - else + if (bo-mem.bus.is_iomem) { + const paddr_t cookie = bus_space_mmap(bdev-memt, + u.base, ((startpage + i) PAGE_SHIFT), vm_prot, + 0); + + paddr = pmap_phys_address(cookie); + mmapflags = pmap_mmap_flags(cookie); + } else { paddr = page_to_phys(u.ttm-pages[startpage + i]); + mmapflags = 0; + } ret = -pmap_enter(ufi-orig_map-pmap, vaddr + i*PAGE_SIZE, - paddr, vm_prot, (PMAP_CANFAIL | pgprot)); + paddr, vm_prot, (PMAP_CANFAIL | pgprot | mmapflags)); if (ret) goto out3; }
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Mon Aug 18 01:17:35 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: bus_space_mmap cookies are not paddrs, so don't pmap_enter them! To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 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.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Thu Aug 14 16:47:52 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_agp_backend.c Log Message: Use ttm_dma_tt_init in ttm_agp_tt_create so we can use ttm_bus_dma. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.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_agp_backend.c diff -u src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.1 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.2 --- src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.1 Wed Jul 16 20:59:58 2014 +++ src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c Thu Aug 14 16:47:52 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_agp_backend.c,v 1.1 2014/07/16 20:59:58 riastradh Exp $ */ +/* $NetBSD: ttm_agp_backend.c,v 1.2 2014/08/14 16:47:52 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: ttm_agp_backend.c,v 1.1 2014/07/16 20:59:58 riastradh Exp $); +__KERNEL_RCSID(0, $NetBSD: ttm_agp_backend.c,v 1.2 2014/08/14 16:47:52 riastradh Exp $); #include sys/types.h #include sys/kmem.h @@ -61,7 +61,7 @@ ttm_agp_tt_create(struct ttm_bo_device * ttm_agp-agp = bridge-abd_sc; ttm_agp-ttm_dma.ttm.func = ttm_agp_backend_func; - if (ttm_tt_init(ttm_agp-ttm_dma.ttm, bdev, size, page_flags, + if (ttm_dma_tt_init(ttm_agp-ttm_dma, bdev, size, page_flags, dummy_read_page) != 0) goto fail;
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Thu Aug 14 16:50:22 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_agp_backend.c Log Message: Zero ttm_agp objects on creation. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.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_agp_backend.c diff -u src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.2 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.3 --- src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.2 Thu Aug 14 16:47:52 2014 +++ src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c Thu Aug 14 16:50:22 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_agp_backend.c,v 1.2 2014/08/14 16:47:52 riastradh Exp $ */ +/* $NetBSD: ttm_agp_backend.c,v 1.3 2014/08/14 16:50:22 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: ttm_agp_backend.c,v 1.2 2014/08/14 16:47:52 riastradh Exp $); +__KERNEL_RCSID(0, $NetBSD: ttm_agp_backend.c,v 1.3 2014/08/14 16:50:22 riastradh Exp $); #include sys/types.h #include sys/kmem.h @@ -57,7 +57,7 @@ ttm_agp_tt_create(struct ttm_bo_device * { struct ttm_agp *ttm_agp; - ttm_agp = kmem_alloc(sizeof(*ttm_agp), KM_SLEEP); + ttm_agp = kmem_zalloc(sizeof(*ttm_agp), KM_SLEEP); ttm_agp-agp = bridge-abd_sc; ttm_agp-ttm_dma.ttm.func = ttm_agp_backend_func;
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Thu Aug 14 16:47:52 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_agp_backend.c Log Message: Use ttm_dma_tt_init in ttm_agp_tt_create so we can use ttm_bus_dma. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Thu Aug 14 16:50:22 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_agp_backend.c Log Message: Zero ttm_agp objects on creation. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sat Aug 9 00:18:59 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Multiply by PAGE_SIZE, not PAGE_SHIFT! To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 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.1 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2 --- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.1 Wed Jul 16 20:59:58 2014 +++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c Sat Aug 9 00:18:58 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_vm.c,v 1.1 2014/07/16 20:59:58 riastradh Exp $ */ +/* $NetBSD: ttm_bo_vm.c,v 1.2 2014/08/09 00:18:58 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.1 2014/07/16 20:59:58 riastradh Exp $); +__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.2 2014/08/09 00:18:58 riastradh Exp $); #include sys/types.h @@ -183,7 +183,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u ((startpage + i) PAGE_SHIFT), vm_prot, 0); else paddr = page_to_phys(u.ttm-pages[startpage + i]); - ret = -pmap_enter(ufi-orig_map-pmap, vaddr + i*PAGE_SHIFT, + ret = -pmap_enter(ufi-orig_map-pmap, vaddr + i*PAGE_SIZE, paddr, vm_prot, (PMAP_CANFAIL | pgprot)); if (ret) goto out3;
CVS commit: src/sys/external/bsd/drm2/ttm
Module Name:src Committed By: riastradh Date: Sat Aug 9 00:18:59 UTC 2014 Modified Files: src/sys/external/bsd/drm2/ttm: ttm_bo_vm.c Log Message: Multiply by PAGE_SIZE, not PAGE_SHIFT! To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 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.