Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp2505089pxb; Thu, 3 Feb 2022 08:02:22 -0800 (PST) X-Google-Smtp-Source: ABdhPJwo36TuBJjaFucHANHz8oHCB80bWjNKO/axO+aaTrsRlcBfsDQTew7zJWW5f1UIXG1D9vu6 X-Received: by 2002:a05:6402:4248:: with SMTP id g8mr36071834edb.158.1643904142196; Thu, 03 Feb 2022 08:02:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643904142; cv=none; d=google.com; s=arc-20160816; b=wubKAPbRZ7LPp4D46Q2Ayt6nWtTjcOp5qbBIQQT0ZNuhVJqlAyGvHzTObGX4FAfUnH JFpYXS2nfLDR7r0Rc+r5zqSNGGVYzBVgUyRoXI8EQp8Td4FOWUYSnY50+V6lzJX7dXpx K5BF1cKW0GjHJW9jD5qTSmFpH+u3BTVoPlfQXykOyy/ZGwfdVMDTdxHowHyn/Y7791zq lwpCwHLCwNVGa8JQwDx28IFytJM1V6iuS/7y9ice2Dr66hvgFEmrDb4pR8TIgYKAdEET aL24XshGzfpzDF9eb6v0qox6OpMomWkrPHfGE98z0CbiWafAArCfxfJqbCJkdTQAIFWo VSLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=wxdE4P+4R3S/FRBJYoCZkjV3bp3RK4PtUb8w3upfSIY=; b=Jb06P1q74NzKdXn/Man4bEOFZEZmCWYvSV45y37GUV1G/cylIoqOjvGyi5DVUMCW7T mJEjy+PPHlbxa9HpJV2+QR56Lhja5uB0HfllxZowYPY3h5Qk1eD9YVuAVbVeIO5b7DfG EzWHNZQI4fBz38QI8NxBmDSkPWWTwR3YxEowmkQ7q966uwRHdbN+VDWWvwWGeJRNLfA/ 616d6XS6zEqa2LpBv179haE8UgGwZdsx97fUa5yeX3JPEPy8Kb7zYqcS4250Zk1lNXLP rFm6Rqrl4N7KhhWQMt2QIEALu/nF/PtXMAlHc2yZzEgQMPmj0lfoisbw5U40XbvH0yEa KhCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NWrEs8rK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qk13si11314107ejc.978.2022.02.03.08.01.52; Thu, 03 Feb 2022 08:02:22 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NWrEs8rK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349571AbiBCIqt (ORCPT + 99 others); Thu, 3 Feb 2022 03:46:49 -0500 Received: from mga06.intel.com ([134.134.136.31]:26099 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229696AbiBCIqq (ORCPT ); Thu, 3 Feb 2022 03:46:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643878006; x=1675414006; h=date:from:to:cc:subject:message-id:references: mime-version:content-transfer-encoding:in-reply-to; bh=+dUuTXqsulSuNu97lJtuYL9NZyWYRpUfpYLSmDaST48=; b=NWrEs8rK062DUpfxv/Qxr/cUr8vRvDk2e6957auPjprHTDuFVWaAHzzt vllG96PS0kMoNd2pfGb53ggN50Qu5E4nHa3RNffXn8NZQj3MfWAKdMOm/ oS08ycfcfcMYDVtlXafc17Q7YCVhgATKwW/lVreJajroIwplkg0WmYrXC qg402LihKpw9r/h2Z3tANTUHhwmHx1jTeYkYZPWr1DL8fHP4L4bqdizMK 4QvcddDQk+NGw5fYSS/9RrepM5+txbtBzrEEuwZDwijwlY4QJ+FJjdve5 bd8b3qBZ66HBKqtCGG9TltEvm/Im0PVEfWo5y9SCPxuhC31JyltQtAKck A==; X-IronPort-AV: E=McAfee;i="6200,9189,10246"; a="308829610" X-IronPort-AV: E=Sophos;i="5.88,339,1635231600"; d="scan'208";a="308829610" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Feb 2022 00:46:43 -0800 X-IronPort-AV: E=Sophos;i="5.88,339,1635231600"; d="scan'208";a="599843239" Received: from ekabir-mobl.amr.corp.intel.com (HELO ldmartin-desk2) ([10.212.144.43]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Feb 2022 00:46:38 -0800 Date: Thu, 3 Feb 2022 00:46:38 -0800 From: Lucas De Marchi To: Thomas Zimmermann Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, srinivas.kandagatla@linaro.org, gregkh@linuxfoundation.org, sumit.semwal@linaro.org, christian.koenig@amd.com, daniel.vetter@ffwll.ch, airlied@linux.ie, lyude@redhat.com, linux-media@vger.kernel.org, nouveau@lists.freedesktop.org, Jonathan Corbet , linux-doc@vger.kernel.org Subject: Re: [PATCH v2] dma-buf-map: Rename to iosys-map Message-ID: <20220203084638.mh7hczfjrjg7oryj@ldmartin-desk2> X-Patchwork-Hint: comment References: <20220202091134.3565514-1-lucas.demarchi@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Feb 02, 2022 at 11:20:16AM +0100, Thomas Zimmermann wrote: >Hi > >Am 02.02.22 um 10:11 schrieb Lucas De Marchi: >> >>diff --git a/Documentation/driver-api/dma-buf.rst b/Documentation/driver-api/dma-buf.rst >>index 2cd7db82d9fe..ea1e81894d7c 100644 >>--- a/Documentation/driver-api/dma-buf.rst >>+++ b/Documentation/driver-api/dma-buf.rst >>@@ -131,10 +131,10 @@ Kernel Functions and Structures Reference >> Buffer Mapping Helpers >> ~~~~~~~~~~~~~~~~~~~~~~ >>-.. kernel-doc:: include/linux/dma-buf-map.h >>+.. kernel-doc:: include/linux/iosys-map.h >> :doc: overview >>-.. kernel-doc:: include/linux/dma-buf-map.h >>+.. kernel-doc:: include/linux/iosys-map.h >> :internal: > >Should we move this section to a better place than dma-buf.rst? >There's 'Bus-Independent Device Accesses' in >Documentation/driver-api/device-io.rst. It describes all the I/O >helpers and looks like a good fit. Sounds like a good idea. I will include that in v3. Cc'ing Jonathan and linux-doc, too. > >> Reservation Objects >>diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst >>index 1b2372ef4131..ee842606e883 100644 >>--- a/Documentation/gpu/todo.rst >>+++ b/Documentation/gpu/todo.rst >>@@ -222,7 +222,7 @@ Convert drivers to use drm_fbdev_generic_setup() >> Most drivers can use drm_fbdev_generic_setup(). Driver have to implement >> atomic modesetting and GEM vmap support. Historically, generic fbdev emulation >> expected the framebuffer in system memory or system-like memory. By employing >>-struct dma_buf_map, drivers with frambuffers in I/O memory can be supported >>+struct iosys_map, drivers with frambuffers in I/O memory can be supported >> as well. >> Contact: Maintainer of the driver you plan to convert >>@@ -234,7 +234,7 @@ Reimplement functions in drm_fbdev_fb_ops without fbdev >> A number of callback functions in drm_fbdev_fb_ops could benefit from >> being rewritten without dependencies on the fbdev module. Some of the >>-helpers could further benefit from using struct dma_buf_map instead of >>+helpers could further benefit from using struct iosys_map instead of >> raw pointers. >> Contact: Thomas Zimmermann , Daniel Vetter >>@@ -434,19 +434,19 @@ Contact: Emil Velikov, respective driver maintainers >> Level: Intermediate >>-Use struct dma_buf_map throughout codebase >>------------------------------------------- >>+Use struct iosys_map throughout codebase >>+---------------------------------------- >>-Pointers to shared device memory are stored in struct dma_buf_map. Each >>+Pointers to shared device memory are stored in struct iosys_map. Each >> instance knows whether it refers to system or I/O memory. Most of the DRM-wide >>-interface have been converted to use struct dma_buf_map, but implementations >>+interface have been converted to use struct iosys_map, but implementations >> often still use raw pointers. >>-The task is to use struct dma_buf_map where it makes sense. >>+The task is to use struct iosys_map where it makes sense. >>-* Memory managers should use struct dma_buf_map for dma-buf-imported buffers. >>-* TTM might benefit from using struct dma_buf_map internally. >>-* Framebuffer copying and blitting helpers should operate on struct dma_buf_map. >>+* Memory managers should use struct iosys_map for dma-buf-imported buffers. >>+* TTM might benefit from using struct iosys_map internally. >>+* Framebuffer copying and blitting helpers should operate on struct iosys_map. >> Contact: Thomas Zimmermann , Christian K?nig, Daniel Vetter >>diff --git a/MAINTAINERS b/MAINTAINERS >>index d03ad8da1f36..112676f11792 100644 >>--- a/MAINTAINERS >>+++ b/MAINTAINERS >>@@ -5675,7 +5675,6 @@ T: git git://anongit.freedesktop.org/drm/drm-misc >> F: Documentation/driver-api/dma-buf.rst >> F: drivers/dma-buf/ >> F: include/linux/*fence.h >>-F: include/linux/dma-buf* > >There's still include/linux/dma-buf.h that needs to be listed. > >> F: include/linux/dma-resv.h >> K: \bdma_(?:buf|fence|resv)\b >>@@ -9976,6 +9975,13 @@ F: include/linux/iova.h >> F: include/linux/of_iommu.h >> F: include/uapi/linux/iommu.h >>+IOSYS-MAP HELPERS >>+M: Thomas Zimmermann >>+L: dri-devel@lists.freedesktop.org >>+S: Maintained >>+T: git git://anongit.freedesktop.org/drm/drm-misc >>+F: include/linux/iosys-map.h > >Makes sense. > >I briefly looked through the rst of the code conversion. Looks good to >me. Thanks for squashing the patches into one. thanks Lucas De Marchi > >Best regards >Thomas > >>+ >> IO_URING >> M: Jens Axboe >> R: Pavel Begunkov >>diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c >>index 602b12d7470d..df23239b04fc 100644 >>--- a/drivers/dma-buf/dma-buf.c >>+++ b/drivers/dma-buf/dma-buf.c >>@@ -1047,8 +1047,8 @@ EXPORT_SYMBOL_NS_GPL(dma_buf_move_notify, DMA_BUF); >> * >> * Interfaces:: >> * >>- * void \*dma_buf_vmap(struct dma_buf \*dmabuf, struct dma_buf_map \*map) >>- * void dma_buf_vunmap(struct dma_buf \*dmabuf, struct dma_buf_map \*map) >>+ * void \*dma_buf_vmap(struct dma_buf \*dmabuf, struct iosys_map \*map) >>+ * void dma_buf_vunmap(struct dma_buf \*dmabuf, struct iosys_map \*map) >> * >> * The vmap call can fail if there is no vmap support in the exporter, or if >> * it runs out of vmalloc space. Note that the dma-buf layer keeps a reference >>@@ -1260,12 +1260,12 @@ EXPORT_SYMBOL_NS_GPL(dma_buf_mmap, DMA_BUF); >> * >> * Returns 0 on success, or a negative errno code otherwise. >> */ >>-int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >>+int dma_buf_vmap(struct dma_buf *dmabuf, struct iosys_map *map) >> { >>- struct dma_buf_map ptr; >>+ struct iosys_map ptr; >> int ret = 0; >>- dma_buf_map_clear(map); >>+ iosys_map_clear(map); >> if (WARN_ON(!dmabuf)) >> return -EINVAL; >>@@ -1276,12 +1276,12 @@ int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >> mutex_lock(&dmabuf->lock); >> if (dmabuf->vmapping_counter) { >> dmabuf->vmapping_counter++; >>- BUG_ON(dma_buf_map_is_null(&dmabuf->vmap_ptr)); >>+ BUG_ON(iosys_map_is_null(&dmabuf->vmap_ptr)); >> *map = dmabuf->vmap_ptr; >> goto out_unlock; >> } >>- BUG_ON(dma_buf_map_is_set(&dmabuf->vmap_ptr)); >>+ BUG_ON(iosys_map_is_set(&dmabuf->vmap_ptr)); >> ret = dmabuf->ops->vmap(dmabuf, &ptr); >> if (WARN_ON_ONCE(ret)) >>@@ -1303,20 +1303,20 @@ EXPORT_SYMBOL_NS_GPL(dma_buf_vmap, DMA_BUF); >> * @dmabuf: [in] buffer to vunmap >> * @map: [in] vmap pointer to vunmap >> */ >>-void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >>+void dma_buf_vunmap(struct dma_buf *dmabuf, struct iosys_map *map) >> { >> if (WARN_ON(!dmabuf)) >> return; >>- BUG_ON(dma_buf_map_is_null(&dmabuf->vmap_ptr)); >>+ BUG_ON(iosys_map_is_null(&dmabuf->vmap_ptr)); >> BUG_ON(dmabuf->vmapping_counter == 0); >>- BUG_ON(!dma_buf_map_is_equal(&dmabuf->vmap_ptr, map)); >>+ BUG_ON(!iosys_map_is_equal(&dmabuf->vmap_ptr, map)); >> mutex_lock(&dmabuf->lock); >> if (--dmabuf->vmapping_counter == 0) { >> if (dmabuf->ops->vunmap) >> dmabuf->ops->vunmap(dmabuf, map); >>- dma_buf_map_clear(&dmabuf->vmap_ptr); >>+ iosys_map_clear(&dmabuf->vmap_ptr); >> } >> mutex_unlock(&dmabuf->lock); >> } >>diff --git a/drivers/dma-buf/heaps/cma_heap.c b/drivers/dma-buf/heaps/cma_heap.c >>index 0c05b79870f9..07ace3ccb266 100644 >>--- a/drivers/dma-buf/heaps/cma_heap.c >>+++ b/drivers/dma-buf/heaps/cma_heap.c >>@@ -200,7 +200,7 @@ static void *cma_heap_do_vmap(struct cma_heap_buffer *buffer) >> return vaddr; >> } >>-static int cma_heap_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >>+static int cma_heap_vmap(struct dma_buf *dmabuf, struct iosys_map *map) >> { >> struct cma_heap_buffer *buffer = dmabuf->priv; >> void *vaddr; >>@@ -209,7 +209,7 @@ static int cma_heap_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >> mutex_lock(&buffer->lock); >> if (buffer->vmap_cnt) { >> buffer->vmap_cnt++; >>- dma_buf_map_set_vaddr(map, buffer->vaddr); >>+ iosys_map_set_vaddr(map, buffer->vaddr); >> goto out; >> } >>@@ -220,14 +220,14 @@ static int cma_heap_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >> } >> buffer->vaddr = vaddr; >> buffer->vmap_cnt++; >>- dma_buf_map_set_vaddr(map, buffer->vaddr); >>+ iosys_map_set_vaddr(map, buffer->vaddr); >> out: >> mutex_unlock(&buffer->lock); >> return ret; >> } >>-static void cma_heap_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >>+static void cma_heap_vunmap(struct dma_buf *dmabuf, struct iosys_map *map) >> { >> struct cma_heap_buffer *buffer = dmabuf->priv; >>@@ -237,7 +237,7 @@ static void cma_heap_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >> buffer->vaddr = NULL; >> } >> mutex_unlock(&buffer->lock); >>- dma_buf_map_clear(map); >>+ iosys_map_clear(map); >> } >> static void cma_heap_dma_buf_release(struct dma_buf *dmabuf) >>diff --git a/drivers/dma-buf/heaps/system_heap.c b/drivers/dma-buf/heaps/system_heap.c >>index ab7fd896d2c4..fcf836ba9c1f 100644 >>--- a/drivers/dma-buf/heaps/system_heap.c >>+++ b/drivers/dma-buf/heaps/system_heap.c >>@@ -241,7 +241,7 @@ static void *system_heap_do_vmap(struct system_heap_buffer *buffer) >> return vaddr; >> } >>-static int system_heap_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >>+static int system_heap_vmap(struct dma_buf *dmabuf, struct iosys_map *map) >> { >> struct system_heap_buffer *buffer = dmabuf->priv; >> void *vaddr; >>@@ -250,7 +250,7 @@ static int system_heap_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >> mutex_lock(&buffer->lock); >> if (buffer->vmap_cnt) { >> buffer->vmap_cnt++; >>- dma_buf_map_set_vaddr(map, buffer->vaddr); >>+ iosys_map_set_vaddr(map, buffer->vaddr); >> goto out; >> } >>@@ -262,14 +262,14 @@ static int system_heap_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >> buffer->vaddr = vaddr; >> buffer->vmap_cnt++; >>- dma_buf_map_set_vaddr(map, buffer->vaddr); >>+ iosys_map_set_vaddr(map, buffer->vaddr); >> out: >> mutex_unlock(&buffer->lock); >> return ret; >> } >>-static void system_heap_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >>+static void system_heap_vunmap(struct dma_buf *dmabuf, struct iosys_map *map) >> { >> struct system_heap_buffer *buffer = dmabuf->priv; >>@@ -279,7 +279,7 @@ static void system_heap_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >> buffer->vaddr = NULL; >> } >> mutex_unlock(&buffer->lock); >>- dma_buf_map_clear(map); >>+ iosys_map_clear(map); >> } >> static void system_heap_dma_buf_release(struct dma_buf *dmabuf) >>diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h >>index 00bfa41ff7cb..9c8d56b0a41b 100644 >>--- a/drivers/gpu/drm/ast/ast_drv.h >>+++ b/drivers/gpu/drm/ast/ast_drv.h >>@@ -107,7 +107,7 @@ struct ast_cursor_plane { >> struct { >> struct drm_gem_vram_object *gbo; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> u64 off; >> } hwc[AST_DEFAULT_HWC_NUM]; >>diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c >>index 6fa8042a0dfd..2759e977d95d 100644 >>--- a/drivers/gpu/drm/ast/ast_mode.c >>+++ b/drivers/gpu/drm/ast/ast_mode.c >>@@ -804,11 +804,11 @@ ast_cursor_plane_helper_atomic_update(struct drm_plane *plane, >> struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(new_state); >> struct drm_framebuffer *fb = new_state->fb; >> struct ast_private *ast = to_ast_private(plane->dev); >>- struct dma_buf_map dst_map = >>+ struct iosys_map dst_map = >> ast_cursor_plane->hwc[ast_cursor_plane->next_hwc_index].map; >> u64 dst_off = >> ast_cursor_plane->hwc[ast_cursor_plane->next_hwc_index].off; >>- struct dma_buf_map src_map = shadow_plane_state->data[0]; >>+ struct iosys_map src_map = shadow_plane_state->data[0]; >> unsigned int offset_x, offset_y; >> u16 x, y; >> u8 x_offset, y_offset; >>@@ -886,7 +886,7 @@ static void ast_cursor_plane_destroy(struct drm_plane *plane) >> struct ast_cursor_plane *ast_cursor_plane = to_ast_cursor_plane(plane); >> size_t i; >> struct drm_gem_vram_object *gbo; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> for (i = 0; i < ARRAY_SIZE(ast_cursor_plane->hwc); ++i) { >> gbo = ast_cursor_plane->hwc[i].gbo; >>@@ -913,7 +913,7 @@ static int ast_cursor_plane_init(struct ast_private *ast) >> struct drm_plane *cursor_plane = &ast_cursor_plane->base; >> size_t size, i; >> struct drm_gem_vram_object *gbo; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> int ret; >> s64 off; >>diff --git a/drivers/gpu/drm/drm_cache.c b/drivers/gpu/drm/drm_cache.c >>index f19d9acbe959..4bb093ccf1b8 100644 >>--- a/drivers/gpu/drm/drm_cache.c >>+++ b/drivers/gpu/drm/drm_cache.c >>@@ -28,10 +28,10 @@ >> * Authors: Thomas Hellstr?m >> */ >>-#include >>+#include >> #include >> #include >>-#include >>+#include >> #include >> #include >>@@ -214,14 +214,14 @@ bool drm_need_swiotlb(int dma_bits) >> } >> EXPORT_SYMBOL(drm_need_swiotlb); >>-static void memcpy_fallback(struct dma_buf_map *dst, >>- const struct dma_buf_map *src, >>+static void memcpy_fallback(struct iosys_map *dst, >>+ const struct iosys_map *src, >> unsigned long len) >> { >> if (!dst->is_iomem && !src->is_iomem) { >> memcpy(dst->vaddr, src->vaddr, len); >> } else if (!src->is_iomem) { >>- dma_buf_map_memcpy_to(dst, src->vaddr, len); >>+ iosys_map_memcpy_to(dst, src->vaddr, len); >> } else if (!dst->is_iomem) { >> memcpy_fromio(dst->vaddr, src->vaddr_iomem, len); >> } else { >>@@ -305,8 +305,8 @@ static void __drm_memcpy_from_wc(void *dst, const void *src, unsigned long len) >> * Tries an arch optimized memcpy for prefetching reading out of a WC region, >> * and if no such beast is available, falls back to a normal memcpy. >> */ >>-void drm_memcpy_from_wc(struct dma_buf_map *dst, >>- const struct dma_buf_map *src, >>+void drm_memcpy_from_wc(struct iosys_map *dst, >>+ const struct iosys_map *src, >> unsigned long len) >> { >> if (WARN_ON(in_interrupt())) { >>@@ -343,8 +343,8 @@ void drm_memcpy_init_early(void) >> static_branch_enable(&has_movntdqa); >> } >> #else >>-void drm_memcpy_from_wc(struct dma_buf_map *dst, >>- const struct dma_buf_map *src, >>+void drm_memcpy_from_wc(struct iosys_map *dst, >>+ const struct iosys_map *src, >> unsigned long len) >> { >> WARN_ON(in_interrupt()); >>diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c >>index ce45e380f4a2..af3b7395bf69 100644 >>--- a/drivers/gpu/drm/drm_client.c >>+++ b/drivers/gpu/drm/drm_client.c >>@@ -3,7 +3,7 @@ >> * Copyright 2018 Noralf Tr?nnes >> */ >>-#include >>+#include >> #include >> #include >> #include >>@@ -309,9 +309,10 @@ drm_client_buffer_create(struct drm_client_dev *client, u32 width, u32 height, u >> * 0 on success, or a negative errno code otherwise. >> */ >> int >>-drm_client_buffer_vmap(struct drm_client_buffer *buffer, struct dma_buf_map *map_copy) >>+drm_client_buffer_vmap(struct drm_client_buffer *buffer, >>+ struct iosys_map *map_copy) >> { >>- struct dma_buf_map *map = &buffer->map; >>+ struct iosys_map *map = &buffer->map; >> int ret; >> /* >>@@ -342,7 +343,7 @@ EXPORT_SYMBOL(drm_client_buffer_vmap); >> */ >> void drm_client_buffer_vunmap(struct drm_client_buffer *buffer) >> { >>- struct dma_buf_map *map = &buffer->map; >>+ struct iosys_map *map = &buffer->map; >> drm_gem_vunmap(buffer->gem, map); >> } >>diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c >>index 9727a59d35fd..54636892aca7 100644 >>--- a/drivers/gpu/drm/drm_fb_helper.c >>+++ b/drivers/gpu/drm/drm_fb_helper.c >>@@ -373,7 +373,7 @@ static void drm_fb_helper_resume_worker(struct work_struct *work) >> static void drm_fb_helper_damage_blit_real(struct drm_fb_helper *fb_helper, >> struct drm_clip_rect *clip, >>- struct dma_buf_map *dst) >>+ struct iosys_map *dst) >> { >> struct drm_framebuffer *fb = fb_helper->fb; >> unsigned int cpp = fb->format->cpp[0]; >>@@ -382,11 +382,11 @@ static void drm_fb_helper_damage_blit_real(struct drm_fb_helper *fb_helper, >> size_t len = (clip->x2 - clip->x1) * cpp; >> unsigned int y; >>- dma_buf_map_incr(dst, offset); /* go to first pixel within clip rect */ >>+ iosys_map_incr(dst, offset); /* go to first pixel within clip rect */ >> for (y = clip->y1; y < clip->y2; y++) { >>- dma_buf_map_memcpy_to(dst, src, len); >>- dma_buf_map_incr(dst, fb->pitches[0]); >>+ iosys_map_memcpy_to(dst, src, len); >>+ iosys_map_incr(dst, fb->pitches[0]); >> src += fb->pitches[0]; >> } >> } >>@@ -395,7 +395,7 @@ static int drm_fb_helper_damage_blit(struct drm_fb_helper *fb_helper, >> struct drm_clip_rect *clip) >> { >> struct drm_client_buffer *buffer = fb_helper->buffer; >>- struct dma_buf_map map, dst; >>+ struct iosys_map map, dst; >> int ret; >> /* >>@@ -2316,7 +2316,7 @@ static int drm_fb_helper_generic_probe(struct drm_fb_helper *fb_helper, >> struct drm_framebuffer *fb; >> struct fb_info *fbi; >> u32 format; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> int ret; >> drm_dbg_kms(dev, "surface width(%d), height(%d) and bpp(%d)\n", >>diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c >>index 4dcdec6487bb..8c7b24f4b0e4 100644 >>--- a/drivers/gpu/drm/drm_gem.c >>+++ b/drivers/gpu/drm/drm_gem.c >>@@ -36,7 +36,7 @@ >> #include >> #include >> #include >>-#include >>+#include >> #include >> #include >>@@ -1165,7 +1165,7 @@ void drm_gem_unpin(struct drm_gem_object *obj) >> obj->funcs->unpin(obj); >> } >>-int drm_gem_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+int drm_gem_vmap(struct drm_gem_object *obj, struct iosys_map *map) >> { >> int ret; >>@@ -1175,23 +1175,23 @@ int drm_gem_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >> ret = obj->funcs->vmap(obj, map); >> if (ret) >> return ret; >>- else if (dma_buf_map_is_null(map)) >>+ else if (iosys_map_is_null(map)) >> return -ENOMEM; >> return 0; >> } >> EXPORT_SYMBOL(drm_gem_vmap); >>-void drm_gem_vunmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+void drm_gem_vunmap(struct drm_gem_object *obj, struct iosys_map *map) >> { >>- if (dma_buf_map_is_null(map)) >>+ if (iosys_map_is_null(map)) >> return; >> if (obj->funcs->vunmap) >> obj->funcs->vunmap(obj, map); >> /* Always set the mapping to NULL. Callers may rely on this. */ >>- dma_buf_map_clear(map); >>+ iosys_map_clear(map); >> } >> EXPORT_SYMBOL(drm_gem_vunmap); >>diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c >>index cefd0cbf9deb..88c432a7cb3c 100644 >>--- a/drivers/gpu/drm/drm_gem_cma_helper.c >>+++ b/drivers/gpu/drm/drm_gem_cma_helper.c >>@@ -209,7 +209,7 @@ drm_gem_cma_create_with_handle(struct drm_file *file_priv, >> void drm_gem_cma_free(struct drm_gem_cma_object *cma_obj) >> { >> struct drm_gem_object *gem_obj = &cma_obj->base; >>- struct dma_buf_map map = DMA_BUF_MAP_INIT_VADDR(cma_obj->vaddr); >>+ struct iosys_map map = IOSYS_MAP_INIT_VADDR(cma_obj->vaddr); >> if (gem_obj->import_attach) { >> if (cma_obj->vaddr) >>@@ -480,9 +480,10 @@ EXPORT_SYMBOL_GPL(drm_gem_cma_prime_import_sg_table); >> * Returns: >> * 0 on success, or a negative error code otherwise. >> */ >>-int drm_gem_cma_vmap(struct drm_gem_cma_object *cma_obj, struct dma_buf_map *map) >>+int drm_gem_cma_vmap(struct drm_gem_cma_object *cma_obj, >>+ struct iosys_map *map) >> { >>- dma_buf_map_set_vaddr(map, cma_obj->vaddr); >>+ iosys_map_set_vaddr(map, cma_obj->vaddr); >> return 0; >> } >>@@ -557,7 +558,7 @@ drm_gem_cma_prime_import_sg_table_vmap(struct drm_device *dev, >> { >> struct drm_gem_cma_object *cma_obj; >> struct drm_gem_object *obj; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> int ret; >> ret = dma_buf_vmap(attach->dmabuf, &map); >>diff --git a/drivers/gpu/drm/drm_gem_framebuffer_helper.c b/drivers/gpu/drm/drm_gem_framebuffer_helper.c >>index 746fd8c73845..f4619803acd0 100644 >>--- a/drivers/gpu/drm/drm_gem_framebuffer_helper.c >>+++ b/drivers/gpu/drm/drm_gem_framebuffer_helper.c >>@@ -321,7 +321,7 @@ EXPORT_SYMBOL_GPL(drm_gem_fb_create_with_dirty); >> * @data: returns the data address for each BO, can be NULL >> * >> * This function maps all buffer objects of the given framebuffer into >>- * kernel address space and stores them in struct dma_buf_map. If the >>+ * kernel address space and stores them in struct iosys_map. If the >> * mapping operation fails for one of the BOs, the function unmaps the >> * already established mappings automatically. >> * >>@@ -335,8 +335,8 @@ EXPORT_SYMBOL_GPL(drm_gem_fb_create_with_dirty); >> * 0 on success, or a negative errno code otherwise. >> */ >> int drm_gem_fb_vmap(struct drm_framebuffer *fb, >>- struct dma_buf_map map[static DRM_FORMAT_MAX_PLANES], >>- struct dma_buf_map data[DRM_FORMAT_MAX_PLANES]) >>+ struct iosys_map map[static DRM_FORMAT_MAX_PLANES], >>+ struct iosys_map data[DRM_FORMAT_MAX_PLANES]) >> { >> struct drm_gem_object *obj; >> unsigned int i; >>@@ -345,7 +345,7 @@ int drm_gem_fb_vmap(struct drm_framebuffer *fb, >> for (i = 0; i < DRM_FORMAT_MAX_PLANES; ++i) { >> obj = drm_gem_fb_get_obj(fb, i); >> if (!obj) { >>- dma_buf_map_clear(&map[i]); >>+ iosys_map_clear(&map[i]); >> continue; >> } >> ret = drm_gem_vmap(obj, &map[i]); >>@@ -356,9 +356,9 @@ int drm_gem_fb_vmap(struct drm_framebuffer *fb, >> if (data) { >> for (i = 0; i < DRM_FORMAT_MAX_PLANES; ++i) { >> memcpy(&data[i], &map[i], sizeof(data[i])); >>- if (dma_buf_map_is_null(&data[i])) >>+ if (iosys_map_is_null(&data[i])) >> continue; >>- dma_buf_map_incr(&data[i], fb->offsets[i]); >>+ iosys_map_incr(&data[i], fb->offsets[i]); >> } >> } >>@@ -386,7 +386,7 @@ EXPORT_SYMBOL(drm_gem_fb_vmap); >> * See drm_gem_fb_vmap() for more information. >> */ >> void drm_gem_fb_vunmap(struct drm_framebuffer *fb, >>- struct dma_buf_map map[static DRM_FORMAT_MAX_PLANES]) >>+ struct iosys_map map[static DRM_FORMAT_MAX_PLANES]) >> { >> unsigned int i = DRM_FORMAT_MAX_PLANES; >> struct drm_gem_object *obj; >>@@ -396,7 +396,7 @@ void drm_gem_fb_vunmap(struct drm_framebuffer *fb, >> obj = drm_gem_fb_get_obj(fb, i); >> if (!obj) >> continue; >>- if (dma_buf_map_is_null(&map[i])) >>+ if (iosys_map_is_null(&map[i])) >> continue; >> drm_gem_vunmap(obj, &map[i]); >> } >>diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c >>index 621924116eb4..3e738aea2664 100644 >>--- a/drivers/gpu/drm/drm_gem_shmem_helper.c >>+++ b/drivers/gpu/drm/drm_gem_shmem_helper.c >>@@ -286,13 +286,14 @@ void drm_gem_shmem_unpin(struct drm_gem_shmem_object *shmem) >> } >> EXPORT_SYMBOL(drm_gem_shmem_unpin); >>-static int drm_gem_shmem_vmap_locked(struct drm_gem_shmem_object *shmem, struct dma_buf_map *map) >>+static int drm_gem_shmem_vmap_locked(struct drm_gem_shmem_object *shmem, >>+ struct iosys_map *map) >> { >> struct drm_gem_object *obj = &shmem->base; >> int ret = 0; >> if (shmem->vmap_use_count++ > 0) { >>- dma_buf_map_set_vaddr(map, shmem->vaddr); >>+ iosys_map_set_vaddr(map, shmem->vaddr); >> return 0; >> } >>@@ -319,7 +320,7 @@ static int drm_gem_shmem_vmap_locked(struct drm_gem_shmem_object *shmem, struct >> if (!shmem->vaddr) >> ret = -ENOMEM; >> else >>- dma_buf_map_set_vaddr(map, shmem->vaddr); >>+ iosys_map_set_vaddr(map, shmem->vaddr); >> } >> if (ret) { >>@@ -353,7 +354,8 @@ static int drm_gem_shmem_vmap_locked(struct drm_gem_shmem_object *shmem, struct >> * Returns: >> * 0 on success or a negative error code on failure. >> */ >>-int drm_gem_shmem_vmap(struct drm_gem_shmem_object *shmem, struct dma_buf_map *map) >>+int drm_gem_shmem_vmap(struct drm_gem_shmem_object *shmem, >>+ struct iosys_map *map) >> { >> int ret; >>@@ -368,7 +370,7 @@ int drm_gem_shmem_vmap(struct drm_gem_shmem_object *shmem, struct dma_buf_map *m >> EXPORT_SYMBOL(drm_gem_shmem_vmap); >> static void drm_gem_shmem_vunmap_locked(struct drm_gem_shmem_object *shmem, >>- struct dma_buf_map *map) >>+ struct iosys_map *map) >> { >> struct drm_gem_object *obj = &shmem->base; >>@@ -400,7 +402,8 @@ static void drm_gem_shmem_vunmap_locked(struct drm_gem_shmem_object *shmem, >> * This function hides the differences between dma-buf imported and natively >> * allocated objects. >> */ >>-void drm_gem_shmem_vunmap(struct drm_gem_shmem_object *shmem, struct dma_buf_map *map) >>+void drm_gem_shmem_vunmap(struct drm_gem_shmem_object *shmem, >>+ struct iosys_map *map) >> { >> mutex_lock(&shmem->vmap_lock); >> drm_gem_shmem_vunmap_locked(shmem, map); >>diff --git a/drivers/gpu/drm/drm_gem_ttm_helper.c b/drivers/gpu/drm/drm_gem_ttm_helper.c >>index ecf3d2a54a98..d5962a34c01d 100644 >>--- a/drivers/gpu/drm/drm_gem_ttm_helper.c >>+++ b/drivers/gpu/drm/drm_gem_ttm_helper.c >>@@ -61,7 +61,7 @@ EXPORT_SYMBOL(drm_gem_ttm_print_info); >> * 0 on success, or a negative errno code otherwise. >> */ >> int drm_gem_ttm_vmap(struct drm_gem_object *gem, >>- struct dma_buf_map *map) >>+ struct iosys_map *map) >> { >> struct ttm_buffer_object *bo = drm_gem_ttm_of_gem(gem); >>@@ -78,7 +78,7 @@ EXPORT_SYMBOL(drm_gem_ttm_vmap); >> * &drm_gem_object_funcs.vmap callback. >> */ >> void drm_gem_ttm_vunmap(struct drm_gem_object *gem, >>- struct dma_buf_map *map) >>+ struct iosys_map *map) >> { >> struct ttm_buffer_object *bo = drm_gem_ttm_of_gem(gem); >>diff --git a/drivers/gpu/drm/drm_gem_vram_helper.c b/drivers/gpu/drm/drm_gem_vram_helper.c >>index 3f00192215d1..dc7f938bfff2 100644 >>--- a/drivers/gpu/drm/drm_gem_vram_helper.c >>+++ b/drivers/gpu/drm/drm_gem_vram_helper.c >>@@ -1,6 +1,6 @@ >> // SPDX-License-Identifier: GPL-2.0-or-later >>-#include >>+#include >> #include >> #include >>@@ -116,7 +116,7 @@ static void drm_gem_vram_cleanup(struct drm_gem_vram_object *gbo) >> */ >> WARN_ON(gbo->vmap_use_count); >>- WARN_ON(dma_buf_map_is_set(&gbo->map)); >>+ WARN_ON(iosys_map_is_set(&gbo->map)); >> drm_gem_object_release(&gbo->bo.base); >> } >>@@ -365,7 +365,7 @@ int drm_gem_vram_unpin(struct drm_gem_vram_object *gbo) >> EXPORT_SYMBOL(drm_gem_vram_unpin); >> static int drm_gem_vram_kmap_locked(struct drm_gem_vram_object *gbo, >>- struct dma_buf_map *map) >>+ struct iosys_map *map) >> { >> int ret; >>@@ -377,7 +377,7 @@ static int drm_gem_vram_kmap_locked(struct drm_gem_vram_object *gbo, >> * page mapping might still be around. Only vmap if the there's >> * no mapping present. >> */ >>- if (dma_buf_map_is_null(&gbo->map)) { >>+ if (iosys_map_is_null(&gbo->map)) { >> ret = ttm_bo_vmap(&gbo->bo, &gbo->map); >> if (ret) >> return ret; >>@@ -391,14 +391,14 @@ static int drm_gem_vram_kmap_locked(struct drm_gem_vram_object *gbo, >> } >> static void drm_gem_vram_kunmap_locked(struct drm_gem_vram_object *gbo, >>- struct dma_buf_map *map) >>+ struct iosys_map *map) >> { >> struct drm_device *dev = gbo->bo.base.dev; >> if (drm_WARN_ON_ONCE(dev, !gbo->vmap_use_count)) >> return; >>- if (drm_WARN_ON_ONCE(dev, !dma_buf_map_is_equal(&gbo->map, map))) >>+ if (drm_WARN_ON_ONCE(dev, !iosys_map_is_equal(&gbo->map, map))) >> return; /* BUG: map not mapped from this BO */ >> if (--gbo->vmap_use_count > 0) >>@@ -428,7 +428,7 @@ static void drm_gem_vram_kunmap_locked(struct drm_gem_vram_object *gbo, >> * Returns: >> * 0 on success, or a negative error code otherwise. >> */ >>-int drm_gem_vram_vmap(struct drm_gem_vram_object *gbo, struct dma_buf_map *map) >>+int drm_gem_vram_vmap(struct drm_gem_vram_object *gbo, struct iosys_map *map) >> { >> int ret; >>@@ -463,7 +463,8 @@ EXPORT_SYMBOL(drm_gem_vram_vmap); >> * A call to drm_gem_vram_vunmap() unmaps and unpins a GEM VRAM buffer. See >> * the documentation for drm_gem_vram_vmap() for more information. >> */ >>-void drm_gem_vram_vunmap(struct drm_gem_vram_object *gbo, struct dma_buf_map *map) >>+void drm_gem_vram_vunmap(struct drm_gem_vram_object *gbo, >>+ struct iosys_map *map) >> { >> int ret; >>@@ -567,7 +568,7 @@ static void drm_gem_vram_bo_driver_move_notify(struct drm_gem_vram_object *gbo) >> return; >> ttm_bo_vunmap(bo, &gbo->map); >>- dma_buf_map_clear(&gbo->map); /* explicitly clear mapping for next vmap call */ >>+ iosys_map_clear(&gbo->map); /* explicitly clear mapping for next vmap call */ >> } >> static int drm_gem_vram_bo_driver_move(struct drm_gem_vram_object *gbo, >>@@ -802,7 +803,8 @@ static void drm_gem_vram_object_unpin(struct drm_gem_object *gem) >> * Returns: >> * 0 on success, or a negative error code otherwise. >> */ >>-static int drm_gem_vram_object_vmap(struct drm_gem_object *gem, struct dma_buf_map *map) >>+static int drm_gem_vram_object_vmap(struct drm_gem_object *gem, >>+ struct iosys_map *map) >> { >> struct drm_gem_vram_object *gbo = drm_gem_vram_of_gem(gem); >>@@ -815,7 +817,8 @@ static int drm_gem_vram_object_vmap(struct drm_gem_object *gem, struct dma_buf_m >> * @gem: The GEM object to unmap >> * @map: Kernel virtual address where the VRAM GEM object was mapped >> */ >>-static void drm_gem_vram_object_vunmap(struct drm_gem_object *gem, struct dma_buf_map *map) >>+static void drm_gem_vram_object_vunmap(struct drm_gem_object *gem, >>+ struct iosys_map *map) >> { >> struct drm_gem_vram_object *gbo = drm_gem_vram_of_gem(gem); >>diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h >>index 17f3548c8ed2..1fbbc19f1ac0 100644 >>--- a/drivers/gpu/drm/drm_internal.h >>+++ b/drivers/gpu/drm/drm_internal.h >>@@ -33,7 +33,7 @@ >> struct dentry; >> struct dma_buf; >>-struct dma_buf_map; >>+struct iosys_map; >> struct drm_connector; >> struct drm_crtc; >> struct drm_framebuffer; >>@@ -174,8 +174,8 @@ void drm_gem_print_info(struct drm_printer *p, unsigned int indent, >> int drm_gem_pin(struct drm_gem_object *obj); >> void drm_gem_unpin(struct drm_gem_object *obj); >>-int drm_gem_vmap(struct drm_gem_object *obj, struct dma_buf_map *map); >>-void drm_gem_vunmap(struct drm_gem_object *obj, struct dma_buf_map *map); >>+int drm_gem_vmap(struct drm_gem_object *obj, struct iosys_map *map); >>+void drm_gem_vunmap(struct drm_gem_object *obj, struct iosys_map *map); >> int drm_gem_dumb_destroy(struct drm_file *file, struct drm_device *dev, >> u32 handle); >>diff --git a/drivers/gpu/drm/drm_mipi_dbi.c b/drivers/gpu/drm/drm_mipi_dbi.c >>index 0327d595e028..9314f2ead79f 100644 >>--- a/drivers/gpu/drm/drm_mipi_dbi.c >>+++ b/drivers/gpu/drm/drm_mipi_dbi.c >>@@ -201,8 +201,8 @@ int mipi_dbi_buf_copy(void *dst, struct drm_framebuffer *fb, >> struct drm_rect *clip, bool swap) >> { >> struct drm_gem_object *gem = drm_gem_fb_get_obj(fb, 0); >>- struct dma_buf_map map[DRM_FORMAT_MAX_PLANES]; >>- struct dma_buf_map data[DRM_FORMAT_MAX_PLANES]; >>+ struct iosys_map map[DRM_FORMAT_MAX_PLANES]; >>+ struct iosys_map data[DRM_FORMAT_MAX_PLANES]; >> void *src; >> int ret; >>@@ -258,8 +258,8 @@ static void mipi_dbi_set_window_address(struct mipi_dbi_dev *dbidev, >> static void mipi_dbi_fb_dirty(struct drm_framebuffer *fb, struct drm_rect *rect) >> { >>- struct dma_buf_map map[DRM_FORMAT_MAX_PLANES]; >>- struct dma_buf_map data[DRM_FORMAT_MAX_PLANES]; >>+ struct iosys_map map[DRM_FORMAT_MAX_PLANES]; >>+ struct iosys_map data[DRM_FORMAT_MAX_PLANES]; >> struct mipi_dbi_dev *dbidev = drm_to_mipi_dbi_dev(fb->dev); >> unsigned int height = rect->y2 - rect->y1; >> unsigned int width = rect->x2 - rect->x1; >>diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c >>index c773d3dfb1ab..e3f09f18110c 100644 >>--- a/drivers/gpu/drm/drm_prime.c >>+++ b/drivers/gpu/drm/drm_prime.c >>@@ -674,7 +674,7 @@ EXPORT_SYMBOL(drm_gem_unmap_dma_buf); >> * >> * Returns 0 on success or a negative errno code otherwise. >> */ >>-int drm_gem_dmabuf_vmap(struct dma_buf *dma_buf, struct dma_buf_map *map) >>+int drm_gem_dmabuf_vmap(struct dma_buf *dma_buf, struct iosys_map *map) >> { >> struct drm_gem_object *obj = dma_buf->priv; >>@@ -690,7 +690,7 @@ EXPORT_SYMBOL(drm_gem_dmabuf_vmap); >> * Releases a kernel virtual mapping. This can be used as the >> * &dma_buf_ops.vunmap callback. Calls into &drm_gem_object_funcs.vunmap for device specific handling. >> */ >>-void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, struct dma_buf_map *map) >>+void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, struct iosys_map *map) >> { >> struct drm_gem_object *obj = dma_buf->priv; >>diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.h b/drivers/gpu/drm/etnaviv/etnaviv_drv.h >>index 049ae87de9be..f32f4771dada 100644 >>--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.h >>+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.h >>@@ -49,7 +49,7 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data, >> int etnaviv_gem_mmap_offset(struct drm_gem_object *obj, u64 *offset); >> struct sg_table *etnaviv_gem_prime_get_sg_table(struct drm_gem_object *obj); >>-int etnaviv_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map); >>+int etnaviv_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map); >> struct drm_gem_object *etnaviv_gem_prime_import_sg_table(struct drm_device *dev, >> struct dma_buf_attachment *attach, struct sg_table *sg); >> int etnaviv_gem_prime_pin(struct drm_gem_object *obj); >>diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c >>index 6788ea8490d1..3fa2da149639 100644 >>--- a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c >>+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c >>@@ -25,14 +25,14 @@ struct sg_table *etnaviv_gem_prime_get_sg_table(struct drm_gem_object *obj) >> return drm_prime_pages_to_sg(obj->dev, etnaviv_obj->pages, npages); >> } >>-int etnaviv_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+int etnaviv_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map) >> { >> void *vaddr; >> vaddr = etnaviv_gem_vmap(obj); >> if (!vaddr) >> return -ENOMEM; >>- dma_buf_map_set_vaddr(map, vaddr); >>+ iosys_map_set_vaddr(map, vaddr); >> return 0; >> } >>@@ -62,7 +62,7 @@ void etnaviv_gem_prime_unpin(struct drm_gem_object *obj) >> static void etnaviv_gem_prime_release(struct etnaviv_gem_object *etnaviv_obj) >> { >>- struct dma_buf_map map = DMA_BUF_MAP_INIT_VADDR(etnaviv_obj->vaddr); >>+ struct iosys_map map = IOSYS_MAP_INIT_VADDR(etnaviv_obj->vaddr); >> if (etnaviv_obj->vaddr) >> dma_buf_vunmap(etnaviv_obj->base.import_attach->dmabuf, &map); >>@@ -77,7 +77,7 @@ static void etnaviv_gem_prime_release(struct etnaviv_gem_object *etnaviv_obj) >> static void *etnaviv_gem_prime_vmap_impl(struct etnaviv_gem_object *etnaviv_obj) >> { >>- struct dma_buf_map map; >>+ struct iosys_map map; >> int ret; >> lockdep_assert_held(&etnaviv_obj->lock); >>diff --git a/drivers/gpu/drm/gud/gud_pipe.c b/drivers/gpu/drm/gud/gud_pipe.c >>index a150a5a4b5d4..4873f9799f41 100644 >>--- a/drivers/gpu/drm/gud/gud_pipe.c >>+++ b/drivers/gpu/drm/gud/gud_pipe.c >>@@ -152,8 +152,8 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb, >> { >> struct dma_buf_attachment *import_attach = fb->obj[0]->import_attach; >> u8 compression = gdrm->compression; >>- struct dma_buf_map map[DRM_FORMAT_MAX_PLANES]; >>- struct dma_buf_map map_data[DRM_FORMAT_MAX_PLANES]; >>+ struct iosys_map map[DRM_FORMAT_MAX_PLANES]; >>+ struct iosys_map map_data[DRM_FORMAT_MAX_PLANES]; >> void *vaddr, *buf; >> size_t pitch, len; >> int ret = 0; >>diff --git a/drivers/gpu/drm/hyperv/hyperv_drm_modeset.c b/drivers/gpu/drm/hyperv/hyperv_drm_modeset.c >>index 93f51e70a951..e82b815f83a6 100644 >>--- a/drivers/gpu/drm/hyperv/hyperv_drm_modeset.c >>+++ b/drivers/gpu/drm/hyperv/hyperv_drm_modeset.c >>@@ -19,7 +19,7 @@ >> #include "hyperv_drm.h" >> static int hyperv_blit_to_vram_rect(struct drm_framebuffer *fb, >>- const struct dma_buf_map *map, >>+ const struct iosys_map *map, >> struct drm_rect *rect) >> { >> struct hyperv_drm_device *hv = to_hv(fb->dev); >>@@ -38,7 +38,8 @@ static int hyperv_blit_to_vram_rect(struct drm_framebuffer *fb, >> return 0; >> } >>-static int hyperv_blit_to_vram_fullscreen(struct drm_framebuffer *fb, const struct dma_buf_map *map) >>+static int hyperv_blit_to_vram_fullscreen(struct drm_framebuffer *fb, >>+ const struct iosys_map *map) >> { >> struct drm_rect fullscreen = { >> .x1 = 0, >>diff --git a/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c >>index 1b526039a60d..14fdb0796c52 100644 >>--- a/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c >>+++ b/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c >>@@ -74,7 +74,8 @@ static void i915_gem_unmap_dma_buf(struct dma_buf_attachment *attachment, >> kfree(sg); >> } >>-static int i915_gem_dmabuf_vmap(struct dma_buf *dma_buf, struct dma_buf_map *map) >>+static int i915_gem_dmabuf_vmap(struct dma_buf *dma_buf, >>+ struct iosys_map *map) >> { >> struct drm_i915_gem_object *obj = dma_buf_to_obj(dma_buf); >> void *vaddr; >>@@ -83,12 +84,13 @@ static int i915_gem_dmabuf_vmap(struct dma_buf *dma_buf, struct dma_buf_map *map >> if (IS_ERR(vaddr)) >> return PTR_ERR(vaddr); >>- dma_buf_map_set_vaddr(map, vaddr); >>+ iosys_map_set_vaddr(map, vaddr); >> return 0; >> } >>-static void i915_gem_dmabuf_vunmap(struct dma_buf *dma_buf, struct dma_buf_map *map) >>+static void i915_gem_dmabuf_vunmap(struct dma_buf *dma_buf, >>+ struct iosys_map *map) >> { >> struct drm_i915_gem_object *obj = dma_buf_to_obj(dma_buf); >>diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c >>index 3cc74b0fed06..b071a58dd6da 100644 >>--- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c >>+++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c >>@@ -266,7 +266,7 @@ static int igt_dmabuf_import(void *arg) >> struct drm_i915_gem_object *obj; >> struct dma_buf *dmabuf; >> void *obj_map, *dma_map; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> u32 pattern[] = { 0, 0xaa, 0xcc, 0x55, 0xff }; >> int err, i; >>@@ -349,7 +349,7 @@ static int igt_dmabuf_import_ownership(void *arg) >> struct drm_i915_private *i915 = arg; >> struct drm_i915_gem_object *obj; >> struct dma_buf *dmabuf; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> void *ptr; >> int err; >>@@ -400,7 +400,7 @@ static int igt_dmabuf_export_vmap(void *arg) >> struct drm_i915_private *i915 = arg; >> struct drm_i915_gem_object *obj; >> struct dma_buf *dmabuf; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> void *ptr; >> int err; >>diff --git a/drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c b/drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c >>index 2855d11c7a51..b2a5882b8f81 100644 >>--- a/drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c >>+++ b/drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c >>@@ -61,7 +61,7 @@ static void mock_dmabuf_release(struct dma_buf *dma_buf) >> kfree(mock); >> } >>-static int mock_dmabuf_vmap(struct dma_buf *dma_buf, struct dma_buf_map *map) >>+static int mock_dmabuf_vmap(struct dma_buf *dma_buf, struct iosys_map *map) >> { >> struct mock_dmabuf *mock = to_mock(dma_buf); >> void *vaddr; >>@@ -69,12 +69,12 @@ static int mock_dmabuf_vmap(struct dma_buf *dma_buf, struct dma_buf_map *map) >> vaddr = vm_map_ram(mock->pages, mock->npages, 0); >> if (!vaddr) >> return -ENOMEM; >>- dma_buf_map_set_vaddr(map, vaddr); >>+ iosys_map_set_vaddr(map, vaddr); >> return 0; >> } >>-static void mock_dmabuf_vunmap(struct dma_buf *dma_buf, struct dma_buf_map *map) >>+static void mock_dmabuf_vunmap(struct dma_buf *dma_buf, struct iosys_map *map) >> { >> struct mock_dmabuf *mock = to_mock(dma_buf); >>diff --git a/drivers/gpu/drm/lima/lima_gem.c b/drivers/gpu/drm/lima/lima_gem.c >>index f9a9198ef198..d0c2b1422b3b 100644 >>--- a/drivers/gpu/drm/lima/lima_gem.c >>+++ b/drivers/gpu/drm/lima/lima_gem.c >>@@ -2,6 +2,7 @@ >> /* Copyright 2017-2019 Qiang Yu */ >> #include >>+#include >> #include >> #include >> #include >>@@ -182,7 +183,7 @@ static int lima_gem_pin(struct drm_gem_object *obj) >> return drm_gem_shmem_pin(&bo->base); >> } >>-static int lima_gem_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+static int lima_gem_vmap(struct drm_gem_object *obj, struct iosys_map *map) >> { >> struct lima_bo *bo = to_lima_bo(obj); >>diff --git a/drivers/gpu/drm/lima/lima_sched.c b/drivers/gpu/drm/lima/lima_sched.c >>index 5612d73f238f..390c969f74ad 100644 >>--- a/drivers/gpu/drm/lima/lima_sched.c >>+++ b/drivers/gpu/drm/lima/lima_sched.c >>@@ -1,7 +1,7 @@ >> // SPDX-License-Identifier: GPL-2.0 OR MIT >> /* Copyright 2017-2019 Qiang Yu */ >>-#include >>+#include >> #include >> #include >> #include >>@@ -284,7 +284,7 @@ static void lima_sched_build_error_task_list(struct lima_sched_task *task) >> struct lima_dump_chunk_buffer *buffer_chunk; >> u32 size, task_size, mem_size; >> int i; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> int ret; >> mutex_lock(&dev->error_task_list_lock); >>diff --git a/drivers/gpu/drm/mediatek/mtk_drm_gem.c b/drivers/gpu/drm/mediatek/mtk_drm_gem.c >>index d0544962cfc1..139d7724c6d0 100644 >>--- a/drivers/gpu/drm/mediatek/mtk_drm_gem.c >>+++ b/drivers/gpu/drm/mediatek/mtk_drm_gem.c >>@@ -220,7 +220,7 @@ struct drm_gem_object *mtk_gem_prime_import_sg_table(struct drm_device *dev, >> return &mtk_gem->base; >> } >>-int mtk_drm_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+int mtk_drm_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map) >> { >> struct mtk_drm_gem_obj *mtk_gem = to_mtk_gem_obj(obj); >> struct sg_table *sgt = NULL; >>@@ -247,12 +247,13 @@ int mtk_drm_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >> out: >> kfree(sgt); >>- dma_buf_map_set_vaddr(map, mtk_gem->kvaddr); >>+ iosys_map_set_vaddr(map, mtk_gem->kvaddr); >> return 0; >> } >>-void mtk_drm_gem_prime_vunmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+void mtk_drm_gem_prime_vunmap(struct drm_gem_object *obj, >>+ struct iosys_map *map) >> { >> struct mtk_drm_gem_obj *mtk_gem = to_mtk_gem_obj(obj); >> void *vaddr = map->vaddr; >>diff --git a/drivers/gpu/drm/mediatek/mtk_drm_gem.h b/drivers/gpu/drm/mediatek/mtk_drm_gem.h >>index 9a359a06cb73..78f23b07a02e 100644 >>--- a/drivers/gpu/drm/mediatek/mtk_drm_gem.h >>+++ b/drivers/gpu/drm/mediatek/mtk_drm_gem.h >>@@ -42,7 +42,8 @@ int mtk_drm_gem_dumb_create(struct drm_file *file_priv, struct drm_device *dev, >> struct sg_table *mtk_gem_prime_get_sg_table(struct drm_gem_object *obj); >> struct drm_gem_object *mtk_gem_prime_import_sg_table(struct drm_device *dev, >> struct dma_buf_attachment *attach, struct sg_table *sg); >>-int mtk_drm_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map); >>-void mtk_drm_gem_prime_vunmap(struct drm_gem_object *obj, struct dma_buf_map *map); >>+int mtk_drm_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map); >>+void mtk_drm_gem_prime_vunmap(struct drm_gem_object *obj, >>+ struct iosys_map *map); >> #endif >>diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c >>index cd9ba13ad5fc..6e18d3bbd720 100644 >>--- a/drivers/gpu/drm/mgag200/mgag200_mode.c >>+++ b/drivers/gpu/drm/mgag200/mgag200_mode.c >>@@ -9,7 +9,7 @@ >> */ >> #include >>-#include >>+#include >> #include >> #include >>@@ -848,7 +848,7 @@ mgag200_simple_display_pipe_mode_valid(struct drm_simple_display_pipe *pipe, >> static void >> mgag200_handle_damage(struct mga_device *mdev, struct drm_framebuffer *fb, >>- struct drm_rect *clip, const struct dma_buf_map *map) >>+ struct drm_rect *clip, const struct iosys_map *map) >> { >> void __iomem *dst = mdev->vram; >> void *vmap = map->vaddr; /* TODO: Use mapping abstraction properly */ >>diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h >>index eb984d925f4d..c70868a3ac53 100644 >>--- a/drivers/gpu/drm/msm/msm_drv.h >>+++ b/drivers/gpu/drm/msm/msm_drv.h >>@@ -306,8 +306,8 @@ void msm_gem_shrinker_init(struct drm_device *dev); >> void msm_gem_shrinker_cleanup(struct drm_device *dev); >> struct sg_table *msm_gem_prime_get_sg_table(struct drm_gem_object *obj); >>-int msm_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map); >>-void msm_gem_prime_vunmap(struct drm_gem_object *obj, struct dma_buf_map *map); >>+int msm_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map); >>+void msm_gem_prime_vunmap(struct drm_gem_object *obj, struct iosys_map *map); >> struct drm_gem_object *msm_gem_prime_import_sg_table(struct drm_device *dev, >> struct dma_buf_attachment *attach, struct sg_table *sg); >> int msm_gem_prime_pin(struct drm_gem_object *obj); >>diff --git a/drivers/gpu/drm/msm/msm_gem_prime.c b/drivers/gpu/drm/msm/msm_gem_prime.c >>index fc94e061d6a7..e8f1b7a2ca9c 100644 >>--- a/drivers/gpu/drm/msm/msm_gem_prime.c >>+++ b/drivers/gpu/drm/msm/msm_gem_prime.c >>@@ -22,19 +22,19 @@ struct sg_table *msm_gem_prime_get_sg_table(struct drm_gem_object *obj) >> return drm_prime_pages_to_sg(obj->dev, msm_obj->pages, npages); >> } >>-int msm_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+int msm_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map) >> { >> void *vaddr; >> vaddr = msm_gem_get_vaddr(obj); >> if (IS_ERR(vaddr)) >> return PTR_ERR(vaddr); >>- dma_buf_map_set_vaddr(map, vaddr); >>+ iosys_map_set_vaddr(map, vaddr); >> return 0; >> } >>-void msm_gem_prime_vunmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+void msm_gem_prime_vunmap(struct drm_gem_object *obj, struct iosys_map *map) >> { >> msm_gem_put_vaddr(obj); >> } >>diff --git a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c b/drivers/gpu/drm/panfrost/panfrost_perfcnt.c >>index 1d36df5af98d..bc0df93f7f21 100644 >>--- a/drivers/gpu/drm/panfrost/panfrost_perfcnt.c >>+++ b/drivers/gpu/drm/panfrost/panfrost_perfcnt.c >>@@ -1,16 +1,17 @@ >> // SPDX-License-Identifier: GPL-2.0 >> /* Copyright 2019 Collabora Ltd */ >>-#include >>-#include >>-#include >> #include >>-#include >> #include >>+#include >> #include >> #include >> #include >>+#include >>+#include >>+#include >>+ >> #include "panfrost_device.h" >> #include "panfrost_features.h" >> #include "panfrost_gem.h" >>@@ -73,7 +74,7 @@ static int panfrost_perfcnt_enable_locked(struct panfrost_device *pfdev, >> { >> struct panfrost_file_priv *user = file_priv->driver_priv; >> struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> struct drm_gem_shmem_object *bo; >> u32 cfg, as; >> int ret; >>@@ -181,7 +182,7 @@ static int panfrost_perfcnt_disable_locked(struct panfrost_device *pfdev, >> { >> struct panfrost_file_priv *user = file_priv->driver_priv; >> struct panfrost_perfcnt *perfcnt = pfdev->perfcnt; >>- struct dma_buf_map map = DMA_BUF_MAP_INIT_VADDR(perfcnt->buf); >>+ struct iosys_map map = IOSYS_MAP_INIT_VADDR(perfcnt->buf); >> if (user != perfcnt->user) >> return -EINVAL; >>diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c >>index 9e0a1e836011..9a9c29b1d3e1 100644 >>--- a/drivers/gpu/drm/qxl/qxl_display.c >>+++ b/drivers/gpu/drm/qxl/qxl_display.c >>@@ -25,7 +25,7 @@ >> #include >> #include >>-#include >>+#include >> #include >> #include >>@@ -566,8 +566,8 @@ static struct qxl_bo *qxl_create_cursor(struct qxl_device *qdev, >> { >> static const u32 size = 64 * 64 * 4; >> struct qxl_bo *cursor_bo; >>- struct dma_buf_map cursor_map; >>- struct dma_buf_map user_map; >>+ struct iosys_map cursor_map; >>+ struct iosys_map user_map; >> struct qxl_cursor cursor; >> int ret; >>@@ -1183,7 +1183,7 @@ int qxl_create_monitors_object(struct qxl_device *qdev) >> { >> int ret; >> struct drm_gem_object *gobj; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> int monitors_config_size = sizeof(struct qxl_monitors_config) + >> qxl_num_crtc * sizeof(struct qxl_head); >>diff --git a/drivers/gpu/drm/qxl/qxl_draw.c b/drivers/gpu/drm/qxl/qxl_draw.c >>index 7d27891e87fa..a93de9e1977a 100644 >>--- a/drivers/gpu/drm/qxl/qxl_draw.c >>+++ b/drivers/gpu/drm/qxl/qxl_draw.c >>@@ -20,7 +20,7 @@ >> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. >> */ >>-#include >>+#include >> #include >>@@ -44,7 +44,7 @@ static struct qxl_rect *drawable_set_clipping(struct qxl_device *qdev, >> unsigned int num_clips, >> struct qxl_bo *clips_bo) >> { >>- struct dma_buf_map map; >>+ struct iosys_map map; >> struct qxl_clip_rects *dev_clips; >> int ret; >>@@ -146,7 +146,7 @@ void qxl_draw_dirty_fb(struct qxl_device *qdev, >> int stride = fb->pitches[0]; >> /* depth is not actually interesting, we don't mask with it */ >> int depth = fb->format->cpp[0] * 8; >>- struct dma_buf_map surface_map; >>+ struct iosys_map surface_map; >> uint8_t *surface_base; >> struct qxl_release *release; >> struct qxl_bo *clips_bo; >>diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h >>index 29641ceaab7d..47c169673088 100644 >>--- a/drivers/gpu/drm/qxl/qxl_drv.h >>+++ b/drivers/gpu/drm/qxl/qxl_drv.h >>@@ -30,7 +30,7 @@ >> * Definitions taken from spice-protocol, plus kernel driver specific bits. >> */ >>-#include >>+#include >> #include >> #include >> #include >>@@ -50,7 +50,7 @@ >> #include "qxl_dev.h" >>-struct dma_buf_map; >>+struct iosys_map; >> #define DRIVER_AUTHOR "Dave Airlie" >>@@ -80,7 +80,7 @@ struct qxl_bo { >> /* Protected by tbo.reserved */ >> struct ttm_place placements[3]; >> struct ttm_placement placement; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> void *kptr; >> unsigned int map_count; >> int type; >>@@ -427,9 +427,9 @@ struct sg_table *qxl_gem_prime_get_sg_table(struct drm_gem_object *obj); >> struct drm_gem_object *qxl_gem_prime_import_sg_table( >> struct drm_device *dev, struct dma_buf_attachment *attach, >> struct sg_table *sgt); >>-int qxl_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map); >>+int qxl_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map); >> void qxl_gem_prime_vunmap(struct drm_gem_object *obj, >>- struct dma_buf_map *map); >>+ struct iosys_map *map); >> /* qxl_irq.c */ >> int qxl_irq_init(struct qxl_device *qdev); >>diff --git a/drivers/gpu/drm/qxl/qxl_object.c b/drivers/gpu/drm/qxl/qxl_object.c >>index fbb36e3e8564..b42a657e4c2f 100644 >>--- a/drivers/gpu/drm/qxl/qxl_object.c >>+++ b/drivers/gpu/drm/qxl/qxl_object.c >>@@ -23,7 +23,7 @@ >> * Alon Levy >> */ >>-#include >>+#include >> #include >> #include "qxl_drv.h" >>@@ -158,7 +158,7 @@ int qxl_bo_create(struct qxl_device *qdev, unsigned long size, >> return 0; >> } >>-int qxl_bo_vmap_locked(struct qxl_bo *bo, struct dma_buf_map *map) >>+int qxl_bo_vmap_locked(struct qxl_bo *bo, struct iosys_map *map) >> { >> int r; >>@@ -184,7 +184,7 @@ int qxl_bo_vmap_locked(struct qxl_bo *bo, struct dma_buf_map *map) >> return 0; >> } >>-int qxl_bo_vmap(struct qxl_bo *bo, struct dma_buf_map *map) >>+int qxl_bo_vmap(struct qxl_bo *bo, struct iosys_map *map) >> { >> int r; >>@@ -210,7 +210,7 @@ void *qxl_bo_kmap_atomic_page(struct qxl_device *qdev, >> void *rptr; >> int ret; >> struct io_mapping *map; >>- struct dma_buf_map bo_map; >>+ struct iosys_map bo_map; >> if (bo->tbo.resource->mem_type == TTM_PL_VRAM) >> map = qdev->vram_mapping; >>diff --git a/drivers/gpu/drm/qxl/qxl_object.h b/drivers/gpu/drm/qxl/qxl_object.h >>index cee4b52b75dd..53392cb90eec 100644 >>--- a/drivers/gpu/drm/qxl/qxl_object.h >>+++ b/drivers/gpu/drm/qxl/qxl_object.h >>@@ -59,8 +59,8 @@ extern int qxl_bo_create(struct qxl_device *qdev, >> u32 priority, >> struct qxl_surface *surf, >> struct qxl_bo **bo_ptr); >>-int qxl_bo_vmap(struct qxl_bo *bo, struct dma_buf_map *map); >>-int qxl_bo_vmap_locked(struct qxl_bo *bo, struct dma_buf_map *map); >>+int qxl_bo_vmap(struct qxl_bo *bo, struct iosys_map *map); >>+int qxl_bo_vmap_locked(struct qxl_bo *bo, struct iosys_map *map); >> int qxl_bo_vunmap(struct qxl_bo *bo); >> void qxl_bo_vunmap_locked(struct qxl_bo *bo); >> void *qxl_bo_kmap_atomic_page(struct qxl_device *qdev, struct qxl_bo *bo, int page_offset); >>diff --git a/drivers/gpu/drm/qxl/qxl_prime.c b/drivers/gpu/drm/qxl/qxl_prime.c >>index 4a10cb0a413b..142d01415acb 100644 >>--- a/drivers/gpu/drm/qxl/qxl_prime.c >>+++ b/drivers/gpu/drm/qxl/qxl_prime.c >>@@ -54,7 +54,7 @@ struct drm_gem_object *qxl_gem_prime_import_sg_table( >> return ERR_PTR(-ENOSYS); >> } >>-int qxl_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+int qxl_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map) >> { >> struct qxl_bo *bo = gem_to_qxl_bo(obj); >> int ret; >>@@ -67,7 +67,7 @@ int qxl_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >> } >> void qxl_gem_prime_vunmap(struct drm_gem_object *obj, >>- struct dma_buf_map *map) >>+ struct iosys_map *map) >> { >> struct qxl_bo *bo = gem_to_qxl_bo(obj); >>diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c >>index a36a4f2c76b0..f563284a7fac 100644 >>--- a/drivers/gpu/drm/radeon/radeon_gem.c >>+++ b/drivers/gpu/drm/radeon/radeon_gem.c >>@@ -26,6 +26,7 @@ >> * Jerome Glisse >> */ >>+#include >> #include >> #include >>diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c >>index 63eb73b624aa..985584147da1 100644 >>--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c >>+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c >>@@ -510,7 +510,7 @@ rockchip_gem_prime_import_sg_table(struct drm_device *drm, >> return ERR_PTR(ret); >> } >>-int rockchip_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+int rockchip_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map) >> { >> struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj); >>@@ -519,18 +519,19 @@ int rockchip_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >> pgprot_writecombine(PAGE_KERNEL)); >> if (!vaddr) >> return -ENOMEM; >>- dma_buf_map_set_vaddr(map, vaddr); >>+ iosys_map_set_vaddr(map, vaddr); >> return 0; >> } >> if (rk_obj->dma_attrs & DMA_ATTR_NO_KERNEL_MAPPING) >> return -ENOMEM; >>- dma_buf_map_set_vaddr(map, rk_obj->kvaddr); >>+ iosys_map_set_vaddr(map, rk_obj->kvaddr); >> return 0; >> } >>-void rockchip_gem_prime_vunmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+void rockchip_gem_prime_vunmap(struct drm_gem_object *obj, >>+ struct iosys_map *map) >> { >> struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj); >>diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.h b/drivers/gpu/drm/rockchip/rockchip_drm_gem.h >>index 47c1861eece0..72f59ac6d258 100644 >>--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.h >>+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.h >>@@ -31,8 +31,9 @@ struct drm_gem_object * >> rockchip_gem_prime_import_sg_table(struct drm_device *dev, >> struct dma_buf_attachment *attach, >> struct sg_table *sg); >>-int rockchip_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map); >>-void rockchip_gem_prime_vunmap(struct drm_gem_object *obj, struct dma_buf_map *map); >>+int rockchip_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map); >>+void rockchip_gem_prime_vunmap(struct drm_gem_object *obj, >>+ struct iosys_map *map); >> struct rockchip_gem_object * >> rockchip_gem_create_object(struct drm_device *drm, unsigned int size, >>diff --git a/drivers/gpu/drm/tegra/gem.c b/drivers/gpu/drm/tegra/gem.c >>index d38fd7e12b57..ef208384665e 100644 >>--- a/drivers/gpu/drm/tegra/gem.c >>+++ b/drivers/gpu/drm/tegra/gem.c >>@@ -135,7 +135,7 @@ static void tegra_bo_unpin(struct device *dev, struct sg_table *sgt) >> static void *tegra_bo_mmap(struct host1x_bo *bo) >> { >> struct tegra_bo *obj = host1x_to_tegra_bo(bo); >>- struct dma_buf_map map; >>+ struct iosys_map map; >> int ret; >> if (obj->vaddr) { >>@@ -152,7 +152,7 @@ static void *tegra_bo_mmap(struct host1x_bo *bo) >> static void tegra_bo_munmap(struct host1x_bo *bo, void *addr) >> { >> struct tegra_bo *obj = host1x_to_tegra_bo(bo); >>- struct dma_buf_map map = DMA_BUF_MAP_INIT_VADDR(addr); >>+ struct iosys_map map = IOSYS_MAP_INIT_VADDR(addr); >> if (obj->vaddr) >> return; >>@@ -650,17 +650,17 @@ static int tegra_gem_prime_mmap(struct dma_buf *buf, struct vm_area_struct *vma) >> return __tegra_gem_mmap(gem, vma); >> } >>-static int tegra_gem_prime_vmap(struct dma_buf *buf, struct dma_buf_map *map) >>+static int tegra_gem_prime_vmap(struct dma_buf *buf, struct iosys_map *map) >> { >> struct drm_gem_object *gem = buf->priv; >> struct tegra_bo *bo = to_tegra_bo(gem); >>- dma_buf_map_set_vaddr(map, bo->vaddr); >>+ iosys_map_set_vaddr(map, bo->vaddr); >> return 0; >> } >>-static void tegra_gem_prime_vunmap(struct dma_buf *buf, struct dma_buf_map *map) >>+static void tegra_gem_prime_vunmap(struct dma_buf *buf, struct iosys_map *map) >> { >> } >>diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c >>index ecf2475d0f16..c8e791840862 100644 >>--- a/drivers/gpu/drm/tiny/cirrus.c >>+++ b/drivers/gpu/drm/tiny/cirrus.c >>@@ -16,7 +16,7 @@ >> * Copyright 1999-2001 Jeff Garzik >> */ >>-#include >>+#include >> #include >> #include >>@@ -313,7 +313,8 @@ static int cirrus_mode_set(struct cirrus_device *cirrus, >> return 0; >> } >>-static int cirrus_fb_blit_rect(struct drm_framebuffer *fb, const struct dma_buf_map *map, >>+static int cirrus_fb_blit_rect(struct drm_framebuffer *fb, >>+ const struct iosys_map *map, >> struct drm_rect *rect) >> { >> struct cirrus_device *cirrus = to_cirrus(fb->dev); >>@@ -345,7 +346,8 @@ static int cirrus_fb_blit_rect(struct drm_framebuffer *fb, const struct dma_buf_ >> return 0; >> } >>-static int cirrus_fb_blit_fullscreen(struct drm_framebuffer *fb, const struct dma_buf_map *map) >>+static int cirrus_fb_blit_fullscreen(struct drm_framebuffer *fb, >>+ const struct iosys_map *map) >> { >> struct drm_rect fullscreen = { >> .x1 = 0, >>diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c >>index 6bc0c298739c..648e585d40a8 100644 >>--- a/drivers/gpu/drm/tiny/gm12u320.c >>+++ b/drivers/gpu/drm/tiny/gm12u320.c >>@@ -95,7 +95,7 @@ struct gm12u320_device { >> struct drm_rect rect; >> int frame; >> int draw_status_timeout; >>- struct dma_buf_map src_map; >>+ struct iosys_map src_map; >> } fb_update; >> }; >>@@ -395,7 +395,8 @@ static void gm12u320_fb_update_work(struct work_struct *work) >> GM12U320_ERR("Frame update error: %d\n", ret); >> } >>-static void gm12u320_fb_mark_dirty(struct drm_framebuffer *fb, const struct dma_buf_map *map, >>+static void gm12u320_fb_mark_dirty(struct drm_framebuffer *fb, >>+ const struct iosys_map *map, >> struct drm_rect *dirty) >> { >> struct gm12u320_device *gm12u320 = to_gm12u320(fb->dev); >>@@ -438,7 +439,7 @@ static void gm12u320_stop_fb_update(struct gm12u320_device *gm12u320) >> mutex_lock(&gm12u320->fb_update.lock); >> old_fb = gm12u320->fb_update.fb; >> gm12u320->fb_update.fb = NULL; >>- dma_buf_map_clear(&gm12u320->fb_update.src_map); >>+ iosys_map_clear(&gm12u320->fb_update.src_map); >> mutex_unlock(&gm12u320->fb_update.lock); >> drm_framebuffer_put(old_fb); >>diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c >>index 544a84fa6589..2b8caa1efaa3 100644 >>--- a/drivers/gpu/drm/ttm/ttm_bo_util.c >>+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c >>@@ -33,7 +33,7 @@ >> #include >> #include >> #include >>-#include >>+#include >> #include >> #include >> #include >>@@ -93,7 +93,7 @@ void ttm_move_memcpy(bool clear, >> { >> const struct ttm_kmap_iter_ops *dst_ops = dst_iter->ops; >> const struct ttm_kmap_iter_ops *src_ops = src_iter->ops; >>- struct dma_buf_map src_map, dst_map; >>+ struct iosys_map src_map, dst_map; >> pgoff_t i; >> /* Single TTM move. NOP */ >>@@ -390,7 +390,7 @@ void ttm_bo_kunmap(struct ttm_bo_kmap_obj *map) >> } >> EXPORT_SYMBOL(ttm_bo_kunmap); >>-int ttm_bo_vmap(struct ttm_buffer_object *bo, struct dma_buf_map *map) >>+int ttm_bo_vmap(struct ttm_buffer_object *bo, struct iosys_map *map) >> { >> struct ttm_resource *mem = bo->resource; >> int ret; >>@@ -418,7 +418,7 @@ int ttm_bo_vmap(struct ttm_buffer_object *bo, struct dma_buf_map *map) >> if (!vaddr_iomem) >> return -ENOMEM; >>- dma_buf_map_set_vaddr_iomem(map, vaddr_iomem); >>+ iosys_map_set_vaddr_iomem(map, vaddr_iomem); >> } else { >> struct ttm_operation_ctx ctx = { >>@@ -442,25 +442,25 @@ int ttm_bo_vmap(struct ttm_buffer_object *bo, struct dma_buf_map *map) >> if (!vaddr) >> return -ENOMEM; >>- dma_buf_map_set_vaddr(map, vaddr); >>+ iosys_map_set_vaddr(map, vaddr); >> } >> return 0; >> } >> EXPORT_SYMBOL(ttm_bo_vmap); >>-void ttm_bo_vunmap(struct ttm_buffer_object *bo, struct dma_buf_map *map) >>+void ttm_bo_vunmap(struct ttm_buffer_object *bo, struct iosys_map *map) >> { >> struct ttm_resource *mem = bo->resource; >>- if (dma_buf_map_is_null(map)) >>+ if (iosys_map_is_null(map)) >> return; >> if (!map->is_iomem) >> vunmap(map->vaddr); >> else if (!mem->bus.addr) >> iounmap(map->vaddr_iomem); >>- dma_buf_map_clear(map); >>+ iosys_map_clear(map); >> ttm_mem_io_free(bo->bdev, bo->resource); >> } >>diff --git a/drivers/gpu/drm/ttm/ttm_resource.c b/drivers/gpu/drm/ttm/ttm_resource.c >>index 68344c90549b..eedda3761506 100644 >>--- a/drivers/gpu/drm/ttm/ttm_resource.c >>+++ b/drivers/gpu/drm/ttm/ttm_resource.c >>@@ -22,7 +22,7 @@ >> * Authors: Christian K?nig >> */ >>-#include >>+#include >> #include >> #include >>@@ -244,7 +244,7 @@ void ttm_resource_manager_debug(struct ttm_resource_manager *man, >> EXPORT_SYMBOL(ttm_resource_manager_debug); >> static void ttm_kmap_iter_iomap_map_local(struct ttm_kmap_iter *iter, >>- struct dma_buf_map *dmap, >>+ struct iosys_map *dmap, >> pgoff_t i) >> { >> struct ttm_kmap_iter_iomap *iter_io = >>@@ -271,11 +271,11 @@ static void ttm_kmap_iter_iomap_map_local(struct ttm_kmap_iter *iter, >> addr = io_mapping_map_local_wc(iter_io->iomap, iter_io->cache.offs + >> (((resource_size_t)i - iter_io->cache.i) >> << PAGE_SHIFT)); >>- dma_buf_map_set_vaddr_iomem(dmap, addr); >>+ iosys_map_set_vaddr_iomem(dmap, addr); >> } >> static void ttm_kmap_iter_iomap_unmap_local(struct ttm_kmap_iter *iter, >>- struct dma_buf_map *map) >>+ struct iosys_map *map) >> { >> io_mapping_unmap_local(map->vaddr_iomem); >> } >>@@ -326,14 +326,14 @@ EXPORT_SYMBOL(ttm_kmap_iter_iomap_init); >> */ >> static void ttm_kmap_iter_linear_io_map_local(struct ttm_kmap_iter *iter, >>- struct dma_buf_map *dmap, >>+ struct iosys_map *dmap, >> pgoff_t i) >> { >> struct ttm_kmap_iter_linear_io *iter_io = >> container_of(iter, typeof(*iter_io), base); >> *dmap = iter_io->dmap; >>- dma_buf_map_incr(dmap, i * PAGE_SIZE); >>+ iosys_map_incr(dmap, i * PAGE_SIZE); >> } >> static const struct ttm_kmap_iter_ops ttm_kmap_iter_linear_io_ops = { >>@@ -369,7 +369,7 @@ ttm_kmap_iter_linear_io_init(struct ttm_kmap_iter_linear_io *iter_io, >> } >> if (mem->bus.addr) { >>- dma_buf_map_set_vaddr(&iter_io->dmap, mem->bus.addr); >>+ iosys_map_set_vaddr(&iter_io->dmap, mem->bus.addr); >> iter_io->needs_unmap = false; >> } else { >> size_t bus_size = (size_t)mem->num_pages << PAGE_SHIFT; >>@@ -377,23 +377,23 @@ ttm_kmap_iter_linear_io_init(struct ttm_kmap_iter_linear_io *iter_io, >> iter_io->needs_unmap = true; >> memset(&iter_io->dmap, 0, sizeof(iter_io->dmap)); >> if (mem->bus.caching == ttm_write_combined) >>- dma_buf_map_set_vaddr_iomem(&iter_io->dmap, >>+ iosys_map_set_vaddr_iomem(&iter_io->dmap, >> ioremap_wc(mem->bus.offset, >> bus_size)); >> else if (mem->bus.caching == ttm_cached) >>- dma_buf_map_set_vaddr(&iter_io->dmap, >>+ iosys_map_set_vaddr(&iter_io->dmap, >> memremap(mem->bus.offset, bus_size, >> MEMREMAP_WB | >> MEMREMAP_WT | >> MEMREMAP_WC)); >> /* If uncached requested or if mapping cached or wc failed */ >>- if (dma_buf_map_is_null(&iter_io->dmap)) >>- dma_buf_map_set_vaddr_iomem(&iter_io->dmap, >>+ if (iosys_map_is_null(&iter_io->dmap)) >>+ iosys_map_set_vaddr_iomem(&iter_io->dmap, >> ioremap(mem->bus.offset, >> bus_size)); >>- if (dma_buf_map_is_null(&iter_io->dmap)) { >>+ if (iosys_map_is_null(&iter_io->dmap)) { >> ret = -ENOMEM; >> goto out_io_free; >> } >>@@ -422,7 +422,7 @@ ttm_kmap_iter_linear_io_fini(struct ttm_kmap_iter_linear_io *iter_io, >> struct ttm_device *bdev, >> struct ttm_resource *mem) >> { >>- if (iter_io->needs_unmap && dma_buf_map_is_set(&iter_io->dmap)) { >>+ if (iter_io->needs_unmap && iosys_map_is_set(&iter_io->dmap)) { >> if (iter_io->dmap.is_iomem) >> iounmap(iter_io->dmap.vaddr_iomem); >> else >>diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c >>index 79c870a3bef8..ef6343b78d71 100644 >>--- a/drivers/gpu/drm/ttm/ttm_tt.c >>+++ b/drivers/gpu/drm/ttm/ttm_tt.c >>@@ -406,18 +406,18 @@ void ttm_tt_mgr_init(unsigned long num_pages, unsigned long num_dma32_pages) >> } >> static void ttm_kmap_iter_tt_map_local(struct ttm_kmap_iter *iter, >>- struct dma_buf_map *dmap, >>+ struct iosys_map *dmap, >> pgoff_t i) >> { >> struct ttm_kmap_iter_tt *iter_tt = >> container_of(iter, typeof(*iter_tt), base); >>- dma_buf_map_set_vaddr(dmap, kmap_local_page_prot(iter_tt->tt->pages[i], >>+ iosys_map_set_vaddr(dmap, kmap_local_page_prot(iter_tt->tt->pages[i], >> iter_tt->prot)); >> } >> static void ttm_kmap_iter_tt_unmap_local(struct ttm_kmap_iter *iter, >>- struct dma_buf_map *map) >>+ struct iosys_map *map) >> { >> kunmap_local(map->vaddr); >> } >>diff --git a/drivers/gpu/drm/udl/udl_modeset.c b/drivers/gpu/drm/udl/udl_modeset.c >>index 32232228dae9..e67c40a48fb4 100644 >>--- a/drivers/gpu/drm/udl/udl_modeset.c >>+++ b/drivers/gpu/drm/udl/udl_modeset.c >>@@ -264,7 +264,8 @@ static int udl_aligned_damage_clip(struct drm_rect *clip, int x, int y, >> return 0; >> } >>-static int udl_handle_damage(struct drm_framebuffer *fb, const struct dma_buf_map *map, >>+static int udl_handle_damage(struct drm_framebuffer *fb, >>+ const struct iosys_map *map, >> int x, int y, int width, int height) >> { >> struct drm_device *dev = fb->dev; >>diff --git a/drivers/gpu/drm/vboxvideo/vbox_mode.c b/drivers/gpu/drm/vboxvideo/vbox_mode.c >>index 4227a915b06a..4017b0a621fc 100644 >>--- a/drivers/gpu/drm/vboxvideo/vbox_mode.c >>+++ b/drivers/gpu/drm/vboxvideo/vbox_mode.c >>@@ -10,7 +10,7 @@ >> * Hans de Goede >> */ >>-#include >>+#include >> #include >> #include >>@@ -398,7 +398,7 @@ static void vbox_cursor_atomic_update(struct drm_plane *plane, >> u32 height = new_state->crtc_h; >> struct drm_shadow_plane_state *shadow_plane_state = >> to_drm_shadow_plane_state(new_state); >>- struct dma_buf_map map = shadow_plane_state->data[0]; >>+ struct iosys_map map = shadow_plane_state->data[0]; >> u8 *src = map.vaddr; /* TODO: Use mapping abstraction properly */ >> size_t data_size, mask_size; >> u32 flags; >>diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vkms_composer.c >>index 9e8204be9a14..c6a1036bf2ea 100644 >>--- a/drivers/gpu/drm/vkms/vkms_composer.c >>+++ b/drivers/gpu/drm/vkms/vkms_composer.c >>@@ -157,7 +157,7 @@ static void compose_plane(struct vkms_composer *primary_composer, >> void *vaddr; >> void (*pixel_blend)(const u8 *p_src, u8 *p_dst); >>- if (WARN_ON(dma_buf_map_is_null(&primary_composer->map[0]))) >>+ if (WARN_ON(iosys_map_is_null(&primary_composer->map[0]))) >> return; >> vaddr = plane_composer->map[0].vaddr; >>@@ -187,7 +187,7 @@ static int compose_active_planes(void **vaddr_out, >> } >> } >>- if (WARN_ON(dma_buf_map_is_null(&primary_composer->map[0]))) >>+ if (WARN_ON(iosys_map_is_null(&primary_composer->map[0]))) >> return -EINVAL; >> vaddr = primary_composer->map[0].vaddr; >>diff --git a/drivers/gpu/drm/vkms/vkms_drv.h b/drivers/gpu/drm/vkms/vkms_drv.h >>index 9496fdc900b8..91e63b12f60f 100644 >>--- a/drivers/gpu/drm/vkms/vkms_drv.h >>+++ b/drivers/gpu/drm/vkms/vkms_drv.h >>@@ -23,14 +23,14 @@ >> #define NUM_OVERLAY_PLANES 8 >> struct vkms_writeback_job { >>- struct dma_buf_map map[DRM_FORMAT_MAX_PLANES]; >>- struct dma_buf_map data[DRM_FORMAT_MAX_PLANES]; >>+ struct iosys_map map[DRM_FORMAT_MAX_PLANES]; >>+ struct iosys_map data[DRM_FORMAT_MAX_PLANES]; >> }; >> struct vkms_composer { >> struct drm_framebuffer fb; >> struct drm_rect src, dst; >>- struct dma_buf_map map[4]; >>+ struct iosys_map map[4]; >> unsigned int offset; >> unsigned int pitch; >> unsigned int cpp; >>diff --git a/drivers/gpu/drm/vkms/vkms_plane.c b/drivers/gpu/drm/vkms/vkms_plane.c >>index 32409e15244b..d8eb674b49a6 100644 >>--- a/drivers/gpu/drm/vkms/vkms_plane.c >>+++ b/drivers/gpu/drm/vkms/vkms_plane.c >>@@ -1,6 +1,6 @@ >> // SPDX-License-Identifier: GPL-2.0+ >>-#include >>+#include >> #include >> #include >>diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c >>index 8694227f555f..af1604dfbbaf 100644 >>--- a/drivers/gpu/drm/vkms/vkms_writeback.c >>+++ b/drivers/gpu/drm/vkms/vkms_writeback.c >>@@ -1,6 +1,6 @@ >> // SPDX-License-Identifier: GPL-2.0+ >>-#include >>+#include >> #include >> #include >>diff --git a/drivers/gpu/drm/xen/xen_drm_front_gem.c b/drivers/gpu/drm/xen/xen_drm_front_gem.c >>index dd358ba2bf8e..5a5bf4e5b717 100644 >>--- a/drivers/gpu/drm/xen/xen_drm_front_gem.c >>+++ b/drivers/gpu/drm/xen/xen_drm_front_gem.c >>@@ -280,7 +280,8 @@ xen_drm_front_gem_import_sg_table(struct drm_device *dev, >> return &xen_obj->base; >> } >>-int xen_drm_front_gem_prime_vmap(struct drm_gem_object *gem_obj, struct dma_buf_map *map) >>+int xen_drm_front_gem_prime_vmap(struct drm_gem_object *gem_obj, >>+ struct iosys_map *map) >> { >> struct xen_gem_object *xen_obj = to_xen_gem_obj(gem_obj); >> void *vaddr; >>@@ -293,13 +294,13 @@ int xen_drm_front_gem_prime_vmap(struct drm_gem_object *gem_obj, struct dma_buf_ >> VM_MAP, PAGE_KERNEL); >> if (!vaddr) >> return -ENOMEM; >>- dma_buf_map_set_vaddr(map, vaddr); >>+ iosys_map_set_vaddr(map, vaddr); >> return 0; >> } >> void xen_drm_front_gem_prime_vunmap(struct drm_gem_object *gem_obj, >>- struct dma_buf_map *map) >>+ struct iosys_map *map) >> { >> vunmap(map->vaddr); >> } >>diff --git a/drivers/gpu/drm/xen/xen_drm_front_gem.h b/drivers/gpu/drm/xen/xen_drm_front_gem.h >>index eaea470f7001..a718a1f382a3 100644 >>--- a/drivers/gpu/drm/xen/xen_drm_front_gem.h >>+++ b/drivers/gpu/drm/xen/xen_drm_front_gem.h >>@@ -12,7 +12,7 @@ >> #define __XEN_DRM_FRONT_GEM_H >> struct dma_buf_attachment; >>-struct dma_buf_map; >>+struct iosys_map; >> struct drm_device; >> struct drm_gem_object; >> struct sg_table; >>@@ -32,9 +32,9 @@ struct page **xen_drm_front_gem_get_pages(struct drm_gem_object *obj); >> void xen_drm_front_gem_free_object_unlocked(struct drm_gem_object *gem_obj); >> int xen_drm_front_gem_prime_vmap(struct drm_gem_object *gem_obj, >>- struct dma_buf_map *map); >>+ struct iosys_map *map); >> void xen_drm_front_gem_prime_vunmap(struct drm_gem_object *gem_obj, >>- struct dma_buf_map *map); >>+ struct iosys_map *map); >> #endif /* __XEN_DRM_FRONT_GEM_H */ >>diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c >>index 556e42ba66e5..f274f48aefeb 100644 >>--- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c >>+++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c >>@@ -99,7 +99,7 @@ static void *vb2_dc_vaddr(struct vb2_buffer *vb, void *buf_priv) >> return buf->vaddr; >> if (buf->db_attach) { >>- struct dma_buf_map map; >>+ struct iosys_map map; >> if (!dma_buf_vmap(buf->db_attach->dmabuf, &map)) >> buf->vaddr = map.vaddr; >>@@ -446,7 +446,7 @@ vb2_dc_dmabuf_ops_end_cpu_access(struct dma_buf *dbuf, >> return 0; >> } >>-static int vb2_dc_dmabuf_ops_vmap(struct dma_buf *dbuf, struct dma_buf_map *map) >>+static int vb2_dc_dmabuf_ops_vmap(struct dma_buf *dbuf, struct iosys_map *map) >> { >> struct vb2_dc_buf *buf; >> void *vaddr; >>@@ -456,7 +456,7 @@ static int vb2_dc_dmabuf_ops_vmap(struct dma_buf *dbuf, struct dma_buf_map *map) >> if (!vaddr) >> return -EINVAL; >>- dma_buf_map_set_vaddr(map, vaddr); >>+ iosys_map_set_vaddr(map, vaddr); >> return 0; >> } >>@@ -737,7 +737,7 @@ static void vb2_dc_unmap_dmabuf(void *mem_priv) >> { >> struct vb2_dc_buf *buf = mem_priv; >> struct sg_table *sgt = buf->dma_sgt; >>- struct dma_buf_map map = DMA_BUF_MAP_INIT_VADDR(buf->vaddr); >>+ struct iosys_map map = IOSYS_MAP_INIT_VADDR(buf->vaddr); >> if (WARN_ON(!buf->db_attach)) { >> pr_err("trying to unpin a not attached buffer\n"); >>diff --git a/drivers/media/common/videobuf2/videobuf2-dma-sg.c b/drivers/media/common/videobuf2/videobuf2-dma-sg.c >>index 90acafd9a290..f8a21c560ad2 100644 >>--- a/drivers/media/common/videobuf2/videobuf2-dma-sg.c >>+++ b/drivers/media/common/videobuf2/videobuf2-dma-sg.c >>@@ -303,7 +303,7 @@ static void vb2_dma_sg_put_userptr(void *buf_priv) >> static void *vb2_dma_sg_vaddr(struct vb2_buffer *vb, void *buf_priv) >> { >> struct vb2_dma_sg_buf *buf = buf_priv; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> int ret; >> BUG_ON(!buf); >>@@ -492,11 +492,12 @@ vb2_dma_sg_dmabuf_ops_end_cpu_access(struct dma_buf *dbuf, >> return 0; >> } >>-static int vb2_dma_sg_dmabuf_ops_vmap(struct dma_buf *dbuf, struct dma_buf_map *map) >>+static int vb2_dma_sg_dmabuf_ops_vmap(struct dma_buf *dbuf, >>+ struct iosys_map *map) >> { >> struct vb2_dma_sg_buf *buf = dbuf->priv; >>- dma_buf_map_set_vaddr(map, buf->vaddr); >>+ iosys_map_set_vaddr(map, buf->vaddr); >> return 0; >> } >>@@ -581,7 +582,7 @@ static void vb2_dma_sg_unmap_dmabuf(void *mem_priv) >> { >> struct vb2_dma_sg_buf *buf = mem_priv; >> struct sg_table *sgt = buf->dma_sgt; >>- struct dma_buf_map map = DMA_BUF_MAP_INIT_VADDR(buf->vaddr); >>+ struct iosys_map map = IOSYS_MAP_INIT_VADDR(buf->vaddr); >> if (WARN_ON(!buf->db_attach)) { >> pr_err("trying to unpin a not attached buffer\n"); >>diff --git a/drivers/media/common/videobuf2/videobuf2-vmalloc.c b/drivers/media/common/videobuf2/videobuf2-vmalloc.c >>index 0bbfea66554f..948152f1596b 100644 >>--- a/drivers/media/common/videobuf2/videobuf2-vmalloc.c >>+++ b/drivers/media/common/videobuf2/videobuf2-vmalloc.c >>@@ -312,11 +312,12 @@ static void vb2_vmalloc_dmabuf_ops_release(struct dma_buf *dbuf) >> vb2_vmalloc_put(dbuf->priv); >> } >>-static int vb2_vmalloc_dmabuf_ops_vmap(struct dma_buf *dbuf, struct dma_buf_map *map) >>+static int vb2_vmalloc_dmabuf_ops_vmap(struct dma_buf *dbuf, >>+ struct iosys_map *map) >> { >> struct vb2_vmalloc_buf *buf = dbuf->priv; >>- dma_buf_map_set_vaddr(map, buf->vaddr); >>+ iosys_map_set_vaddr(map, buf->vaddr); >> return 0; >> } >>@@ -372,7 +373,7 @@ static struct dma_buf *vb2_vmalloc_get_dmabuf(struct vb2_buffer *vb, >> static int vb2_vmalloc_map_dmabuf(void *mem_priv) >> { >> struct vb2_vmalloc_buf *buf = mem_priv; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> int ret; >> ret = dma_buf_vmap(buf->dbuf, &map); >>@@ -386,7 +387,7 @@ static int vb2_vmalloc_map_dmabuf(void *mem_priv) >> static void vb2_vmalloc_unmap_dmabuf(void *mem_priv) >> { >> struct vb2_vmalloc_buf *buf = mem_priv; >>- struct dma_buf_map map = DMA_BUF_MAP_INIT_VADDR(buf->vaddr); >>+ struct iosys_map map = IOSYS_MAP_INIT_VADDR(buf->vaddr); >> dma_buf_vunmap(buf->dbuf, &map); >> buf->vaddr = NULL; >>@@ -395,7 +396,7 @@ static void vb2_vmalloc_unmap_dmabuf(void *mem_priv) >> static void vb2_vmalloc_detach_dmabuf(void *mem_priv) >> { >> struct vb2_vmalloc_buf *buf = mem_priv; >>- struct dma_buf_map map = DMA_BUF_MAP_INIT_VADDR(buf->vaddr); >>+ struct iosys_map map = IOSYS_MAP_INIT_VADDR(buf->vaddr); >> if (buf->vaddr) >> dma_buf_vunmap(buf->dbuf, &map); >>diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c >>index 4ccbf43e6bfa..5c0503655212 100644 >>--- a/drivers/misc/fastrpc.c >>+++ b/drivers/misc/fastrpc.c >>@@ -587,11 +587,11 @@ static void fastrpc_dma_buf_detatch(struct dma_buf *dmabuf, >> kfree(a); >> } >>-static int fastrpc_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map) >>+static int fastrpc_vmap(struct dma_buf *dmabuf, struct iosys_map *map) >> { >> struct fastrpc_buf *buf = dmabuf->priv; >>- dma_buf_map_set_vaddr(map, buf->virt); >>+ iosys_map_set_vaddr(map, buf->virt); >> return 0; >> } >>diff --git a/include/drm/drm_cache.h b/include/drm/drm_cache.h >>index cc9de1632dd3..22deb216b59c 100644 >>--- a/include/drm/drm_cache.h >>+++ b/include/drm/drm_cache.h >>@@ -35,7 +35,7 @@ >> #include >>-struct dma_buf_map; >>+struct iosys_map; >> void drm_clflush_pages(struct page *pages[], unsigned long num_pages); >> void drm_clflush_sg(struct sg_table *st); >>@@ -74,7 +74,7 @@ static inline bool drm_arch_can_wc_memory(void) >> void drm_memcpy_init_early(void); >>-void drm_memcpy_from_wc(struct dma_buf_map *dst, >>- const struct dma_buf_map *src, >>+void drm_memcpy_from_wc(struct iosys_map *dst, >>+ const struct iosys_map *src, >> unsigned long len); >> #endif >>diff --git a/include/drm/drm_client.h b/include/drm/drm_client.h >>index f07f2fb02e75..4fc8018eddda 100644 >>--- a/include/drm/drm_client.h >>+++ b/include/drm/drm_client.h >>@@ -3,7 +3,7 @@ >> #ifndef _DRM_CLIENT_H_ >> #define _DRM_CLIENT_H_ >>-#include >>+#include >> #include >> #include >> #include >>@@ -144,7 +144,7 @@ struct drm_client_buffer { >> /** >> * @map: Virtual address for the buffer >> */ >>- struct dma_buf_map map; >>+ struct iosys_map map; >> /** >> * @fb: DRM framebuffer >>@@ -156,7 +156,8 @@ struct drm_client_buffer * >> drm_client_framebuffer_create(struct drm_client_dev *client, u32 width, u32 height, u32 format); >> void drm_client_framebuffer_delete(struct drm_client_buffer *buffer); >> int drm_client_framebuffer_flush(struct drm_client_buffer *buffer, struct drm_rect *rect); >>-int drm_client_buffer_vmap(struct drm_client_buffer *buffer, struct dma_buf_map *map); >>+int drm_client_buffer_vmap(struct drm_client_buffer *buffer, >>+ struct iosys_map *map); >> void drm_client_buffer_vunmap(struct drm_client_buffer *buffer); >> int drm_client_modeset_create(struct drm_client_dev *client); >>diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h >>index 35e7f44c2a75..e2941cee14b6 100644 >>--- a/include/drm/drm_gem.h >>+++ b/include/drm/drm_gem.h >>@@ -39,7 +39,7 @@ >> #include >>-struct dma_buf_map; >>+struct iosys_map; >> struct drm_gem_object; >> /** >>@@ -139,7 +139,7 @@ struct drm_gem_object_funcs { >> * >> * This callback is optional. >> */ >>- int (*vmap)(struct drm_gem_object *obj, struct dma_buf_map *map); >>+ int (*vmap)(struct drm_gem_object *obj, struct iosys_map *map); >> /** >> * @vunmap: >>@@ -149,7 +149,7 @@ struct drm_gem_object_funcs { >> * >> * This callback is optional. >> */ >>- void (*vunmap)(struct drm_gem_object *obj, struct dma_buf_map *map); >>+ void (*vunmap)(struct drm_gem_object *obj, struct iosys_map *map); >> /** >> * @mmap: >>diff --git a/include/drm/drm_gem_atomic_helper.h b/include/drm/drm_gem_atomic_helper.h >>index 0b1e2dd2ac3f..6e3319e9001a 100644 >>--- a/include/drm/drm_gem_atomic_helper.h >>+++ b/include/drm/drm_gem_atomic_helper.h >>@@ -3,7 +3,7 @@ >> #ifndef __DRM_GEM_ATOMIC_HELPER_H__ >> #define __DRM_GEM_ATOMIC_HELPER_H__ >>-#include >>+#include >> #include >> #include >>@@ -59,7 +59,7 @@ struct drm_shadow_plane_state { >> * The memory mappings stored in map should be established in the plane's >> * prepare_fb callback and removed in the cleanup_fb callback. >> */ >>- struct dma_buf_map map[DRM_FORMAT_MAX_PLANES]; >>+ struct iosys_map map[DRM_FORMAT_MAX_PLANES]; >> /** >> * @data: Address of each framebuffer BO's data >>@@ -67,7 +67,7 @@ struct drm_shadow_plane_state { >> * The address of the data stored in each mapping. This is different >> * for framebuffers with non-zero offset fields. >> */ >>- struct dma_buf_map data[DRM_FORMAT_MAX_PLANES]; >>+ struct iosys_map data[DRM_FORMAT_MAX_PLANES]; >> }; >> /** >>diff --git a/include/drm/drm_gem_cma_helper.h b/include/drm/drm_gem_cma_helper.h >>index adb507a9dbf0..fbda4ce5d5fb 100644 >>--- a/include/drm/drm_gem_cma_helper.h >>+++ b/include/drm/drm_gem_cma_helper.h >>@@ -38,7 +38,8 @@ void drm_gem_cma_free(struct drm_gem_cma_object *cma_obj); >> void drm_gem_cma_print_info(const struct drm_gem_cma_object *cma_obj, >> struct drm_printer *p, unsigned int indent); >> struct sg_table *drm_gem_cma_get_sg_table(struct drm_gem_cma_object *cma_obj); >>-int drm_gem_cma_vmap(struct drm_gem_cma_object *cma_obj, struct dma_buf_map *map); >>+int drm_gem_cma_vmap(struct drm_gem_cma_object *cma_obj, >>+ struct iosys_map *map); >> int drm_gem_cma_mmap(struct drm_gem_cma_object *cma_obj, struct vm_area_struct *vma); >> extern const struct vm_operations_struct drm_gem_cma_vm_ops; >>@@ -106,7 +107,8 @@ static inline struct sg_table *drm_gem_cma_object_get_sg_table(struct drm_gem_ob >> * Returns: >> * 0 on success or a negative error code on failure. >> */ >>-static inline int drm_gem_cma_object_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+static inline int drm_gem_cma_object_vmap(struct drm_gem_object *obj, >>+ struct iosys_map *map) >> { >> struct drm_gem_cma_object *cma_obj = to_drm_gem_cma_obj(obj); >>diff --git a/include/drm/drm_gem_framebuffer_helper.h b/include/drm/drm_gem_framebuffer_helper.h >>index 905727719ead..1091e4fa08cb 100644 >>--- a/include/drm/drm_gem_framebuffer_helper.h >>+++ b/include/drm/drm_gem_framebuffer_helper.h >>@@ -2,7 +2,7 @@ >> #define __DRM_GEM_FB_HELPER_H__ >> #include >>-#include >>+#include >> #include >>@@ -40,10 +40,10 @@ drm_gem_fb_create_with_dirty(struct drm_device *dev, struct drm_file *file, >> const struct drm_mode_fb_cmd2 *mode_cmd); >> int drm_gem_fb_vmap(struct drm_framebuffer *fb, >>- struct dma_buf_map map[static DRM_FORMAT_MAX_PLANES], >>- struct dma_buf_map data[DRM_FORMAT_MAX_PLANES]); >>+ struct iosys_map map[static DRM_FORMAT_MAX_PLANES], >>+ struct iosys_map data[DRM_FORMAT_MAX_PLANES]); >> void drm_gem_fb_vunmap(struct drm_framebuffer *fb, >>- struct dma_buf_map map[static DRM_FORMAT_MAX_PLANES]); >>+ struct iosys_map map[static DRM_FORMAT_MAX_PLANES]); >> int drm_gem_fb_begin_cpu_access(struct drm_framebuffer *fb, enum dma_data_direction dir); >> void drm_gem_fb_end_cpu_access(struct drm_framebuffer *fb, enum dma_data_direction dir); >>diff --git a/include/drm/drm_gem_shmem_helper.h b/include/drm/drm_gem_shmem_helper.h >>index 311d66c9cf4b..68347b63fc71 100644 >>--- a/include/drm/drm_gem_shmem_helper.h >>+++ b/include/drm/drm_gem_shmem_helper.h >>@@ -113,8 +113,10 @@ int drm_gem_shmem_get_pages(struct drm_gem_shmem_object *shmem); >> void drm_gem_shmem_put_pages(struct drm_gem_shmem_object *shmem); >> int drm_gem_shmem_pin(struct drm_gem_shmem_object *shmem); >> void drm_gem_shmem_unpin(struct drm_gem_shmem_object *shmem); >>-int drm_gem_shmem_vmap(struct drm_gem_shmem_object *shmem, struct dma_buf_map *map); >>-void drm_gem_shmem_vunmap(struct drm_gem_shmem_object *shmem, struct dma_buf_map *map); >>+int drm_gem_shmem_vmap(struct drm_gem_shmem_object *shmem, >>+ struct iosys_map *map); >>+void drm_gem_shmem_vunmap(struct drm_gem_shmem_object *shmem, >>+ struct iosys_map *map); >> int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct vm_area_struct *vma); >> int drm_gem_shmem_madvise(struct drm_gem_shmem_object *shmem, int madv); >>@@ -226,7 +228,8 @@ static inline struct sg_table *drm_gem_shmem_object_get_sg_table(struct drm_gem_ >> * Returns: >> * 0 on success or a negative error code on failure. >> */ >>-static inline int drm_gem_shmem_object_vmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+static inline int drm_gem_shmem_object_vmap(struct drm_gem_object *obj, >>+ struct iosys_map *map) >> { >> struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); >>@@ -241,7 +244,8 @@ static inline int drm_gem_shmem_object_vmap(struct drm_gem_object *obj, struct d >> * This function wraps drm_gem_shmem_vunmap(). Drivers that employ the shmem helpers should >> * use it as their &drm_gem_object_funcs.vunmap handler. >> */ >>-static inline void drm_gem_shmem_object_vunmap(struct drm_gem_object *obj, struct dma_buf_map *map) >>+static inline void drm_gem_shmem_object_vunmap(struct drm_gem_object *obj, >>+ struct iosys_map *map) >> { >> struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); >>diff --git a/include/drm/drm_gem_ttm_helper.h b/include/drm/drm_gem_ttm_helper.h >>index 78040f6cc6f3..4c003b4f173e 100644 >>--- a/include/drm/drm_gem_ttm_helper.h >>+++ b/include/drm/drm_gem_ttm_helper.h >>@@ -10,7 +10,7 @@ >> #include >> #include >>-struct dma_buf_map; >>+struct iosys_map; >> #define drm_gem_ttm_of_gem(gem_obj) \ >> container_of(gem_obj, struct ttm_buffer_object, base) >>@@ -18,9 +18,9 @@ struct dma_buf_map; >> void drm_gem_ttm_print_info(struct drm_printer *p, unsigned int indent, >> const struct drm_gem_object *gem); >> int drm_gem_ttm_vmap(struct drm_gem_object *gem, >>- struct dma_buf_map *map); >>+ struct iosys_map *map); >> void drm_gem_ttm_vunmap(struct drm_gem_object *gem, >>- struct dma_buf_map *map); >>+ struct iosys_map *map); >> int drm_gem_ttm_mmap(struct drm_gem_object *gem, >> struct vm_area_struct *vma); >>diff --git a/include/drm/drm_gem_vram_helper.h b/include/drm/drm_gem_vram_helper.h >>index b4ce27a72773..c083a1d71cf4 100644 >>--- a/include/drm/drm_gem_vram_helper.h >>+++ b/include/drm/drm_gem_vram_helper.h >>@@ -12,7 +12,7 @@ >> #include >> #include >>-#include >>+#include >> struct drm_mode_create_dumb; >> struct drm_plane; >>@@ -51,7 +51,7 @@ struct vm_area_struct; >> */ >> struct drm_gem_vram_object { >> struct ttm_buffer_object bo; >>- struct dma_buf_map map; >>+ struct iosys_map map; >> /** >> * @vmap_use_count: >>@@ -97,8 +97,9 @@ void drm_gem_vram_put(struct drm_gem_vram_object *gbo); >> s64 drm_gem_vram_offset(struct drm_gem_vram_object *gbo); >> int drm_gem_vram_pin(struct drm_gem_vram_object *gbo, unsigned long pl_flag); >> int drm_gem_vram_unpin(struct drm_gem_vram_object *gbo); >>-int drm_gem_vram_vmap(struct drm_gem_vram_object *gbo, struct dma_buf_map *map); >>-void drm_gem_vram_vunmap(struct drm_gem_vram_object *gbo, struct dma_buf_map *map); >>+int drm_gem_vram_vmap(struct drm_gem_vram_object *gbo, struct iosys_map *map); >>+void drm_gem_vram_vunmap(struct drm_gem_vram_object *gbo, >>+ struct iosys_map *map); >> int drm_gem_vram_fill_create_dumb(struct drm_file *file, >> struct drm_device *dev, >>diff --git a/include/drm/drm_prime.h b/include/drm/drm_prime.h >>index 54f2c58305d2..2a1d01e5b56b 100644 >>--- a/include/drm/drm_prime.h >>+++ b/include/drm/drm_prime.h >>@@ -54,7 +54,7 @@ struct device; >> struct dma_buf_export_info; >> struct dma_buf; >> struct dma_buf_attachment; >>-struct dma_buf_map; >>+struct iosys_map; >> enum dma_data_direction; >>@@ -83,8 +83,8 @@ struct sg_table *drm_gem_map_dma_buf(struct dma_buf_attachment *attach, >> void drm_gem_unmap_dma_buf(struct dma_buf_attachment *attach, >> struct sg_table *sgt, >> enum dma_data_direction dir); >>-int drm_gem_dmabuf_vmap(struct dma_buf *dma_buf, struct dma_buf_map *map); >>-void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, struct dma_buf_map *map); >>+int drm_gem_dmabuf_vmap(struct dma_buf *dma_buf, struct iosys_map *map); >>+void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, struct iosys_map *map); >> int drm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma); >> int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma); >>diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h >>index c17b2df9178b..155b19ee12fb 100644 >>--- a/include/drm/ttm/ttm_bo_api.h >>+++ b/include/drm/ttm/ttm_bo_api.h >>@@ -47,7 +47,7 @@ struct ttm_global; >> struct ttm_device; >>-struct dma_buf_map; >>+struct iosys_map; >> struct drm_mm_node; >>@@ -481,17 +481,17 @@ void ttm_bo_kunmap(struct ttm_bo_kmap_obj *map); >> * ttm_bo_vmap >> * >> * @bo: The buffer object. >>- * @map: pointer to a struct dma_buf_map representing the map. >>+ * @map: pointer to a struct iosys_map representing the map. >> * >> * Sets up a kernel virtual mapping, using ioremap or vmap to the >> * data in the buffer object. The parameter @map returns the virtual >>- * address as struct dma_buf_map. Unmap the buffer with ttm_bo_vunmap(). >>+ * address as struct iosys_map. Unmap the buffer with ttm_bo_vunmap(). >> * >> * Returns >> * -ENOMEM: Out of memory. >> * -EINVAL: Invalid range. >> */ >>-int ttm_bo_vmap(struct ttm_buffer_object *bo, struct dma_buf_map *map); >>+int ttm_bo_vmap(struct ttm_buffer_object *bo, struct iosys_map *map); >> /** >> * ttm_bo_vunmap >>@@ -501,7 +501,7 @@ int ttm_bo_vmap(struct ttm_buffer_object *bo, struct dma_buf_map *map); >> * >> * Unmaps a kernel map set up by ttm_bo_vmap(). >> */ >>-void ttm_bo_vunmap(struct ttm_buffer_object *bo, struct dma_buf_map *map); >>+void ttm_bo_vunmap(struct ttm_buffer_object *bo, struct iosys_map *map); >> /** >> * ttm_bo_mmap_obj - mmap memory backed by a ttm buffer object. >>diff --git a/include/drm/ttm/ttm_kmap_iter.h b/include/drm/ttm/ttm_kmap_iter.h >>index 8bb00fd39d6c..cc5c09a211b4 100644 >>--- a/include/drm/ttm/ttm_kmap_iter.h >>+++ b/include/drm/ttm/ttm_kmap_iter.h >>@@ -8,7 +8,7 @@ >> #include >> struct ttm_kmap_iter; >>-struct dma_buf_map; >>+struct iosys_map; >> /** >> * struct ttm_kmap_iter_ops - Ops structure for a struct >>@@ -24,22 +24,22 @@ struct ttm_kmap_iter_ops { >> * kmap_local semantics. >> * @res_iter: Pointer to the struct ttm_kmap_iter representing >> * the resource. >>- * @dmap: The struct dma_buf_map holding the virtual address after >>+ * @dmap: The struct iosys_map holding the virtual address after >> * the operation. >> * @i: The location within the resource to map. PAGE_SIZE granularity. >> */ >> void (*map_local)(struct ttm_kmap_iter *res_iter, >>- struct dma_buf_map *dmap, pgoff_t i); >>+ struct iosys_map *dmap, pgoff_t i); >> /** >> * unmap_local() - Unmap a PAGE_SIZE part of the resource previously >> * mapped using kmap_local. >> * @res_iter: Pointer to the struct ttm_kmap_iter representing >> * the resource. >>- * @dmap: The struct dma_buf_map holding the virtual address after >>+ * @dmap: The struct iosys_map holding the virtual address after >> * the operation. >> */ >> void (*unmap_local)(struct ttm_kmap_iter *res_iter, >>- struct dma_buf_map *dmap); >>+ struct iosys_map *dmap); >> bool maps_tt; >> }; >>diff --git a/include/drm/ttm/ttm_resource.h b/include/drm/ttm/ttm_resource.h >>index 69eea9d6399b..4fd727b52da1 100644 >>--- a/include/drm/ttm/ttm_resource.h >>+++ b/include/drm/ttm/ttm_resource.h >>@@ -27,7 +27,7 @@ >> #include >> #include >>-#include >>+#include >> #include >> #include >> #include >>@@ -41,7 +41,7 @@ struct ttm_resource; >> struct ttm_place; >> struct ttm_buffer_object; >> struct ttm_placement; >>-struct dma_buf_map; >>+struct iosys_map; >> struct io_mapping; >> struct sg_table; >> struct scatterlist; >>@@ -210,7 +210,7 @@ struct ttm_kmap_iter_iomap { >> */ >> struct ttm_kmap_iter_linear_io { >> struct ttm_kmap_iter base; >>- struct dma_buf_map dmap; >>+ struct iosys_map dmap; >> bool needs_unmap; >> }; >>diff --git a/include/linux/dma-buf-map.h b/include/linux/dma-buf-map.h >>deleted file mode 100644 >>index 19fa0b5ae5ec..000000000000 >>--- a/include/linux/dma-buf-map.h >>+++ /dev/null >>@@ -1,266 +0,0 @@ >>-/* SPDX-License-Identifier: GPL-2.0-only */ >>-/* >>- * Pointer to dma-buf-mapped memory, plus helpers. >>- */ >>- >>-#ifndef __DMA_BUF_MAP_H__ >>-#define __DMA_BUF_MAP_H__ >>- >>-#include >>-#include >>- >>-/** >>- * DOC: overview >>- * >>- * Calling dma-buf's vmap operation returns a pointer to the buffer's memory. >>- * Depending on the location of the buffer, users may have to access it with >>- * I/O operations or memory load/store operations. For example, copying to >>- * system memory could be done with memcpy(), copying to I/O memory would be >>- * done with memcpy_toio(). >>- * >>- * .. code-block:: c >>- * >>- * void *vaddr = ...; // pointer to system memory >>- * memcpy(vaddr, src, len); >>- * >>- * void *vaddr_iomem = ...; // pointer to I/O memory >>- * memcpy_toio(vaddr, _iomem, src, len); >>- * >>- * When using dma-buf's vmap operation, the returned pointer is encoded as >>- * :c:type:`struct dma_buf_map `. >>- * :c:type:`struct dma_buf_map ` stores the buffer's address in >>- * system or I/O memory and a flag that signals the required method of >>- * accessing the buffer. Use the returned instance and the helper functions >>- * to access the buffer's memory in the correct way. >>- * >>- * The type :c:type:`struct dma_buf_map ` and its helpers are >>- * actually independent from the dma-buf infrastructure. When sharing buffers >>- * among devices, drivers have to know the location of the memory to access >>- * the buffers in a safe way. :c:type:`struct dma_buf_map ` >>- * solves this problem for dma-buf and its users. If other drivers or >>- * sub-systems require similar functionality, the type could be generalized >>- * and moved to a more prominent header file. >>- * >>- * Open-coding access to :c:type:`struct dma_buf_map ` is >>- * considered bad style. Rather then accessing its fields directly, use one >>- * of the provided helper functions, or implement your own. For example, >>- * instances of :c:type:`struct dma_buf_map ` can be initialized >>- * statically with DMA_BUF_MAP_INIT_VADDR(), or at runtime with >>- * dma_buf_map_set_vaddr(). These helpers will set an address in system memory. >>- * >>- * .. code-block:: c >>- * >>- * struct dma_buf_map map = DMA_BUF_MAP_INIT_VADDR(0xdeadbeaf); >>- * >>- * dma_buf_map_set_vaddr(&map, 0xdeadbeaf); >>- * >>- * To set an address in I/O memory, use dma_buf_map_set_vaddr_iomem(). >>- * >>- * .. code-block:: c >>- * >>- * dma_buf_map_set_vaddr_iomem(&map, 0xdeadbeaf); >>- * >>- * Instances of struct dma_buf_map do not have to be cleaned up, but >>- * can be cleared to NULL with dma_buf_map_clear(). Cleared mappings >>- * always refer to system memory. >>- * >>- * .. code-block:: c >>- * >>- * dma_buf_map_clear(&map); >>- * >>- * Test if a mapping is valid with either dma_buf_map_is_set() or >>- * dma_buf_map_is_null(). >>- * >>- * .. code-block:: c >>- * >>- * if (dma_buf_map_is_set(&map) != dma_buf_map_is_null(&map)) >>- * // always true >>- * >>- * Instances of :c:type:`struct dma_buf_map ` can be compared >>- * for equality with dma_buf_map_is_equal(). Mappings the point to different >>- * memory spaces, system or I/O, are never equal. That's even true if both >>- * spaces are located in the same address space, both mappings contain the >>- * same address value, or both mappings refer to NULL. >>- * >>- * .. code-block:: c >>- * >>- * struct dma_buf_map sys_map; // refers to system memory >>- * struct dma_buf_map io_map; // refers to I/O memory >>- * >>- * if (dma_buf_map_is_equal(&sys_map, &io_map)) >>- * // always false >>- * >>- * A set up instance of struct dma_buf_map can be used to access or manipulate >>- * the buffer memory. Depending on the location of the memory, the provided >>- * helpers will pick the correct operations. Data can be copied into the memory >>- * with dma_buf_map_memcpy_to(). The address can be manipulated with >>- * dma_buf_map_incr(). >>- * >>- * .. code-block:: c >>- * >>- * const void *src = ...; // source buffer >>- * size_t len = ...; // length of src >>- * >>- * dma_buf_map_memcpy_to(&map, src, len); >>- * dma_buf_map_incr(&map, len); // go to first byte after the memcpy >>- */ >>- >>-/** >>- * struct dma_buf_map - Pointer to vmap'ed dma-buf memory. >>- * @vaddr_iomem: The buffer's address if in I/O memory >>- * @vaddr: The buffer's address if in system memory >>- * @is_iomem: True if the dma-buf memory is located in I/O >>- * memory, or false otherwise. >>- */ >>-struct dma_buf_map { >>- union { >>- void __iomem *vaddr_iomem; >>- void *vaddr; >>- }; >>- bool is_iomem; >>-}; >>- >>-/** >>- * DMA_BUF_MAP_INIT_VADDR - Initializes struct dma_buf_map to an address in system memory >>- * @vaddr_: A system-memory address >>- */ >>-#define DMA_BUF_MAP_INIT_VADDR(vaddr_) \ >>- { \ >>- .vaddr = (vaddr_), \ >>- .is_iomem = false, \ >>- } >>- >>-/** >>- * dma_buf_map_set_vaddr - Sets a dma-buf mapping structure to an address in system memory >>- * @map: The dma-buf mapping structure >>- * @vaddr: A system-memory address >>- * >>- * Sets the address and clears the I/O-memory flag. >>- */ >>-static inline void dma_buf_map_set_vaddr(struct dma_buf_map *map, void *vaddr) >>-{ >>- map->vaddr = vaddr; >>- map->is_iomem = false; >>-} >>- >>-/** >>- * dma_buf_map_set_vaddr_iomem - Sets a dma-buf mapping structure to an address in I/O memory >>- * @map: The dma-buf mapping structure >>- * @vaddr_iomem: An I/O-memory address >>- * >>- * Sets the address and the I/O-memory flag. >>- */ >>-static inline void dma_buf_map_set_vaddr_iomem(struct dma_buf_map *map, >>- void __iomem *vaddr_iomem) >>-{ >>- map->vaddr_iomem = vaddr_iomem; >>- map->is_iomem = true; >>-} >>- >>-/** >>- * dma_buf_map_is_equal - Compares two dma-buf mapping structures for equality >>- * @lhs: The dma-buf mapping structure >>- * @rhs: A dma-buf mapping structure to compare with >>- * >>- * Two dma-buf mapping structures are equal if they both refer to the same type of memory >>- * and to the same address within that memory. >>- * >>- * Returns: >>- * True is both structures are equal, or false otherwise. >>- */ >>-static inline bool dma_buf_map_is_equal(const struct dma_buf_map *lhs, >>- const struct dma_buf_map *rhs) >>-{ >>- if (lhs->is_iomem != rhs->is_iomem) >>- return false; >>- else if (lhs->is_iomem) >>- return lhs->vaddr_iomem == rhs->vaddr_iomem; >>- else >>- return lhs->vaddr == rhs->vaddr; >>-} >>- >>-/** >>- * dma_buf_map_is_null - Tests for a dma-buf mapping to be NULL >>- * @map: The dma-buf mapping structure >>- * >>- * Depending on the state of struct dma_buf_map.is_iomem, tests if the >>- * mapping is NULL. >>- * >>- * Returns: >>- * True if the mapping is NULL, or false otherwise. >>- */ >>-static inline bool dma_buf_map_is_null(const struct dma_buf_map *map) >>-{ >>- if (map->is_iomem) >>- return !map->vaddr_iomem; >>- return !map->vaddr; >>-} >>- >>-/** >>- * dma_buf_map_is_set - Tests is the dma-buf mapping has been set >>- * @map: The dma-buf mapping structure >>- * >>- * Depending on the state of struct dma_buf_map.is_iomem, tests if the >>- * mapping has been set. >>- * >>- * Returns: >>- * True if the mapping is been set, or false otherwise. >>- */ >>-static inline bool dma_buf_map_is_set(const struct dma_buf_map *map) >>-{ >>- return !dma_buf_map_is_null(map); >>-} >>- >>-/** >>- * dma_buf_map_clear - Clears a dma-buf mapping structure >>- * @map: The dma-buf mapping structure >>- * >>- * Clears all fields to zero; including struct dma_buf_map.is_iomem. So >>- * mapping structures that were set to point to I/O memory are reset for >>- * system memory. Pointers are cleared to NULL. This is the default. >>- */ >>-static inline void dma_buf_map_clear(struct dma_buf_map *map) >>-{ >>- if (map->is_iomem) { >>- map->vaddr_iomem = NULL; >>- map->is_iomem = false; >>- } else { >>- map->vaddr = NULL; >>- } >>-} >>- >>-/** >>- * dma_buf_map_memcpy_to - Memcpy into dma-buf mapping >>- * @dst: The dma-buf mapping structure >>- * @src: The source buffer >>- * @len: The number of byte in src >>- * >>- * Copies data into a dma-buf mapping. The source buffer is in system >>- * memory. Depending on the buffer's location, the helper picks the correct >>- * method of accessing the memory. >>- */ >>-static inline void dma_buf_map_memcpy_to(struct dma_buf_map *dst, const void *src, size_t len) >>-{ >>- if (dst->is_iomem) >>- memcpy_toio(dst->vaddr_iomem, src, len); >>- else >>- memcpy(dst->vaddr, src, len); >>-} >>- >>-/** >>- * dma_buf_map_incr - Increments the address stored in a dma-buf mapping >>- * @map: The dma-buf mapping structure >>- * @incr: The number of bytes to increment >>- * >>- * Increments the address stored in a dma-buf mapping. Depending on the >>- * buffer's location, the correct value will be updated. >>- */ >>-static inline void dma_buf_map_incr(struct dma_buf_map *map, size_t incr) >>-{ >>- if (map->is_iomem) >>- map->vaddr_iomem += incr; >>- else >>- map->vaddr += incr; >>-} >>- >>-#endif /* __DMA_BUF_MAP_H__ */ >>diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h >>index 7ab50076e7a6..2097760e8e95 100644 >>--- a/include/linux/dma-buf.h >>+++ b/include/linux/dma-buf.h >>@@ -13,7 +13,7 @@ >> #ifndef __DMA_BUF_H__ >> #define __DMA_BUF_H__ >>-#include >>+#include >> #include >> #include >> #include >>@@ -283,8 +283,8 @@ struct dma_buf_ops { >> */ >> int (*mmap)(struct dma_buf *, struct vm_area_struct *vma); >>- int (*vmap)(struct dma_buf *dmabuf, struct dma_buf_map *map); >>- void (*vunmap)(struct dma_buf *dmabuf, struct dma_buf_map *map); >>+ int (*vmap)(struct dma_buf *dmabuf, struct iosys_map *map); >>+ void (*vunmap)(struct dma_buf *dmabuf, struct iosys_map *map); >> }; >> /** >>@@ -347,7 +347,7 @@ struct dma_buf { >> * @vmap_ptr: >> * The current vmap ptr if @vmapping_counter > 0. Protected by @lock. >> */ >>- struct dma_buf_map vmap_ptr; >>+ struct iosys_map vmap_ptr; >> /** >> * @exp_name: >>@@ -628,6 +628,6 @@ int dma_buf_end_cpu_access(struct dma_buf *dma_buf, >> int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *, >> unsigned long); >>-int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map); >>-void dma_buf_vunmap(struct dma_buf *dmabuf, struct dma_buf_map *map); >>+int dma_buf_vmap(struct dma_buf *dmabuf, struct iosys_map *map); >>+void dma_buf_vunmap(struct dma_buf *dmabuf, struct iosys_map *map); >> #endif /* __DMA_BUF_H__ */ >>diff --git a/include/linux/iosys-map.h b/include/linux/iosys-map.h >>new file mode 100644 >>index 000000000000..46b13eab4454 >>--- /dev/null >>+++ b/include/linux/iosys-map.h >>@@ -0,0 +1,257 @@ >>+/* SPDX-License-Identifier: GPL-2.0-only */ >>+/* >>+ * Pointer abstraction for IO/system memory >>+ */ >>+ >>+#ifndef __IOSYS_MAP_H__ >>+#define __IOSYS_MAP_H__ >>+ >>+#include >>+#include >>+ >>+/** >>+ * DOC: overview >>+ * >>+ * When accessing a memory region, depending on the its location, users may have >>+ * to access it with I/O operations or memory load/store operations. For >>+ * example, copying to system memory could be done with memcpy(), copying to I/O >>+ * memory would be done with memcpy_toio(). >>+ * >>+ * .. code-block:: c >>+ * >>+ * void *vaddr = ...; // pointer to system memory >>+ * memcpy(vaddr, src, len); >>+ * >>+ * void *vaddr_iomem = ...; // pointer to I/O memory >>+ * memcpy_toio(vaddr, _iomem, src, len); >>+ * >>+ * The user of such pointer may not have information about the mapping of that >>+ * region or may want to have a single code path to handle operations on that >>+ * buffer, regardless if it's located in system or IO memory. The type >>+ * :c:type:`struct iosys_map ` and its helpers abstract that so the >>+ * buffer can be passed around to other drivers or have separate duties inside >>+ * the same driver for allocation, read and write operations. >>+ * >>+ * Open-coding access to :c:type:`struct iosys_map ` is considered >>+ * bad style. Rather then accessing its fields directly, use one of the provided >>+ * helper functions, or implement your own. For example, instances of >>+ * :c:type:`struct iosys_map ` can be initialized statically with >>+ * IOSYS_MAP_INIT_VADDR(), or at runtime with iosys_map_set_vaddr(). These >>+ * helpers will set an address in system memory. >>+ * >>+ * .. code-block:: c >>+ * >>+ * struct iosys_map map = IOSYS_MAP_INIT_VADDR(0xdeadbeaf); >>+ * >>+ * iosys_map_set_vaddr(&map, 0xdeadbeaf); >>+ * >>+ * To set an address in I/O memory, use iosys_map_set_vaddr_iomem(). >>+ * >>+ * .. code-block:: c >>+ * >>+ * iosys_map_set_vaddr_iomem(&map, 0xdeadbeaf); >>+ * >>+ * Instances of struct iosys_map do not have to be cleaned up, but >>+ * can be cleared to NULL with iosys_map_clear(). Cleared mappings >>+ * always refer to system memory. >>+ * >>+ * .. code-block:: c >>+ * >>+ * iosys_map_clear(&map); >>+ * >>+ * Test if a mapping is valid with either iosys_map_is_set() or >>+ * iosys_map_is_null(). >>+ * >>+ * .. code-block:: c >>+ * >>+ * if (iosys_map_is_set(&map) != iosys_map_is_null(&map)) >>+ * // always true >>+ * >>+ * Instances of :c:type:`struct iosys_map ` can be compared for >>+ * equality with iosys_map_is_equal(). Mappings that point to different memory >>+ * spaces, system or I/O, are never equal. That's even true if both spaces are >>+ * located in the same address space, both mappings contain the same address >>+ * value, or both mappings refer to NULL. >>+ * >>+ * .. code-block:: c >>+ * >>+ * struct iosys_map sys_map; // refers to system memory >>+ * struct iosys_map io_map; // refers to I/O memory >>+ * >>+ * if (iosys_map_is_equal(&sys_map, &io_map)) >>+ * // always false >>+ * >>+ * A set up instance of struct iosys_map can be used to access or manipulate the >>+ * buffer memory. Depending on the location of the memory, the provided helpers >>+ * will pick the correct operations. Data can be copied into the memory with >>+ * iosys_map_memcpy_to(). The address can be manipulated with iosys_map_incr(). >>+ * >>+ * .. code-block:: c >>+ * >>+ * const void *src = ...; // source buffer >>+ * size_t len = ...; // length of src >>+ * >>+ * iosys_map_memcpy_to(&map, src, len); >>+ * iosys_map_incr(&map, len); // go to first byte after the memcpy >>+ */ >>+ >>+/** >>+ * struct iosys_map - Pointer to IO/system memory >>+ * @vaddr_iomem: The buffer's address if in I/O memory >>+ * @vaddr: The buffer's address if in system memory >>+ * @is_iomem: True if the buffer is located in I/O memory, or false >>+ * otherwise. >>+ */ >>+struct iosys_map { >>+ union { >>+ void __iomem *vaddr_iomem; >>+ void *vaddr; >>+ }; >>+ bool is_iomem; >>+}; >>+ >>+/** >>+ * IOSYS_MAP_INIT_VADDR - Initializes struct iosys_map to an address in system memory >>+ * @vaddr_: A system-memory address >>+ */ >>+#define IOSYS_MAP_INIT_VADDR(vaddr_) \ >>+ { \ >>+ .vaddr = (vaddr_), \ >>+ .is_iomem = false, \ >>+ } >>+ >>+/** >>+ * iosys_map_set_vaddr - Sets a iosys mapping structure to an address in system memory >>+ * @map: The iosys_map structure >>+ * @vaddr: A system-memory address >>+ * >>+ * Sets the address and clears the I/O-memory flag. >>+ */ >>+static inline void iosys_map_set_vaddr(struct iosys_map *map, void *vaddr) >>+{ >>+ map->vaddr = vaddr; >>+ map->is_iomem = false; >>+} >>+ >>+/** >>+ * iosys_map_set_vaddr_iomem - Sets a iosys mapping structure to an address in I/O memory >>+ * @map: The iosys_map structure >>+ * @vaddr_iomem: An I/O-memory address >>+ * >>+ * Sets the address and the I/O-memory flag. >>+ */ >>+static inline void iosys_map_set_vaddr_iomem(struct iosys_map *map, >>+ void __iomem *vaddr_iomem) >>+{ >>+ map->vaddr_iomem = vaddr_iomem; >>+ map->is_iomem = true; >>+} >>+ >>+/** >>+ * iosys_map_is_equal - Compares two iosys mapping structures for equality >>+ * @lhs: The iosys_map structure >>+ * @rhs: A iosys_map structure to compare with >>+ * >>+ * Two iosys mapping structures are equal if they both refer to the same type of memory >>+ * and to the same address within that memory. >>+ * >>+ * Returns: >>+ * True is both structures are equal, or false otherwise. >>+ */ >>+static inline bool iosys_map_is_equal(const struct iosys_map *lhs, >>+ const struct iosys_map *rhs) >>+{ >>+ if (lhs->is_iomem != rhs->is_iomem) >>+ return false; >>+ else if (lhs->is_iomem) >>+ return lhs->vaddr_iomem == rhs->vaddr_iomem; >>+ else >>+ return lhs->vaddr == rhs->vaddr; >>+} >>+ >>+/** >>+ * iosys_map_is_null - Tests for a iosys mapping to be NULL >>+ * @map: The iosys_map structure >>+ * >>+ * Depending on the state of struct iosys_map.is_iomem, tests if the >>+ * mapping is NULL. >>+ * >>+ * Returns: >>+ * True if the mapping is NULL, or false otherwise. >>+ */ >>+static inline bool iosys_map_is_null(const struct iosys_map *map) >>+{ >>+ if (map->is_iomem) >>+ return !map->vaddr_iomem; >>+ return !map->vaddr; >>+} >>+ >>+/** >>+ * iosys_map_is_set - Tests if the iosys mapping has been set >>+ * @map: The iosys_map structure >>+ * >>+ * Depending on the state of struct iosys_map.is_iomem, tests if the >>+ * mapping has been set. >>+ * >>+ * Returns: >>+ * True if the mapping is been set, or false otherwise. >>+ */ >>+static inline bool iosys_map_is_set(const struct iosys_map *map) >>+{ >>+ return !iosys_map_is_null(map); >>+} >>+ >>+/** >>+ * iosys_map_clear - Clears a iosys mapping structure >>+ * @map: The iosys_map structure >>+ * >>+ * Clears all fields to zero, including struct iosys_map.is_iomem, so >>+ * mapping structures that were set to point to I/O memory are reset for >>+ * system memory. Pointers are cleared to NULL. This is the default. >>+ */ >>+static inline void iosys_map_clear(struct iosys_map *map) >>+{ >>+ if (map->is_iomem) { >>+ map->vaddr_iomem = NULL; >>+ map->is_iomem = false; >>+ } else { >>+ map->vaddr = NULL; >>+ } >>+} >>+ >>+/** >>+ * iosys_map_memcpy_to - Memcpy into iosys mapping >>+ * @dst: The iosys_map structure >>+ * @src: The source buffer >>+ * @len: The number of byte in src >>+ * >>+ * Copies data into a iosys mapping. The source buffer is in system >>+ * memory. Depending on the buffer's location, the helper picks the correct >>+ * method of accessing the memory. >>+ */ >>+static inline void iosys_map_memcpy_to(struct iosys_map *dst, const void *src, >>+ size_t len) >>+{ >>+ if (dst->is_iomem) >>+ memcpy_toio(dst->vaddr_iomem, src, len); >>+ else >>+ memcpy(dst->vaddr, src, len); >>+} >>+ >>+/** >>+ * iosys_map_incr - Increments the address stored in a iosys mapping >>+ * @map: The iosys_map structure >>+ * @incr: The number of bytes to increment >>+ * >>+ * Increments the address stored in a iosys mapping. Depending on the >>+ * buffer's location, the correct value will be updated. >>+ */ >>+static inline void iosys_map_incr(struct iosys_map *map, size_t incr) >>+{ >>+ if (map->is_iomem) >>+ map->vaddr_iomem += incr; >>+ else >>+ map->vaddr += incr; >>+} >>+ >>+#endif /* __IOSYS_MAP_H__ */ > >-- >Thomas Zimmermann >Graphics Driver Developer >SUSE Software Solutions Germany GmbH >Maxfeldstr. 5, 90409 N?rnberg, Germany >(HRB 36809, AG N?rnberg) >Gesch?ftsf?hrer: Ivo Totev