Skip to content

Commit

Permalink
gpu: host1x: Increase maximum DMA segment size
Browse files Browse the repository at this point in the history
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@nvidia.com>
  • Loading branch information
Thierry Reding committed Jun 5, 2019
1 parent 4bb923e commit 1e39047
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 0 deletions.
3 changes: 3 additions & 0 deletions drivers/gpu/host1x/bus.c
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,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);
Expand Down
2 changes: 2 additions & 0 deletions include/linux/host1x.h
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,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)
Expand Down

0 comments on commit 1e39047

Please sign in to comment.