diff mbox series

gpu: host1x: Set up device DMA parameters

Message ID 20240916133320.368620-1-thierry.reding@gmail.com
State New
Headers show
Series gpu: host1x: Set up device DMA parameters | expand

Commit Message

Thierry Reding Sept. 16, 2024, 1:33 p.m. UTC
From: Thierry Reding <treding@nvidia.com>

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>
Signed-off-by: Thierry Reding <treding@nvidia.com>
---
 drivers/gpu/host1x/context.c | 1 +
 include/linux/host1x.h       | 1 +
 2 files changed, 2 insertions(+)

Comments

Christoph Hellwig Sept. 16, 2024, 2:58 p.m. UTC | #1
On Mon, Sep 16, 2024 at 03:33:20PM +0200, Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
> 
> 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>
> Signed-off-by: Thierry Reding <treding@nvidia.com>

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>

I guess this another thing caught by the WARN_ON in the dma_set*
functions?
Jon Hunter Sept. 19, 2024, 6:41 a.m. UTC | #2
On 16/09/2024 15:58, Christoph Hellwig wrote:
> On Mon, Sep 16, 2024 at 03:33:20PM +0200, Thierry Reding wrote:
>> From: Thierry Reding <treding@nvidia.com>
>>
>> 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>
>> Signed-off-by: Thierry Reding <treding@nvidia.com>
> 
> Looks good:
> 
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> 
> I guess this another thing caught by the WARN_ON in the dma_set*
> functions?

Yes indeed! This works for me.

Tested-by: Jon Hunter <jonathanh@nvidia.com>

Thanks
Jon
diff mbox series

Patch

diff --git a/drivers/gpu/host1x/context.c b/drivers/gpu/host1x/context.c
index 955c971c528d..a6f6779662a3 100644
--- a/drivers/gpu/host1x/context.c
+++ b/drivers/gpu/host1x/context.c
@@ -58,6 +58,7 @@  int host1x_memory_context_list_init(struct host1x *host1x)
 		ctx->dev.parent = host1x->dev;
 		ctx->dev.release = host1x_memory_context_release;
 
+		ctx->dev.dma_parms = &ctx->dma_parms;
 		dma_set_max_seg_size(&ctx->dev, UINT_MAX);
 
 		err = device_add(&ctx->dev);
diff --git a/include/linux/host1x.h b/include/linux/host1x.h
index 9c8119ed13a4..c4dde3aafcac 100644
--- a/include/linux/host1x.h
+++ b/include/linux/host1x.h
@@ -466,6 +466,7 @@  struct host1x_memory_context {
 	refcount_t ref;
 	struct pid *owner;
 
+	struct device_dma_parameters dma_parms;
 	struct device dev;
 	u64 dma_mask;
 	u32 stream_id;