diff options
author | Sidath Senanayake <sidaths@google.com> | 2018-07-31 15:28:14 +0200 |
---|---|---|
committer | Sidath Senanayake <sidaths@google.com> | 2018-07-31 15:28:14 +0200 |
commit | f32af5a9ba3c2b556d92827a96dbeec3df200968 (patch) | |
tree | f408feaf7cd8b87a980575c132f11d3ba45a3f8d /mali_kbase/mali_kbase.h | |
parent | 5574d60cda52fa08ca2cc714ae051ee2b6f850d7 (diff) | |
download | gpu-f32af5a9ba3c2b556d92827a96dbeec3df200968.tar.gz |
Mali Bifrost DDK r14p0 KMD
Provenance:
37fe8262c (collaborate/EAC/b_r14p0)
BX304L01B-BU-00000-r14p0-01rel0
BX304L06A-BU-00000-r14p0-01rel0
BX304X07X-BU-00000-r14p0-01rel0
Signed-off-by: Sidath Senanayake <sidaths@google.com>
Change-Id: I0eb3b666045d72d33e2953954de5b416f909da0f
Diffstat (limited to 'mali_kbase/mali_kbase.h')
-rw-r--r-- | mali_kbase/mali_kbase.h | 69 |
1 files changed, 62 insertions, 7 deletions
diff --git a/mali_kbase/mali_kbase.h b/mali_kbase/mali_kbase.h index 8603432..dc0d5f1 100644 --- a/mali_kbase/mali_kbase.h +++ b/mali_kbase/mali_kbase.h @@ -59,7 +59,6 @@ #include "mali_kbase_context.h" #include "mali_kbase_strings.h" #include "mali_kbase_mem_lowlevel.h" -#include "mali_kbase_trace_timeline.h" #include "mali_kbase_js.h" #include "mali_kbase_utility.h" #include "mali_kbase_mem.h" @@ -77,6 +76,7 @@ #include <trace/events/gpu.h> #endif + #ifndef u64_to_user_ptr /* Introduced in Linux v4.6 */ #define u64_to_user_ptr(x) ((void __user *)(uintptr_t)x) @@ -239,6 +239,44 @@ void kbase_event_close(struct kbase_context *kctx); void kbase_event_cleanup(struct kbase_context *kctx); void kbase_event_wakeup(struct kbase_context *kctx); +/** + * kbasep_jit_alloc_validate() - Validate the JIT allocation info. + * + * @kctx: Pointer to the kbase context within which the JIT + * allocation is to be validated. + * @info: Pointer to struct @base_jit_alloc_info + * which is to be validated. + * @return: 0 if jit allocation is valid; negative error code otherwise + */ +int kbasep_jit_alloc_validate(struct kbase_context *kctx, + struct base_jit_alloc_info *info); +/** + * kbase_mem_copy_from_extres_page() - Copy pages from external resources. + * + * @kctx: kbase context within which the copying is to take place. + * @extres_pages: Pointer to the pages which correspond to the external + * resources from which the copying will take place. + * @pages: Pointer to the pages to which the content is to be + * copied from the provided external resources. + * @nr_pages: Number of pages to copy. + * @target_page_nr: Number of target pages which will be used for copying. + * @offset: Offset into the target pages from which the copying + * is to be performed. + * @to_copy: Size of the chunk to be copied, in bytes. + */ +void kbase_mem_copy_from_extres_page(struct kbase_context *kctx, + void *extres_page, struct page **pages, unsigned int nr_pages, + unsigned int *target_page_nr, size_t offset, size_t *to_copy); +/** + * kbase_mem_copy_from_extres() - Copy from external resources. + * + * @kctx: kbase context within which the copying is to take place. + * @buf_data: Pointer to the information about external resources: + * pages pertaining to the external resource, number of + * pages to copy. + */ +int kbase_mem_copy_from_extres(struct kbase_context *kctx, + struct kbase_debug_copy_buffer *buf_data); int kbase_process_soft_job(struct kbase_jd_atom *katom); int kbase_prepare_soft_job(struct kbase_jd_atom *katom); void kbase_finish_soft_job(struct kbase_jd_atom *katom); @@ -257,12 +295,6 @@ bool kbase_replay_process(struct kbase_jd_atom *katom); void kbasep_soft_job_timeout_worker(struct timer_list *timer); void kbasep_complete_triggered_soft_events(struct kbase_context *kctx, u64 evt); -/* api used internally for register access. Contains validation and tracing */ -void kbase_device_trace_register_access(struct kbase_context *kctx, enum kbase_reg_access_type type, u16 reg_offset, u32 reg_value); -int kbase_device_trace_buffer_install( - struct kbase_context *kctx, u32 *tb, size_t size); -void kbase_device_trace_buffer_uninstall(struct kbase_context *kctx); - void kbasep_as_do_poke(struct work_struct *work); /** Returns the name associated with a Mali exception code @@ -293,6 +325,29 @@ static inline bool kbase_pm_is_suspending(struct kbase_device *kbdev) } /** + * kbase_pm_is_active - Determine whether the GPU is active + * + * @kbdev: The kbase device structure for the device (must be a valid pointer) + * + * This takes into account the following + * + * - whether there is an active context reference + * + * - whether any of the shader cores or the tiler are needed + * + * It should generally be preferred against checking just + * kbdev->pm.active_count on its own, because some code paths drop their + * reference on this whilst still having the shader cores/tiler in use. + * + * Return: true if the GPU is active, false otherwise + */ +static inline bool kbase_pm_is_active(struct kbase_device *kbdev) +{ + return (kbdev->pm.active_count > 0 || kbdev->shader_needed_cnt || + kbdev->tiler_needed_cnt); +} + +/** * Return the atom's ID, as was originally supplied by userspace in * base_jd_atom_v2::atom_number */ |