
merged tip source code from eva-kernel.lnx.1.0, and verify the promotion flow. Change-Id: I031508fd8a23995a166506f3d190e5e228eb13c2 Signed-off-by: Yu SI <ysi@codeaurora.org>
125 satır
3.2 KiB
C
125 satır
3.2 KiB
C
/* 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
|