summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c23
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.c4
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a_scale.c3
-rw-r--r--drivers/gpu/nvgpu/gk20a/ltc_gk20a.c2
-rw-r--r--drivers/gpu/nvgpu/gk20a/mm_gk20a.c2
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
1724err_free_job:
1725 kfree(job);
1726err_put_buffers:
1727 gk20a_vm_put_buffers(vm, mapped_buffers, num_mapped_buffers);
1728err_put_vm:
1729 gk20a_vm_put(vm);
1730
1731 return err;
1725} 1732}
1726 1733
1727void gk20a_channel_update(struct channel_gk20a *c, int nr_completed) 1734void 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
316err_get_freqs: 316err_get_freqs:
317 kfree(g->scale_profile); 317 kfree(profile);
318 g->scale_profile = NULL;
319} 318}
320 319
321void gk20a_scale_exit(struct platform_device *pdev) 320void 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);