diff options
Diffstat (limited to 'mali_kbase/device/backend/mali_kbase_device_jm.c')
-rw-r--r-- | mali_kbase/device/backend/mali_kbase_device_jm.c | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/mali_kbase/device/backend/mali_kbase_device_jm.c b/mali_kbase/device/backend/mali_kbase_device_jm.c index ab75bc6..0ce2bc8 100644 --- a/mali_kbase/device/backend/mali_kbase_device_jm.c +++ b/mali_kbase/device/backend/mali_kbase_device_jm.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note /* * - * (C) COPYRIGHT 2019-2021 ARM Limited. All rights reserved. + * (C) COPYRIGHT 2019-2023 ARM Limited. All rights reserved. * * This program is free software and is provided to you under the terms of the * GNU General Public License version 2 as published by the Free Software @@ -29,13 +29,10 @@ #include <mali_kbase_hwaccess_backend.h> #include <mali_kbase_ctx_sched.h> #include <mali_kbase_reset_gpu.h> -#include <mali_kbase_hwcnt_watchdog_if_timer.h> -#include <mali_kbase_hwcnt_backend_jm.h> -#include <mali_kbase_hwcnt_backend_jm_watchdog.h> - -#if IS_ENABLED(CONFIG_MALI_NO_MALI) +#include <hwcnt/mali_kbase_hwcnt_watchdog_if_timer.h> +#include <hwcnt/backend/mali_kbase_hwcnt_backend_jm.h> +#include <hwcnt/backend/mali_kbase_hwcnt_backend_jm_watchdog.h> #include <backend/gpu/mali_kbase_model_linux.h> -#endif /* CONFIG_MALI_NO_MALI */ #ifdef CONFIG_MALI_ARBITER_SUPPORT #include <arbiter/mali_kbase_arbiter_pm.h> @@ -48,6 +45,9 @@ #include <backend/gpu/mali_kbase_pm_internal.h> #include <mali_kbase_dummy_job_wa.h> #include <backend/gpu/mali_kbase_clk_rate_trace_mgr.h> +#if IS_ENABLED(CONFIG_MALI_TRACE_POWER_GPU_WORK_PERIOD) +#include <mali_kbase_gpu_metrics.h> +#endif /** * kbase_backend_late_init - Perform any backend-specific initialization. @@ -76,13 +76,13 @@ static int kbase_backend_late_init(struct kbase_device *kbdev) goto fail_timer; #ifdef CONFIG_MALI_DEBUG -#ifndef CONFIG_MALI_NO_MALI +#if IS_ENABLED(CONFIG_MALI_REAL_HW) if (kbasep_common_test_interrupt_handlers(kbdev) != 0) { dev_err(kbdev->dev, "Interrupt assignment check failed.\n"); err = -EINVAL; goto fail_interrupt_test; } -#endif /* !CONFIG_MALI_NO_MALI */ +#endif /* IS_ENABLED(CONFIG_MALI_REAL_HW) */ #endif /* CONFIG_MALI_DEBUG */ err = kbase_job_slot_init(kbdev); @@ -121,9 +121,9 @@ fail_devfreq_init: fail_job_slot: #ifdef CONFIG_MALI_DEBUG -#ifndef CONFIG_MALI_NO_MALI +#if IS_ENABLED(CONFIG_MALI_REAL_HW) fail_interrupt_test: -#endif /* !CONFIG_MALI_NO_MALI */ +#endif /* IS_ENABLED(CONFIG_MALI_REAL_HW) */ #endif /* CONFIG_MALI_DEBUG */ kbase_backend_timer_term(kbdev); @@ -215,17 +215,22 @@ static void kbase_device_hwcnt_backend_jm_watchdog_term(struct kbase_device *kbd } static const struct kbase_device_init dev_init[] = { -#if IS_ENABLED(CONFIG_MALI_NO_MALI) +#if !IS_ENABLED(CONFIG_MALI_REAL_HW) { kbase_gpu_device_create, kbase_gpu_device_destroy, "Dummy model initialization failed" }, -#else +#else /* !IS_ENABLED(CONFIG_MALI_REAL_HW) */ { assign_irqs, NULL, "IRQ search failed" }, +#endif /* !IS_ENABLED(CONFIG_MALI_REAL_HW) */ +#if !IS_ENABLED(CONFIG_MALI_NO_MALI) { registers_map, registers_unmap, "Register map failed" }, -#endif +#endif /* !IS_ENABLED(CONFIG_MALI_NO_MALI) */ +#if IS_ENABLED(CONFIG_MALI_TRACE_POWER_GPU_WORK_PERIOD) + { kbase_gpu_metrics_init, kbase_gpu_metrics_term, "GPU metrics initialization failed" }, +#endif /* IS_ENABLED(CONFIG_MALI_TRACE_POWER_GPU_WORK_PERIOD) */ { kbase_device_io_history_init, kbase_device_io_history_term, "Register access history initialization failed" }, { kbase_device_pm_init, kbase_device_pm_term, "Power management initialization failed" }, { kbase_device_early_init, kbase_device_early_term, "Early device initialization failed" }, - { kbase_device_populate_max_freq, NULL, "Populating max frequency failed" }, + { kbase_backend_time_init, NULL, "Time backend initialization failed" }, { kbase_device_misc_init, kbase_device_misc_term, "Miscellaneous device initialization failed" }, { kbase_device_pcm_dev_init, kbase_device_pcm_dev_term, @@ -241,7 +246,6 @@ static const struct kbase_device_init dev_init[] = { "Timeline stream initialization failed" }, { kbase_clk_rate_trace_manager_init, kbase_clk_rate_trace_manager_term, "Clock rate trace manager initialization failed" }, - { kbase_lowest_gpu_freq_init, NULL, "Lowest freq initialization failed" }, { kbase_instr_backend_init, kbase_instr_backend_term, "Instrumentation backend initialization failed" }, { kbase_device_hwcnt_watchdog_if_init, kbase_device_hwcnt_watchdog_if_term, @@ -323,20 +327,21 @@ int kbase_device_init(struct kbase_device *kbdev) } } - kthread_init_worker(&kbdev->job_done_worker); - kbdev->job_done_worker_thread = kbase_create_realtime_thread(kbdev, - kthread_worker_fn, &kbdev->job_done_worker, "mali_jd_thread"); - if (IS_ERR(kbdev->job_done_worker_thread)) - return PTR_ERR(kbdev->job_done_worker_thread); + if (err) + return err; + + err = kbase_kthread_run_worker_rt(kbdev, &kbdev->job_done_worker, "mali_jd_thread"); + if (err) + return err; err = kbase_pm_apc_init(kbdev); if (err) return err; kthread_init_worker(&kbdev->event_worker); - kbdev->event_worker_thread = kthread_run(kthread_worker_fn, - &kbdev->event_worker, "mali_event_thread"); - if (IS_ERR(kbdev->event_worker_thread)) { + kbdev->event_worker.task = + kthread_run(kthread_worker_fn, &kbdev->event_worker, "mali_event_thread"); + if (IS_ERR(kbdev->event_worker.task)) { err = -ENOMEM; } @@ -358,4 +363,4 @@ int kbase_device_firmware_init_once(struct kbase_device *kbdev) mutex_unlock(&kbdev->fw_load_lock); return ret; -} +}
\ No newline at end of file |