Commit ec26530c authored by Dave Airlie's avatar Dave Airlie

Merge tag 'drm-misc-fixes-2019-10-30-1' of...

Merge tag 'drm-misc-fixes-2019-10-30-1' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes

 - three fixes for panfrost, one to silence a warning, one to fix
   runtime_pm and one to prevent bogus pointer dereferences
 - one fix for a memleak in v3d
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Maxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20191030182207.evrscl7lnv42u5zu@hendrix
parents 6f966213 f70744c6
...@@ -556,11 +556,11 @@ static int panfrost_probe(struct platform_device *pdev) ...@@ -556,11 +556,11 @@ static int panfrost_probe(struct platform_device *pdev)
return 0; return 0;
err_out2: err_out2:
pm_runtime_disable(pfdev->dev);
panfrost_devfreq_fini(pfdev); panfrost_devfreq_fini(pfdev);
err_out1: err_out1:
panfrost_device_fini(pfdev); panfrost_device_fini(pfdev);
err_out0: err_out0:
pm_runtime_disable(pfdev->dev);
drm_dev_put(ddev); drm_dev_put(ddev);
return err; return err;
} }
......
...@@ -224,9 +224,9 @@ static size_t get_pgsize(u64 addr, size_t size) ...@@ -224,9 +224,9 @@ static size_t get_pgsize(u64 addr, size_t size)
return SZ_2M; return SZ_2M;
} }
void panfrost_mmu_flush_range(struct panfrost_device *pfdev, static void panfrost_mmu_flush_range(struct panfrost_device *pfdev,
struct panfrost_mmu *mmu, struct panfrost_mmu *mmu,
u64 iova, size_t size) u64 iova, size_t size)
{ {
if (mmu->as < 0) if (mmu->as < 0)
return; return;
...@@ -406,11 +406,11 @@ addr_to_drm_mm_node(struct panfrost_device *pfdev, int as, u64 addr) ...@@ -406,11 +406,11 @@ addr_to_drm_mm_node(struct panfrost_device *pfdev, int as, u64 addr)
spin_lock(&pfdev->as_lock); spin_lock(&pfdev->as_lock);
list_for_each_entry(mmu, &pfdev->as_lru_list, list) { list_for_each_entry(mmu, &pfdev->as_lru_list, list) {
if (as == mmu->as) if (as == mmu->as)
break; goto found_mmu;
} }
if (as != mmu->as) goto out;
goto out;
found_mmu:
priv = container_of(mmu, struct panfrost_file_priv, mmu); priv = container_of(mmu, struct panfrost_file_priv, mmu);
spin_lock(&priv->mm_lock); spin_lock(&priv->mm_lock);
...@@ -432,7 +432,8 @@ addr_to_drm_mm_node(struct panfrost_device *pfdev, int as, u64 addr) ...@@ -432,7 +432,8 @@ addr_to_drm_mm_node(struct panfrost_device *pfdev, int as, u64 addr)
#define NUM_FAULT_PAGES (SZ_2M / PAGE_SIZE) #define NUM_FAULT_PAGES (SZ_2M / PAGE_SIZE)
int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as, u64 addr) static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as,
u64 addr)
{ {
int ret, i; int ret, i;
struct panfrost_gem_object *bo; struct panfrost_gem_object *bo;
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "panfrost_issues.h" #include "panfrost_issues.h"
#include "panfrost_job.h" #include "panfrost_job.h"
#include "panfrost_mmu.h" #include "panfrost_mmu.h"
#include "panfrost_perfcnt.h"
#include "panfrost_regs.h" #include "panfrost_regs.h"
#define COUNTERS_PER_BLOCK 64 #define COUNTERS_PER_BLOCK 64
......
...@@ -557,13 +557,16 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data, ...@@ -557,13 +557,16 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
if (args->bcl_start != args->bcl_end) { if (args->bcl_start != args->bcl_end) {
bin = kcalloc(1, sizeof(*bin), GFP_KERNEL); bin = kcalloc(1, sizeof(*bin), GFP_KERNEL);
if (!bin) if (!bin) {
v3d_job_put(&render->base);
return -ENOMEM; return -ENOMEM;
}
ret = v3d_job_init(v3d, file_priv, &bin->base, ret = v3d_job_init(v3d, file_priv, &bin->base,
v3d_job_free, args->in_sync_bcl); v3d_job_free, args->in_sync_bcl);
if (ret) { if (ret) {
v3d_job_put(&render->base); v3d_job_put(&render->base);
kfree(bin);
return ret; return ret;
} }
......
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