Module Name: src Committed By: riastradh Date: Sun Dec 19 10:20:10 UTC 2021
Modified Files: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu: amdgpu_ih.c Log Message: Fix up ring bus dma alloc. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ih.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/amd/amdgpu/amdgpu_ih.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ih.c:1.5 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ih.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ih.c:1.5 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ih.c Sun Dec 19 10:20:10 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_ih.c,v 1.5 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_ih.c,v 1.6 2021/12/19 10:20:10 riastradh Exp $ */ /* * Copyright 2014 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_ih.c,v 1.5 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_ih.c,v 1.6 2021/12/19 10:20:10 riastradh Exp $"); #include <linux/dma-mapping.h> @@ -66,45 +66,38 @@ int amdgpu_ih_ring_init(struct amdgpu_de /* add 8 bytes for the rptr/wptr shadows and * add them to the end of the ring allocation. */ -#ifdef __NetBSD__ /* XXX post-merge audit */ - const bus_size_t size = adev->irq.ih.ring_size + 8; +#ifdef __NetBSD__ + const bus_size_t size = ih->ring_size + 8; int rseg __diagused; void *kva; - r = -bus_dmamem_alloc(adev->ddev->dmat, size, - PAGE_SIZE, 0, &adev->irq.ih.ring_seg, 1, &rseg, - BUS_DMA_WAITOK); + r = -bus_dmamem_alloc(adev->ddev->dmat, size, PAGE_SIZE, 0, + &ih->ring_seg, 1, &rseg, BUS_DMA_WAITOK); if (r) { fail0: KASSERT(r); return r; } KASSERT(rseg == 0); - r = -bus_dmamap_create(adev->ddev->dmat, size, 1, - PAGE_SIZE, 0, BUS_DMA_WAITOK, - &adev->irq.ih.ring_map); + r = -bus_dmamap_create(adev->ddev->dmat, size, 1, PAGE_SIZE, 0, + BUS_DMA_WAITOK, &ih->ring_map); if (r) { -fail1: bus_dmamem_free(adev->ddev->dmat, - &adev->irq.ih.ring_seg, 1); +fail1: bus_dmamem_free(adev->ddev->dmat, &ih->ring_seg, 1); goto fail0; } - r = -bus_dmamem_map(adev->ddev->dmat, - &adev->irq.ih.ring_seg, 1, size, &kva, - BUS_DMA_WAITOK); - if (r) { -fail2: bus_dmamap_destroy(adev->ddev->dmat, - adev->irq.ih.ring_map); - adev->irq.ih.ring_map = NULL; + r = -bus_dmamem_map(adev->ddev->dmat, &ih->ring_seg, 1, size, + &kva, BUS_DMA_WAITOK); + if (r) { +fail2: bus_dmamap_destroy(adev->ddev->dmat, ih->ring_map); + ih->ring_map = NULL; goto fail1; } - r = -bus_dmamap_load(adev->ddev->dmat, - adev->irq.ih.ring_map, kva, size, NULL, - BUS_DMA_WAITOK); + r = -bus_dmamap_load(adev->ddev->dmat, ih->ring_map, kva, size, + NULL, BUS_DMA_WAITOK); if (r) { fail3: __unused bus_dmamem_unmap(adev->ddev->dmat, kva, size); goto fail2; } - adev->irq.ih.ring = kva; - adev->irq.ih.rb_dma_addr = - adev->irq.ih.ring_map->dm_segs[0].ds_addr; + ih->ring = kva; + dma_addr = ih->ring_map->dm_segs[0].ds_addr; #else ih->ring = dma_alloc_coherent(adev->dev, ih->ring_size + 8, &dma_addr, GFP_KERNEL); @@ -166,16 +159,13 @@ void amdgpu_ih_ring_fini(struct amdgpu_d /* add 8 bytes for the rptr/wptr shadows and * add them to the end of the ring allocation. */ -#ifdef __NetBSD__ /* XXX post-merge audit */ - const bus_size_t size = adev->irq.ih.ring_size + 8; - void *kva = __UNVOLATILE(adev->irq.ih.ring); - bus_dmamap_unload(adev->ddev->dmat, - adev->irq.ih.ring_map); +#ifdef __NetBSD__ + const bus_size_t size = ih->ring_size + 8; + void *kva = __UNVOLATILE(ih->ring); + bus_dmamap_unload(adev->ddev->dmat, ih->ring_map); bus_dmamem_unmap(adev->ddev->dmat, kva, size); - bus_dmamap_destroy(adev->ddev->dmat, - adev->irq.ih.ring_map); - bus_dmamem_free(adev->ddev->dmat, - &adev->irq.ih.ring_seg, 1); + bus_dmamap_destroy(adev->ddev->dmat, ih->ring_map); + bus_dmamem_free(adev->ddev->dmat, &ih->ring_seg, 1); #else dma_free_coherent(adev->dev, ih->ring_size + 8, (void *)ih->ring, ih->gpu_addr);