summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Stultz <john.stultz@linaro.org>2020-01-18 00:18:47 +0000
committerJohn Stultz <john.stultz@linaro.org>2021-01-07 00:03:43 +0000
commit5322caa793e86b3955969eb4d1f8e9b92ab6c2ec (patch)
tree023a186f67dcc39cd527ded5ce7bdaa2826a5a8a
parentb335ce4eb462ba2685fe70bd4d3fce1ffca066cb (diff)
downloadhikey-modules-5322caa793e86b3955969eb4d1f8e9b92ab6c2ec.tar.gz
MALI: Build fixups for newer kernels
Cumulated build fixes for 5.4 and newer kernels Change-Id: Ib92ce23a379fd898de53ad81b6d0666874875401 Signed-off-by: John Stultz <john.stultz@linaro.org>
-rw-r--r--midgard/ipa/mali_kbase_ipa_simple.c4
-rw-r--r--midgard/mali_kbase.h2
-rw-r--r--midgard/mali_kbase_context.c4
-rw-r--r--midgard/mali_kbase_core_linux.c1
-rw-r--r--midgard/mali_kbase_fence.c2
-rw-r--r--midgard/mali_kbase_gpuprops.c2
-rw-r--r--midgard/mali_kbase_mem.h2
-rw-r--r--midgard/mali_kbase_mem_linux.c22
-rw-r--r--midgard/mali_kbase_mmu.c2
-rw-r--r--midgard/mali_kbase_regs_history_debugfs.c13
-rw-r--r--midgard/mali_kbase_smc.c3
-rw-r--r--midgard/mali_kbase_softjobs.c4
-rw-r--r--midgard/mali_kbase_sync.h2
-rw-r--r--midgard/mali_kbase_sync_file.c2
-rw-r--r--midgard/mali_kbase_tlstream.c6
15 files changed, 38 insertions, 33 deletions
diff --git a/midgard/ipa/mali_kbase_ipa_simple.c b/midgard/ipa/mali_kbase_ipa_simple.c
index 639ade2..f868384 100644
--- a/midgard/ipa/mali_kbase_ipa_simple.c
+++ b/midgard/ipa/mali_kbase_ipa_simple.c
@@ -68,7 +68,7 @@ static int kbase_simple_power_model_get_dummy_temp(
void kbase_simple_power_model_set_dummy_temp(int temp)
{
- ACCESS_ONCE(dummy_temp) = temp;
+ WRITE_ONCE(dummy_temp, temp);
}
KBASE_EXPORT_TEST_API(kbase_simple_power_model_set_dummy_temp);
@@ -170,7 +170,7 @@ static int poll_temperature(void *data)
temp = FALLBACK_STATIC_TEMPERATURE;
}
- ACCESS_ONCE(model_data->current_temperature) = temp;
+ WRITE_ONCE(model_data->current_temperature, temp);
msleep_interruptible(ACCESS_ONCE(model_data->temperature_poll_interval_ms));
}
diff --git a/midgard/mali_kbase.h b/midgard/mali_kbase.h
index 7174ef2..b8e23f4 100644
--- a/midgard/mali_kbase.h
+++ b/midgard/mali_kbase.h
@@ -258,7 +258,7 @@ int kbase_soft_event_update(struct kbase_context *kctx,
bool kbase_replay_process(struct kbase_jd_atom *katom);
-void kbasep_soft_job_timeout_worker(unsigned long data);
+void kbasep_soft_job_timeout_worker(struct timer_list *t);
void kbasep_complete_triggered_soft_events(struct kbase_context *kctx, u64 evt);
/* api used internally for register access. Contains validation and tracing */
diff --git a/midgard/mali_kbase_context.c b/midgard/mali_kbase_context.c
index 868442a..e4ba254 100644
--- a/midgard/mali_kbase_context.c
+++ b/midgard/mali_kbase_context.c
@@ -175,9 +175,9 @@ kbase_create_context(struct kbase_device *kbdev, bool is_compat)
mutex_init(&kctx->vinstr_cli_lock);
- setup_timer(&kctx->soft_job_timeout,
+ timer_setup(&kctx->soft_job_timeout,
kbasep_soft_job_timeout_worker,
- (uintptr_t)kctx);
+ 0);
return kctx;
diff --git a/midgard/mali_kbase_core_linux.c b/midgard/mali_kbase_core_linux.c
index 22c995a..f003655 100644
--- a/midgard/mali_kbase_core_linux.c
+++ b/midgard/mali_kbase_core_linux.c
@@ -3977,7 +3977,6 @@ static struct platform_driver kbase_platform_driver = {
.remove = kbase_platform_device_remove,
.driver = {
.name = kbase_drv_name,
- .owner = THIS_MODULE,
.pm = &kbase_pm_ops,
.of_match_table = of_match_ptr(kbase_dt_ids),
},
diff --git a/midgard/mali_kbase_fence.c b/midgard/mali_kbase_fence.c
index ac8272c..cee15f2 100644
--- a/midgard/mali_kbase_fence.c
+++ b/midgard/mali_kbase_fence.c
@@ -67,7 +67,7 @@ kbase_fence_fence_value_str(struct fence *fence, char *str, int size)
kbase_fence_fence_value_str(struct dma_fence *fence, char *str, int size)
#endif
{
- snprintf(str, size, "%u", fence->seqno);
+ snprintf(str, size, "%u", (unsigned)fence->seqno);
}
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0))
diff --git a/midgard/mali_kbase_gpuprops.c b/midgard/mali_kbase_gpuprops.c
index 9a9ce2d..e93bbbc 100644
--- a/midgard/mali_kbase_gpuprops.c
+++ b/midgard/mali_kbase_gpuprops.c
@@ -194,7 +194,7 @@ static void kbase_gpuprops_calculate_props(base_gpu_props * const gpu_props, str
/* Populate the base_gpu_props structure */
kbase_gpuprops_update_core_props_gpu_id(gpu_props);
gpu_props->core_props.log2_program_counter_size = KBASE_GPU_PC_SIZE_LOG2;
- gpu_props->core_props.gpu_available_memory_size = totalram_pages << PAGE_SHIFT;
+ gpu_props->core_props.gpu_available_memory_size = totalram_pages() << PAGE_SHIFT;
for (i = 0; i < BASE_GPU_NUM_TEXTURE_FEATURES_REGISTERS; i++)
gpu_props->core_props.texture_features[i] = gpu_props->raw_props.texture_features[i];
diff --git a/midgard/mali_kbase_mem.h b/midgard/mali_kbase_mem.h
index 36de381..80f32b8 100644
--- a/midgard/mali_kbase_mem.h
+++ b/midgard/mali_kbase_mem.h
@@ -34,6 +34,8 @@
#error "Don't include this file directly, use mali_kbase.h instead"
#endif
+#define ACCESS_ONCE(x) READ_ONCE(x)
+
#include <linux/kref.h>
#ifdef CONFIG_UMP
#include <linux/ump.h>
diff --git a/midgard/mali_kbase_mem_linux.c b/midgard/mali_kbase_mem_linux.c
index 4e6668e..0eccd0f 100644
--- a/midgard/mali_kbase_mem_linux.c
+++ b/midgard/mali_kbase_mem_linux.c
@@ -1662,7 +1662,7 @@ KBASE_EXPORT_TEST_API(kbase_cpu_vm_close);
static int kbase_cpu_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
#else
-static int kbase_cpu_vm_fault(struct vm_fault *vmf)
+static vm_fault_t kbase_cpu_vm_fault(struct vm_fault *vmf)
{
struct vm_area_struct *vma = vmf->vma;
#endif
@@ -1670,6 +1670,7 @@ static int kbase_cpu_vm_fault(struct vm_fault *vmf)
pgoff_t rel_pgoff;
size_t i;
pgoff_t addr;
+ vm_fault_t ret = VM_FAULT_SIGBUS;
KBASE_DEBUG_ASSERT(map);
KBASE_DEBUG_ASSERT(map->count > 0);
@@ -1694,9 +1695,9 @@ static int kbase_cpu_vm_fault(struct vm_fault *vmf)
addr = (pgoff_t)(vmf->address >> PAGE_SHIFT);
#endif
while (i < map->alloc->nents && (addr < vma->vm_end >> PAGE_SHIFT)) {
- int ret = vm_insert_pfn(vma, addr << PAGE_SHIFT,
+ ret = vmf_insert_pfn(vma, addr << PAGE_SHIFT,
PFN_DOWN(as_phys_addr_t(map->alloc->pages[i])));
- if (ret < 0 && ret != -EBUSY)
+ if (ret != VM_FAULT_NOPAGE)
goto locked_bad_fault;
i++; addr++;
@@ -1708,7 +1709,7 @@ static int kbase_cpu_vm_fault(struct vm_fault *vmf)
locked_bad_fault:
kbase_gpu_vm_unlock(map->kctx);
- return VM_FAULT_SIGBUS;
+ return ret;
}
const struct vm_operations_struct kbase_vm_ops = {
@@ -1775,11 +1776,16 @@ static int kbase_cpu_mmap(struct kbase_va_region *reg, struct vm_area_struct *vm
vma->vm_flags |= VM_PFNMAP;
for (i = 0; i < nr_pages; i++) {
phys_addr_t phys;
-
+ int ret;
phys = as_phys_addr_t(page_array[i + start_off]);
- err = vm_insert_pfn(vma, addr, PFN_DOWN(phys));
- if (WARN_ON(err))
+ ret = vmf_insert_pfn(vma, addr, PFN_DOWN(phys));
+ if (WARN_ON(ret != VM_FAULT_NOPAGE)) {
+ if (ret == VM_FAULT_OOM)
+ err = -ENOMEM;
+ else
+ err = -EFAULT;
break;
+ }
addr += PAGE_SIZE;
}
@@ -2042,7 +2048,7 @@ int kbase_mmap(struct file *file, struct vm_area_struct *vma)
struct kbase_context *kctx = file->private_data;
struct kbase_va_region *reg = NULL;
void *kaddr = NULL;
- size_t nr_pages = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
+ size_t nr_pages = vma_pages(vma);
int err = 0;
int free_on_close = 0;
struct device *dev = kctx->kbdev->dev;
diff --git a/midgard/mali_kbase_mmu.c b/midgard/mali_kbase_mmu.c
index 65b7da0..191b4f8 100644
--- a/midgard/mali_kbase_mmu.c
+++ b/midgard/mali_kbase_mmu.c
@@ -1986,7 +1986,7 @@ const char *kbase_exception_name(struct kbase_device *kbdev, u32 exception_code)
default:
e = "UNKNOWN";
break;
- };
+ }
return e;
}
diff --git a/midgard/mali_kbase_regs_history_debugfs.c b/midgard/mali_kbase_regs_history_debugfs.c
index 763740e..d01ef55 100644
--- a/midgard/mali_kbase_regs_history_debugfs.c
+++ b/midgard/mali_kbase_regs_history_debugfs.c
@@ -46,10 +46,8 @@ static int regs_history_size_set(void *data, u64 val)
}
-DEFINE_SIMPLE_ATTRIBUTE(regs_history_size_fops,
- regs_history_size_get,
- regs_history_size_set,
- "%llu\n");
+DEFINE_DEBUGFS_ATTRIBUTE(regs_history_size_fops, regs_history_size_get,
+ regs_history_size_set, "%llu\n");
/**
@@ -123,9 +121,10 @@ void kbasep_regs_history_debugfs_init(struct kbase_device *kbdev)
debugfs_create_bool("regs_history_enabled", S_IRUGO | S_IWUSR,
kbdev->mali_debugfs_directory,
&kbdev->io_history.enabled);
- debugfs_create_file("regs_history_size", S_IRUGO | S_IWUSR,
- kbdev->mali_debugfs_directory,
- &kbdev->io_history, &regs_history_size_fops);
+ debugfs_create_file_unsafe("regs_history_size", S_IRUGO | S_IWUSR,
+ kbdev->mali_debugfs_directory,
+ &kbdev->io_history,
+ &regs_history_size_fops);
debugfs_create_file("regs_history", S_IRUGO,
kbdev->mali_debugfs_directory, &kbdev->io_history,
&regs_history_fops);
diff --git a/midgard/mali_kbase_smc.c b/midgard/mali_kbase_smc.c
index 2176479..a5e4e1d 100644
--- a/midgard/mali_kbase_smc.c
+++ b/midgard/mali_kbase_smc.c
@@ -35,6 +35,7 @@ static noinline u64 invoke_smc_fid(u64 function_id,
register u64 x2 asm("x2") = arg1;
register u64 x3 asm("x3") = arg2;
+#define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t"
asm volatile(
__asmeq("%0", "x0")
__asmeq("%1", "x1")
@@ -43,7 +44,7 @@ static noinline u64 invoke_smc_fid(u64 function_id,
"smc #0\n"
: "+r" (x0)
: "r" (x1), "r" (x2), "r" (x3));
-
+#undef __asmeq
return x0;
}
diff --git a/midgard/mali_kbase_softjobs.c b/midgard/mali_kbase_softjobs.c
index 7cce3f8..e62499b 100644
--- a/midgard/mali_kbase_softjobs.c
+++ b/midgard/mali_kbase_softjobs.c
@@ -375,9 +375,9 @@ static void kbase_fence_debug_timeout(struct kbase_jd_atom *katom)
}
#endif /* CONFIG_MALI_FENCE_DEBUG */
-void kbasep_soft_job_timeout_worker(unsigned long data)
+void kbasep_soft_job_timeout_worker(struct timer_list *t)
{
- struct kbase_context *kctx = (struct kbase_context *)data;
+ struct kbase_context *kctx = from_timer(kctx, t, soft_job_timeout);
u32 timeout_ms = (u32)atomic_read(
&kctx->kbdev->js_data.soft_job_timeout_ms);
struct timer_list *timer = &kctx->soft_job_timeout;
diff --git a/midgard/mali_kbase_sync.h b/midgard/mali_kbase_sync.h
index a7690b2..bc603a4 100644
--- a/midgard/mali_kbase_sync.h
+++ b/midgard/mali_kbase_sync.h
@@ -161,7 +161,7 @@ void kbase_sync_fence_out_remove(struct kbase_jd_atom *katom);
*/
static inline void kbase_sync_fence_close_fd(int fd)
{
- sys_close(fd);
+ ksys_close(fd);
}
/**
diff --git a/midgard/mali_kbase_sync_file.c b/midgard/mali_kbase_sync_file.c
index 8f8f3c8..b564091 100644
--- a/midgard/mali_kbase_sync_file.c
+++ b/midgard/mali_kbase_sync_file.c
@@ -300,7 +300,7 @@ static void kbase_sync_fence_info_get(struct dma_fence *fence,
fence->context, fence->seqno);
#else
scnprintf(info->name, sizeof(info->name), "%llu#%u",
- fence->context, fence->seqno);
+ (long long)fence->context, (unsigned)fence->seqno);
#endif
}
diff --git a/midgard/mali_kbase_tlstream.c b/midgard/mali_kbase_tlstream.c
index 926d6b6..451761d 100644
--- a/midgard/mali_kbase_tlstream.c
+++ b/midgard/mali_kbase_tlstream.c
@@ -1047,13 +1047,11 @@ static void kbasep_tlstream_flush_stream(enum tl_stream_type stype)
* Timer is executed periodically to check if any of the stream contains
* buffer ready to be submitted to user space.
*/
-static void kbasep_tlstream_autoflush_timer_callback(unsigned long data)
+static void kbasep_tlstream_autoflush_timer_callback(struct timer_list *t)
{
enum tl_stream_type stype;
int rcode;
- CSTD_UNUSED(data);
-
for (stype = 0; stype < TL_STREAM_TYPE_COUNT; stype++) {
struct tl_stream *stream = tl_stream[stype];
unsigned long flags;
@@ -1376,7 +1374,7 @@ int kbase_tlstream_init(void)
/* Initialize autoflush timer. */
atomic_set(&autoflush_timer_active, 0);
- setup_timer(&autoflush_timer,
+ timer_setup(&autoflush_timer,
kbasep_tlstream_autoflush_timer_callback,
0);