diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_gk20a.c | 23 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.c | 4 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a_scale.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/ltc_gk20a.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 2 |
5 files changed, 19 insertions, 15 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index 8db885e3..fd28dec1 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c | |||
@@ -1688,17 +1688,14 @@ static int gk20a_channel_add_job(struct channel_gk20a *c, | |||
1688 | if (!skip_buffer_refcounting) { | 1688 | if (!skip_buffer_refcounting) { |
1689 | err = gk20a_vm_get_buffers(vm, &mapped_buffers, | 1689 | err = gk20a_vm_get_buffers(vm, &mapped_buffers, |
1690 | &num_mapped_buffers); | 1690 | &num_mapped_buffers); |
1691 | if (err) { | 1691 | if (err) |
1692 | gk20a_vm_put(vm); | 1692 | goto err_put_vm; |
1693 | return err; | ||
1694 | } | ||
1695 | } | 1693 | } |
1696 | 1694 | ||
1697 | job = kzalloc(sizeof(*job), GFP_KERNEL); | 1695 | job = kzalloc(sizeof(*job), GFP_KERNEL); |
1698 | if (!job) { | 1696 | if (!job) { |
1699 | gk20a_vm_put_buffers(vm, mapped_buffers, num_mapped_buffers); | 1697 | err = -ENOMEM; |
1700 | gk20a_vm_put(vm); | 1698 | goto err_put_buffers; |
1701 | return -ENOMEM; | ||
1702 | } | 1699 | } |
1703 | 1700 | ||
1704 | /* put() is done in gk20a_channel_update() when the job is done */ | 1701 | /* put() is done in gk20a_channel_update() when the job is done */ |
@@ -1718,10 +1715,20 @@ static int gk20a_channel_add_job(struct channel_gk20a *c, | |||
1718 | list_add_tail(&job->list, &c->jobs); | 1715 | list_add_tail(&job->list, &c->jobs); |
1719 | mutex_unlock(&c->jobs_lock); | 1716 | mutex_unlock(&c->jobs_lock); |
1720 | } else { | 1717 | } else { |
1721 | return -ETIMEDOUT; | 1718 | err = -ETIMEDOUT; |
1719 | goto err_free_job; | ||
1722 | } | 1720 | } |
1723 | 1721 | ||
1724 | return 0; | 1722 | return 0; |
1723 | |||
1724 | err_free_job: | ||
1725 | kfree(job); | ||
1726 | err_put_buffers: | ||
1727 | gk20a_vm_put_buffers(vm, mapped_buffers, num_mapped_buffers); | ||
1728 | err_put_vm: | ||
1729 | gk20a_vm_put(vm); | ||
1730 | |||
1731 | return err; | ||
1725 | } | 1732 | } |
1726 | 1733 | ||
1727 | void gk20a_channel_update(struct channel_gk20a *c, int nr_completed) | 1734 | void gk20a_channel_update(struct channel_gk20a *c, int nr_completed) |
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index 7ac600c0..79218c97 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c | |||
@@ -1102,7 +1102,7 @@ static int gk20a_pm_enable_clk(struct device *dev) | |||
1102 | for (index = 0; index < platform->num_clks; index++) { | 1102 | for (index = 0; index < platform->num_clks; index++) { |
1103 | int err = 0; | 1103 | int err = 0; |
1104 | if (platform->clk[index]) | 1104 | if (platform->clk[index]) |
1105 | clk_prepare_enable(platform->clk[index]); | 1105 | err = clk_prepare_enable(platform->clk[index]); |
1106 | if (err) | 1106 | if (err) |
1107 | return -EINVAL; | 1107 | return -EINVAL; |
1108 | } | 1108 | } |
@@ -1623,14 +1623,12 @@ static int gk20a_domain_init(struct of_device_id *matches) | |||
1623 | { | 1623 | { |
1624 | int ret = 0; | 1624 | int ret = 0; |
1625 | struct device_node *np; | 1625 | struct device_node *np; |
1626 | const struct of_device_id *match; | ||
1627 | struct gk20a_domain_data *gk20a_domain; | 1626 | struct gk20a_domain_data *gk20a_domain; |
1628 | 1627 | ||
1629 | np = of_find_matching_node(NULL, matches); | 1628 | np = of_find_matching_node(NULL, matches); |
1630 | if (!np) | 1629 | if (!np) |
1631 | return -ENOENT; | 1630 | return -ENOENT; |
1632 | 1631 | ||
1633 | match = of_match_node(matches, np); | ||
1634 | gk20a_domain = (struct gk20a_domain_data *)kzalloc | 1632 | gk20a_domain = (struct gk20a_domain_data *)kzalloc |
1635 | (sizeof(struct gk20a_domain_data), GFP_KERNEL); | 1633 | (sizeof(struct gk20a_domain_data), GFP_KERNEL); |
1636 | if (!gk20a_domain) | 1634 | if (!gk20a_domain) |
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_scale.c b/drivers/gpu/nvgpu/gk20a/gk20a_scale.c index 0411e2fa..82e24535 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a_scale.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a_scale.c | |||
@@ -314,8 +314,7 @@ void gk20a_scale_init(struct platform_device *pdev) | |||
314 | return; | 314 | return; |
315 | 315 | ||
316 | err_get_freqs: | 316 | err_get_freqs: |
317 | kfree(g->scale_profile); | 317 | kfree(profile); |
318 | g->scale_profile = NULL; | ||
319 | } | 318 | } |
320 | 319 | ||
321 | void gk20a_scale_exit(struct platform_device *pdev) | 320 | void gk20a_scale_exit(struct platform_device *pdev) |
diff --git a/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c b/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c index 7cb386f0..c7f9a55d 100644 --- a/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c | |||
@@ -105,7 +105,7 @@ static int gk20a_ltc_cbc_ctrl(struct gk20a *g, enum gk20a_cbc_op op, | |||
105 | int err = 0; | 105 | int err = 0; |
106 | struct gr_gk20a *gr = &g->gr; | 106 | struct gr_gk20a *gr = &g->gr; |
107 | u32 fbp, slice, ctrl1, val, hw_op = 0; | 107 | u32 fbp, slice, ctrl1, val, hw_op = 0; |
108 | u32 retry = 200; | 108 | int retry = 200; |
109 | u32 slices_per_fbp = | 109 | u32 slices_per_fbp = |
110 | ltc_ltcs_ltss_cbc_param_slices_per_fbp_v( | 110 | ltc_ltcs_ltss_cbc_param_slices_per_fbp_v( |
111 | gk20a_readl(g, ltc_ltcs_ltss_cbc_param_r())); | 111 | gk20a_readl(g, ltc_ltcs_ltss_cbc_param_r())); |
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 4c31d5e4..4bc8d385 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -1735,7 +1735,7 @@ int gk20a_vm_get_compbits_info(struct vm_gk20a *vm, | |||
1735 | 1735 | ||
1736 | mapped_buffer = find_mapped_buffer_locked(&vm->mapped_buffers, mapping_gva); | 1736 | mapped_buffer = find_mapped_buffer_locked(&vm->mapped_buffers, mapping_gva); |
1737 | 1737 | ||
1738 | if (!mapped_buffer | !mapped_buffer->user_mapped) | 1738 | if (!mapped_buffer || !mapped_buffer->user_mapped) |
1739 | { | 1739 | { |
1740 | mutex_unlock(&vm->update_gmmu_lock); | 1740 | mutex_unlock(&vm->update_gmmu_lock); |
1741 | gk20a_err(d, "%s: bad offset 0x%llx", __func__, mapping_gva); | 1741 | gk20a_err(d, "%s: bad offset 0x%llx", __func__, mapping_gva); |