diff options
author | John Stultz <john.stultz@linaro.org> | 2020-01-18 00:18:47 +0000 |
---|---|---|
committer | John Stultz <john.stultz@linaro.org> | 2021-01-07 00:03:43 +0000 |
commit | 5322caa793e86b3955969eb4d1f8e9b92ab6c2ec (patch) | |
tree | 023a186f67dcc39cd527ded5ce7bdaa2826a5a8a | |
parent | b335ce4eb462ba2685fe70bd4d3fce1ffca066cb (diff) | |
download | hikey-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.c | 4 | ||||
-rw-r--r-- | midgard/mali_kbase.h | 2 | ||||
-rw-r--r-- | midgard/mali_kbase_context.c | 4 | ||||
-rw-r--r-- | midgard/mali_kbase_core_linux.c | 1 | ||||
-rw-r--r-- | midgard/mali_kbase_fence.c | 2 | ||||
-rw-r--r-- | midgard/mali_kbase_gpuprops.c | 2 | ||||
-rw-r--r-- | midgard/mali_kbase_mem.h | 2 | ||||
-rw-r--r-- | midgard/mali_kbase_mem_linux.c | 22 | ||||
-rw-r--r-- | midgard/mali_kbase_mmu.c | 2 | ||||
-rw-r--r-- | midgard/mali_kbase_regs_history_debugfs.c | 13 | ||||
-rw-r--r-- | midgard/mali_kbase_smc.c | 3 | ||||
-rw-r--r-- | midgard/mali_kbase_softjobs.c | 4 | ||||
-rw-r--r-- | midgard/mali_kbase_sync.h | 2 | ||||
-rw-r--r-- | midgard/mali_kbase_sync_file.c | 2 | ||||
-rw-r--r-- | midgard/mali_kbase_tlstream.c | 6 |
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, ®s_history_size_fops); + debugfs_create_file_unsafe("regs_history_size", S_IRUGO | S_IWUSR, + kbdev->mali_debugfs_directory, + &kbdev->io_history, + ®s_history_size_fops); debugfs_create_file("regs_history", S_IRUGO, kbdev->mali_debugfs_directory, &kbdev->io_history, ®s_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); |