Module Name: src Committed By: riastradh Date: Sun Dec 19 12:27:25 UTC 2021
Modified Files: src/sys/external/bsd/drm2/dist/drm/i915/gt: gen6_ppgtt.c Log Message: i915: Spruce up assertion in gen6_ppgtt.c pd_vma_bind. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 \ src/sys/external/bsd/drm2/dist/drm/i915/gt/gen6_ppgtt.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/dist/drm/i915/gt/gen6_ppgtt.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/gt/gen6_ppgtt.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/gt/gen6_ppgtt.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/i915/gt/gen6_ppgtt.c:1.6 Sun Dec 19 12:07:47 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/gt/gen6_ppgtt.c Sun Dec 19 12:27:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: gen6_ppgtt.c,v 1.6 2021/12/19 12:07:47 riastradh Exp $ */ +/* $NetBSD: gen6_ppgtt.c,v 1.7 2021/12/19 12:27:25 riastradh Exp $ */ // SPDX-License-Identifier: MIT /* @@ -6,7 +6,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: gen6_ppgtt.c,v 1.6 2021/12/19 12:07:47 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gen6_ppgtt.c,v 1.7 2021/12/19 12:27:25 riastradh Exp $"); #include <linux/log2.h> @@ -347,25 +347,28 @@ static int pd_vma_bind(struct i915_vma * px_base(ppgtt->base.pd)->ggtt_offset = ggtt_offset * sizeof(gen6_pte_t); #ifdef __NetBSD__ { + bus_size_t vm_nbytes = ggtt->vm.total; + bus_size_t vm_npgs = vm_nbytes >> PAGE_SHIFT; + bus_size_t gtt_nbytes = vm_npgs * sizeof(gen6_pte_t); + bus_size_t ggtt_offset_bytes = + (bus_size_t)ggtt_offset * sizeof(gen6_pte_t); int ret; - ppgtt->pd_bst = ggtt->gsmt; - KASSERTMSG((sizeof(gen6_pte_t) * (ggtt->vm.total >> PAGE_SHIFT) <= - ggtt->gsmsz - (sizeof(gen6_pte_t) * ggtt_offset)), - "oversize ggtt vm total %"PRIx64 - " requiring %"PRIx64" bytes of ptes," - " gsm has %"PRIx64" bytes for ptes", - ggtt->vm.total, - sizeof(gen6_pte_t) * (ggtt->vm.total >> PAGE_SHIFT), - ggtt->gsmsz - (sizeof(gen6_pte_t) * ggtt_offset)); - ret = -bus_space_subregion(ggtt->gsmt, ggtt->gsmh, - sizeof(gen6_pte_t) * ggtt_offset, - MIN(sizeof(gen6_pte_t) * (ggtt->vm.total >> PAGE_SHIFT), - ggtt->gsmsz - (sizeof(gen6_pte_t) * ggtt_offset)), + + KASSERTMSG(gtt_nbytes <= ggtt->gsmsz - ggtt_offset_bytes, + "oversize ggtt vm total 0x%"PRIx64" bytes 0x%"PRIx64" pgs," + " requiring 0x%"PRIx64" bytes of ptes at 0x%"PRIx64";" + " gsm has 0x%"PRIx64" bytes total with only 0x%"PRIx64" for ptes", + vm_nbytes, vm_npgs, + gtt_nbytes, ggtt_offset_bytes, + ggtt->gsmsz, ggtt->gsmsz - ggtt_offset_bytes); + ret = -bus_space_subregion(ggtt->gsmt, ggtt->gsmh, ggtt_offset_bytes, + MIN(gtt_nbytes, ggtt->gsmsz - ggtt_offset_bytes), &ppgtt->pd_bsh); if (ret) { DRM_ERROR("Unable to subregion the GGTT: %d\n", ret); return ret; } + ppgtt->pd_bst = ggtt->gsmt; } #else ppgtt->pd_addr = (gen6_pte_t __iomem *)ggtt->gsm + ggtt_offset;