Module Name: src Committed By: riastradh Date: Sun Dec 19 01:40:12 UTC 2021
Modified Files: src/sys/external/bsd/drm2/dist/drm/i915/gem: i915_gem_stolen.c Log Message: Make i915_gem_stolen.c build again. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_stolen.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/gem/i915_gem_stolen.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_stolen.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_stolen.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_stolen.c:1.2 Sat Dec 18 23:45:30 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_stolen.c Sun Dec 19 01:40:12 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_stolen.c,v 1.2 2021/12/18 23:45:30 riastradh Exp $ */ +/* $NetBSD: i915_gem_stolen.c,v 1.3 2021/12/19 01:40:12 riastradh Exp $ */ /* * SPDX-License-Identifier: MIT @@ -7,7 +7,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: i915_gem_stolen.c,v 1.2 2021/12/18 23:45:30 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_stolen.c,v 1.3 2021/12/19 01:40:12 riastradh Exp $"); #include <linux/errno.h> #include <linux/mutex.h> @@ -355,7 +355,7 @@ static void icl_get_stolen_reserved(stru { u64 reg_val = intel_uncore_read64(uncore, GEN6_STOLEN_RESERVED); - DRM_DEBUG_DRIVER("GEN6_STOLEN_RESERVED = 0x%016llx\n", reg_val); + DRM_DEBUG_DRIVER("GEN6_STOLEN_RESERVED = 0x%016"PRIx64"\n", reg_val); *base = reg_val & GEN11_STOLEN_RESERVED_ADDR_MASK; @@ -485,7 +485,7 @@ static int i915_gem_init_stolen(struct d * memory, so just consider the start. */ reserved_total = stolen_top - reserved_base; - DRM_DEBUG_DRIVER("Memory reserved for graphics device: %lluK, usable: %lluK\n", + DRM_DEBUG_DRIVER("Memory reserved for graphics device: %"PRIu64"K, usable: %"PRIu64"K\n", (u64)resource_size(&i915->dsm) >> 10, ((u64)resource_size(&i915->dsm) - reserved_total) >> 10); @@ -500,14 +500,27 @@ static int i915_gem_init_stolen(struct d #ifdef __NetBSD__ static bus_dmamap_t -i915_pages_create_for_stolen(struct drm_device *dev, u32 offset, u32 size) +#else +static struct sg_table * +#endif +i915_pages_create_for_stolen(struct drm_device *dev, + resource_size_t offset, resource_size_t size) { - struct drm_i915_private *const dev_priv = dev->dev_private; + struct drm_i915_private *i915 = to_i915(dev); +#ifdef __NetBSD__ + bus_dma_tag_t dmat = i915->drm.dmat; bus_dmamap_t dmamap = NULL; bus_dma_segment_t *seg; int nseg, i; int ret; +#else + struct sg_table *st; + struct scatterlist *sg; +#endif + GEM_BUG_ON(range_overflows(offset, size, resource_size(&i915->dsm))); + +#ifdef __NetBSD__ KASSERT((size % PAGE_SIZE) == 0); nseg = size / PAGE_SIZE; seg = kmem_alloc(nseg * sizeof(seg[0]), KM_SLEEP); @@ -518,14 +531,14 @@ i915_pages_create_for_stolen(struct drm_ * segments to begin with. */ for (i = 0; i < nseg; i++) { - seg[i].ds_addr = (bus_addr_t)dev_priv->mm.stolen_base + - offset + i*PAGE_SIZE; + seg[i].ds_addr = (bus_addr_t)i915->dsm.start + offset + + i*PAGE_SIZE; seg[i].ds_len = PAGE_SIZE; } /* XXX errno NetBSD->Linux */ - ret = -bus_dmamap_create(dev->dmat, size, nseg, PAGE_SIZE, - 0, BUS_DMA_WAITOK, &dmamap); + ret = -bus_dmamap_create(dmat, size, nseg, PAGE_SIZE, 0, + BUS_DMA_WAITOK, &dmamap); if (ret) { DRM_ERROR("failed to create DMA map for stolen object: %d\n", ret); @@ -534,30 +547,19 @@ fail0: dmamap = NULL; /* paranoia */ } /* XXX errno NetBSD->Liux */ - ret = -bus_dmamap_load_raw(dev->dmat, dmamap, seg, nseg, size, + ret = -bus_dmamap_load_raw(dmat, dmamap, seg, nseg, size, BUS_DMA_WAITOK); if (ret) { DRM_ERROR("failed to load DMA map for stolen object: %d\n", ret); fail1: __unused - bus_dmamap_destroy(dev->dmat, dmamap); + bus_dmamap_destroy(dmat, dmamap); goto fail0; } out: kmem_free(seg, nseg*sizeof(seg[0])); - return dmamap; -} + return ret ? ERR_PTR(ret) : dmamap; #else -static struct sg_table * -i915_pages_create_for_stolen(struct drm_device *dev, - resource_size_t offset, resource_size_t size) -{ - struct drm_i915_private *i915 = to_i915(dev); - struct sg_table *st; - struct scatterlist *sg; - - GEM_BUG_ON(range_overflows(offset, size, resource_size(&i915->dsm))); - /* We hide that we have no struct page backing our stolen object * by wrapping the contiguous physical allocation with a fake * dma mapping in a single scatterlist. @@ -580,12 +582,16 @@ i915_pages_create_for_stolen(struct drm_ sg_dma_len(sg) = size; return st; -} #endif +} static int i915_gem_object_get_pages_stolen(struct drm_i915_gem_object *obj) { +#ifdef __NetBSD__ + bus_dmamap_t pages = +#else struct sg_table *pages = +#endif i915_pages_create_for_stolen(obj->base.dev, obj->stolen->start, obj->stolen->size); @@ -602,8 +608,8 @@ static void i915_gem_object_put_pages_st { /* Should only be called from i915_gem_object_release_stolen() */ #ifdef __NetBSD__ - bus_dmamap_unload(obj->base.dev->dmat, obj->pages); - bus_dmamap_destroy(obj->base.dev->dmat, obj->pages); + bus_dmamap_unload(obj->base.dev->dmat, pages); + bus_dmamap_destroy(obj->base.dev->dmat, pages); #else sg_free_table(pages); kfree(pages);