[PATCH] gpu: host1x: Increase maximum DMA segment size

Dmitry Osipenko digetx at gmail.com
Sun Jun 9 12:48:57 UTC 2019


05.06.2019 11:46, Thierry Reding пишет:
> From: Thierry Reding <treding at nvidia.com>
> 
> Recent versions of the DMA API debug code have started to warn about
> violations of the maximum DMA segment size. This is because the segment
> size defaults to 64 KiB, which can easily be exceeded in large buffer
> allocations such as used in DRM/KMS for framebuffers.
> 
> Technically the Tegra SMMU and ARM SMMU don't have a maximum segment
> size (they map individual pages irrespective of whether they are
> contiguous or not), so the choice of 4 MiB is a bit arbitrary here. The
> maximum segment size is a 32-bit unsigned integer, though, so we can't
> set it to the correct maximum size, which would be the size of the
> aperture.
> 
> Signed-off-by: Thierry Reding <treding at nvidia.com>
> ---
>  drivers/gpu/host1x/bus.c | 3 +++
>  include/linux/host1x.h   | 2 ++
>  2 files changed, 5 insertions(+)
> 
> diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c
> index 9797ccb0a073..6387302c1245 100644
> --- a/drivers/gpu/host1x/bus.c
> +++ b/drivers/gpu/host1x/bus.c
> @@ -414,6 +414,9 @@ static int host1x_device_add(struct host1x *host1x,
>  
>  	of_dma_configure(&device->dev, host1x->dev->of_node, true);
>  
> +	device->dev.dma_parms = &device->dma_parms;
> +	dma_set_max_seg_size(&device->dev, SZ_4M);
> +
>  	err = host1x_device_parse_dt(device, driver);
>  	if (err < 0) {
>  		kfree(device);
> diff --git a/include/linux/host1x.h b/include/linux/host1x.h
> index cfff30b9a62e..e6eea45e1154 100644
> --- a/include/linux/host1x.h
> +++ b/include/linux/host1x.h
> @@ -297,6 +297,8 @@ struct host1x_device {
>  	struct list_head clients;
>  
>  	bool registered;
> +
> +	struct device_dma_parameters dma_parms;
>  };
>  
>  static inline struct host1x_device *to_host1x_device(struct device *dev)
> 

Just a very minor nit:

It may be worthwhile to include "dma-mapping.h" directly for consistency
here as well since nothing includes it directly. I noticed a build
breakage of the grate-driver's kernel on a rebase with "git --exec
'make..'" cause we have some of "iommu/iova" headers that are moved
around in the intermediate patches.


More information about the dri-devel mailing list