mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 17:25:35 +03:00
In order to store device DMA parameters, the DMA framework depends on the device's dma_parms field to point at a valid memory location. Add backing storage for this in struct host1x_memory_context and point to it. Reported-by: Jonathan Hunter <jonathanh@nvidia.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Tested-by: Jon Hunter <jonathanh@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240916133320.368620-1-thierry.reding@gmail.com (cherry picked from commit b4ad4ef374d66cc8df3188bb1ddb65bce5fc9e50) Bug 4876974 Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Change-Id: I0a7f9c9f49a5e4580193d5814ff4a6a15f8014c8 Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3268196 (cherry picked from commit 027ee6a9a0b3848fbaae21c788064f59072c0978) Signed-off-by: Paritosh Dixit <paritoshd@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3326864 GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
55 lines
1.1 KiB
C
55 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Host1x context devices
|
|
*
|
|
* SPDX-FileCopyrightText: Copyright (c) 2020-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __HOST1X_CONTEXT_H
|
|
#define __HOST1X_CONTEXT_H
|
|
|
|
#include <linux/mutex.h>
|
|
#include <linux/refcount.h>
|
|
|
|
struct host1x;
|
|
|
|
extern struct bus_type host1x_context_device_bus_type;
|
|
|
|
struct host1x_memory_context_list {
|
|
struct mutex lock;
|
|
struct host1x_hw_memory_context *devs;
|
|
unsigned int len;
|
|
struct list_head waiters;
|
|
};
|
|
|
|
struct host1x_hw_memory_context {
|
|
struct host1x *host;
|
|
|
|
refcount_t ref;
|
|
struct pid *owner;
|
|
|
|
struct device_dma_parameters dma_parms;
|
|
struct device dev;
|
|
u64 dma_mask;
|
|
u32 stream_id;
|
|
|
|
struct list_head owners;
|
|
unsigned int active;
|
|
};
|
|
|
|
#ifdef CONFIG_IOMMU_API
|
|
int host1x_memory_context_list_init(struct host1x *host1x);
|
|
void host1x_memory_context_list_free(struct host1x_memory_context_list *cdl);
|
|
#else
|
|
static inline int host1x_memory_context_list_init(struct host1x *host1x)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void host1x_memory_context_list_free(struct host1x_memory_context_list *cdl)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
#endif
|