123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (c) 2021, The Linux Foundation. All rights reserved.
- */
- #ifndef __H_CVP_MINIDUMP_H__
- #define __H_CVP_MINIDUMP_H__
- #include <linux/notifier.h>
- #include <linux/kernel.h>
- #include "cvp_comm_def.h"
- enum cvp_dump_type {
- CVP_QUEUE_DUMP,
- CVP_DBG_DUMP,
- CVP_MAX_DUMP,
- };
- #define MAX_REGION_NAME_LEN 32
- #define EVAFW_IMAGE_SIZE 7*1024*1024
- #ifdef CVP_MINIDUMP_ENABLED
- #include <soc/qcom/minidump.h>
- /*
- * wrapper for static minidump
- * @name: Dump will be collected with this name
- * @virt: Virtual address of the buffer which needs to be dumped
- * @phys: Physical address of the buffer which needs to be dumped
- * @size: Size of the buffer which needs to be dumped
- */
- int md_eva_dump(const char* name, u64 virt, u64 phys, u64 size);
- /*
- * Fucntion to add dump region to queue
- * @type: Type of the list node which needs to be updated
- * @buff_va: Virtual address of the buffer which needs to be dumped
- * @buff_size: Size of the buffer which needs to be dumped
- * @region_name: Dump will be collected with this name
- * @copy: Flag to indicate if the buffer data needs to be copied
- * to the intermidiate buffer allocated by kzmalloc.
- */
- void add_va_node_to_list(enum cvp_dump_type type, void *buff_va,
- u32 buff_size, const char *region_name, bool copy);
- /*
- * Registers subsystem to minidump driver
- * @name: Subsytem name which will get registered
- * @notf_blk_ptr: notifier block pointer.
- * notifier_call mentioned in this block will be triggered by
- * minidump driver in case of crash
- */
- void cvp_va_md_register(char *name, void* notf_blk_ptr);
- /* One function where we will register all the regions */
- void cvp_register_va_md_region(void);
- /*
- * Free up the memory allocated for different va_md_list
- * Do not forget to add code for any new list in this function
- */
- void cvp_free_va_md_list(void);
- /* Adds the HFI queues(both for CPU and DSP) to the global hfi list head*/
- void add_hfi_queue_to_va_md_list(void *device);
- /*Add queue header structures(both for CPU and DSP)
- to the global struct list head*/
- void add_queue_header_to_va_md_list(void *device);
- /*
- * Node structure for VA_MD Linked List
- * @list: linux kernel list implementation
- * @va_md_buff: Virtual address of the buffer which needs to be dumped
- * @va_md_buff_size: Size of the buffer which needs to be dumped
- * @region_name: Dump will be collected with this name
- * @copy: Flag to indicate if the buffer data needs to be copied
- * to the intermidiate buffer allocated by kzmalloc.
- */
- struct eva_va_md_queue
- {
- struct list_head list;
- void *va_md_buff;
- u32 va_md_buff_size;
- char region_name[MAX_REGION_NAME_LEN];
- bool copy;
- };
- #else
- static inline int md_eva_dump(const char* name, u64 virt, u64 phys, u64 size)
- {
- return 0;
- }
- static inline void add_va_node_to_list(enum cvp_dump_type type, void *buff_va,
- u32 buff_size, const char *region_name, bool copy)
- {
- }
- static inline void cvp_va_md_register(char *name, void* notf_blk_ptr)
- {
- }
- static inline void cvp_register_va_md_region(void)
- {
- }
- static inline void cvp_free_va_md_list(void)
- {
- }
- static inline void add_hfi_queue_to_va_md_list(void *device)
- {
- }
- static inline void add_queue_header_to_va_md_list(void *device)
- {
- }
- #endif /* End of CVP_MINIDUMP_ENABLED */
- #endif
|