[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