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_
if (IS_ERR(map->sgt)) {
dma_buf_detach(buf, map->attach);
err = PTR_ERR(map->sgt);
map->sgt = NULL;
goto free;
}
......
......@@ -513,9 +513,8 @@ static int vic_remove(struct platform_device *pdev)
}
static const struct dev_pm_ops vic_pm_ops = {
SET_RUNTIME_PM_OPS(vic_runtime_suspend, vic_runtime_resume, NULL)
SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
pm_runtime_force_resume)
RUNTIME_PM_OPS(vic_runtime_suspend, vic_runtime_resume, NULL)
SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume)
};
struct platform_driver tegra_vic_driver = {
......
......@@ -75,7 +75,7 @@ static int show_channel(struct host1x_channel *ch, void *data, bool show_fifo)
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;
unsigned int i;
......@@ -97,7 +97,10 @@ static void show_syncpts(struct host1x *m, struct output *o)
waiters++;
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;
host1x_debug_output(o,
......@@ -124,7 +127,7 @@ static void show_all(struct host1x *m, struct output *o, bool show_fifo)
unsigned int i;
host1x_hw_show_mlocks(m, o);
show_syncpts(m, o);
show_syncpts(m, o, true);
host1x_debug_output(o, "---- channels ----\n");
for (i = 0; i < m->info->nb_channels; ++i) {
......@@ -241,5 +244,5 @@ void host1x_debug_dump_syncpts(struct host1x *host1x)
.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)
goto unpin;
}
map = host1x_bo_pin(dev, bo, direction, &client->cache);
map = host1x_bo_pin(dev, bo, direction, NULL);
if (IS_ERR(map)) {
err = PTR_ERR(map);
goto unpin;
......@@ -222,7 +222,7 @@ static unsigned int pin_job(struct host1x *host, struct host1x_job *job)
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)) {
err = PTR_ERR(map);
goto unpin;
......
......@@ -31,6 +31,11 @@ u64 host1x_get_dma_mask(struct host1x *host1x);
* struct host1x_bo_cache - host1x buffer object cache
* @mappings: 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 list_head mappings;
......@@ -81,6 +86,7 @@ struct host1x_client_ops {
* @parent: pointer to parent structure
* @usecount: reference count for this structure
* @lock: mutex for mutually exclusive concurrency
* @cache: host1x buffer object cache
*/
struct host1x_client {
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