Commit 5756c29b authored by Dave Airlie's avatar Dave Airlie

Merge tag 'drm/tegra/for-5.19-rc1' of https://gitlab.freedesktop.org/drm/tegra into drm-next

drm/tegra: Changes for v5.19-rc1

Only a few fixes this time, and some debuggability improvements.
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Thierry Reding <thierry.reding@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220506164004.3922226-1-thierry.reding@gmail.com
parents f83493f7 cb7e1abc
...@@ -88,6 +88,7 @@ static struct host1x_bo_mapping *tegra_bo_pin(struct device *dev, struct host1x_ ...@@ -88,6 +88,7 @@ static struct host1x_bo_mapping *tegra_bo_pin(struct device *dev, struct host1x_
if (IS_ERR(map->sgt)) { if (IS_ERR(map->sgt)) {
dma_buf_detach(buf, map->attach); dma_buf_detach(buf, map->attach);
err = PTR_ERR(map->sgt); err = PTR_ERR(map->sgt);
map->sgt = NULL;
goto free; goto free;
} }
......
...@@ -513,9 +513,8 @@ static int vic_remove(struct platform_device *pdev) ...@@ -513,9 +513,8 @@ static int vic_remove(struct platform_device *pdev)
} }
static const struct dev_pm_ops vic_pm_ops = { static const struct dev_pm_ops vic_pm_ops = {
SET_RUNTIME_PM_OPS(vic_runtime_suspend, vic_runtime_resume, NULL) RUNTIME_PM_OPS(vic_runtime_suspend, vic_runtime_resume, NULL)
SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume)
pm_runtime_force_resume)
}; };
struct platform_driver tegra_vic_driver = { struct platform_driver tegra_vic_driver = {
......
...@@ -75,7 +75,7 @@ static int show_channel(struct host1x_channel *ch, void *data, bool show_fifo) ...@@ -75,7 +75,7 @@ static int show_channel(struct host1x_channel *ch, void *data, bool show_fifo)
return 0; return 0;
} }
static void show_syncpts(struct host1x *m, struct output *o) static void show_syncpts(struct host1x *m, struct output *o, bool show_all)
{ {
struct list_head *pos; struct list_head *pos;
unsigned int i; unsigned int i;
...@@ -97,7 +97,10 @@ static void show_syncpts(struct host1x *m, struct output *o) ...@@ -97,7 +97,10 @@ static void show_syncpts(struct host1x *m, struct output *o)
waiters++; waiters++;
spin_unlock(&m->syncpt[i].intr.lock); spin_unlock(&m->syncpt[i].intr.lock);
if (!min && !max && !waiters) if (!kref_read(&m->syncpt[i].ref))
continue;
if (!show_all && !min && !max && !waiters)
continue; continue;
host1x_debug_output(o, host1x_debug_output(o,
...@@ -124,7 +127,7 @@ static void show_all(struct host1x *m, struct output *o, bool show_fifo) ...@@ -124,7 +127,7 @@ static void show_all(struct host1x *m, struct output *o, bool show_fifo)
unsigned int i; unsigned int i;
host1x_hw_show_mlocks(m, o); host1x_hw_show_mlocks(m, o);
show_syncpts(m, o); show_syncpts(m, o, true);
host1x_debug_output(o, "---- channels ----\n"); host1x_debug_output(o, "---- channels ----\n");
for (i = 0; i < m->info->nb_channels; ++i) { for (i = 0; i < m->info->nb_channels; ++i) {
...@@ -241,5 +244,5 @@ void host1x_debug_dump_syncpts(struct host1x *host1x) ...@@ -241,5 +244,5 @@ void host1x_debug_dump_syncpts(struct host1x *host1x)
.fn = write_to_printk .fn = write_to_printk
}; };
show_syncpts(host1x, &o); show_syncpts(host1x, &o, false);
} }
...@@ -175,7 +175,7 @@ static unsigned int pin_job(struct host1x *host, struct host1x_job *job) ...@@ -175,7 +175,7 @@ static unsigned int pin_job(struct host1x *host, struct host1x_job *job)
goto unpin; goto unpin;
} }
map = host1x_bo_pin(dev, bo, direction, &client->cache); map = host1x_bo_pin(dev, bo, direction, NULL);
if (IS_ERR(map)) { if (IS_ERR(map)) {
err = PTR_ERR(map); err = PTR_ERR(map);
goto unpin; goto unpin;
...@@ -222,7 +222,7 @@ static unsigned int pin_job(struct host1x *host, struct host1x_job *job) ...@@ -222,7 +222,7 @@ static unsigned int pin_job(struct host1x *host, struct host1x_job *job)
goto unpin; goto unpin;
} }
map = host1x_bo_pin(host->dev, g->bo, DMA_TO_DEVICE, &host->cache); map = host1x_bo_pin(host->dev, g->bo, DMA_TO_DEVICE, NULL);
if (IS_ERR(map)) { if (IS_ERR(map)) {
err = PTR_ERR(map); err = PTR_ERR(map);
goto unpin; goto unpin;
......
...@@ -31,6 +31,11 @@ u64 host1x_get_dma_mask(struct host1x *host1x); ...@@ -31,6 +31,11 @@ u64 host1x_get_dma_mask(struct host1x *host1x);
* struct host1x_bo_cache - host1x buffer object cache * struct host1x_bo_cache - host1x buffer object cache
* @mappings: list of mappings * @mappings: list of mappings
* @lock: synchronizes accesses to the list of mappings * @lock: synchronizes accesses to the list of mappings
*
* Note that entries are not periodically evicted from this cache and instead need to be
* explicitly released. This is used primarily for DRM/KMS where the cache's reference is
* released when the last reference to a buffer object represented by a mapping in this
* cache is dropped.
*/ */
struct host1x_bo_cache { struct host1x_bo_cache {
struct list_head mappings; struct list_head mappings;
...@@ -81,6 +86,7 @@ struct host1x_client_ops { ...@@ -81,6 +86,7 @@ struct host1x_client_ops {
* @parent: pointer to parent structure * @parent: pointer to parent structure
* @usecount: reference count for this structure * @usecount: reference count for this structure
* @lock: mutex for mutually exclusive concurrency * @lock: mutex for mutually exclusive concurrency
* @cache: host1x buffer object cache
*/ */
struct host1x_client { struct host1x_client {
struct list_head list; struct list_head list;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment