qcacmn: Add QDF infra for the minidump feature
Add QDF infra for minidump feature and define the minidump_log and minidump_remove functions. Change-Id: I875b991b7a7d9295f8b2acd95a7551a747ec962c CRs-Fixed: 2856193
This commit is contained in:

committed by
snandini

parent
17660198d7
commit
20380cee21
@@ -1600,19 +1600,23 @@ int qdf_sprint_symbol(char *buffer, void *addr);
|
||||
* @name: String to identify this entry
|
||||
*/
|
||||
static inline
|
||||
void qdf_minidump_log(void *start_addr, size_t size, const char *name)
|
||||
void qdf_minidump_log(void *start_addr,
|
||||
const size_t size, const char *name)
|
||||
{
|
||||
__qdf_minidump_log(start_addr, size, name);
|
||||
}
|
||||
|
||||
/**
|
||||
* qdf_minidump_remove() - Remove memory address from minidump
|
||||
* @addr: Start address of the memory previously added
|
||||
* @start_addr: Start address of the memory previously added
|
||||
* @size: Size in bytes
|
||||
* @name: String to identify this entry
|
||||
*/
|
||||
static inline
|
||||
void qdf_minidump_remove(void *addr)
|
||||
void qdf_minidump_remove(void *start_addr,
|
||||
const size_t size, const char *name)
|
||||
{
|
||||
__qdf_minidump_remove(addr);
|
||||
__qdf_minidump_remove(start_addr, size, name);
|
||||
}
|
||||
|
||||
#endif /* __QDF_TRACE_H */
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -32,6 +32,9 @@
|
||||
#ifdef CONFIG_QCA_MINIDUMP
|
||||
#include <linux/minidump_tlv.h>
|
||||
#endif
|
||||
#ifdef CONFIG_QCOM_MINIDUMP
|
||||
#include <soc/qcom/minidump.h>
|
||||
#endif
|
||||
|
||||
#if !defined(__printf)
|
||||
#define __printf(a, b)
|
||||
@@ -468,14 +471,48 @@ __qdf_minidump_log(void *start_addr, size_t size, const char *name)
|
||||
}
|
||||
|
||||
static inline void
|
||||
__qdf_minidump_remove(void *addr)
|
||||
__qdf_minidump_remove(void *addr, size_t size, const char *name)
|
||||
{
|
||||
minidump_remove_segments((const uintptr_t)addr);
|
||||
}
|
||||
#elif defined(CONFIG_QCOM_MINIDUMP)
|
||||
static inline void
|
||||
__qdf_minidump_log(void *start_addr, const size_t size,
|
||||
const char *name)
|
||||
{
|
||||
struct md_region md_entry;
|
||||
int ret;
|
||||
|
||||
snprintf(md_entry.name, sizeof(md_entry.name), name);
|
||||
md_entry.virt_addr = (uintptr_t)start_addr;
|
||||
md_entry.phys_addr = virt_to_phys(start_addr);
|
||||
md_entry.size = size;
|
||||
ret = msm_minidump_add_region(&md_entry);
|
||||
if (ret < 0) {
|
||||
QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_QDF,
|
||||
"%s: failed to log %pK (%s)\n",
|
||||
__func__, start_addr, name);
|
||||
}
|
||||
}
|
||||
|
||||
static inline void
|
||||
__qdf_minidump_remove(void *start_addr, const size_t size,
|
||||
const char *name)
|
||||
{
|
||||
struct md_region md_entry;
|
||||
|
||||
snprintf(md_entry.name, sizeof(md_entry.name), name);
|
||||
md_entry.virt_addr = (uintptr_t)start_addr;
|
||||
md_entry.phys_addr = virt_to_phys(start_addr);
|
||||
md_entry.size = size;
|
||||
msm_minidump_remove_region(&md_entry);
|
||||
}
|
||||
#else
|
||||
static inline void
|
||||
__qdf_minidump_log(void *start_addr, size_t size, const char *name) {}
|
||||
__qdf_minidump_log(void *start_addr,
|
||||
const size_t size, const char *name) {}
|
||||
static inline void
|
||||
__qdf_minidump_remove(void *addr) {}
|
||||
__qdf_minidump_remove(void *start_addr,
|
||||
const size_t size, const char *name) {}
|
||||
#endif
|
||||
#endif /* __I_QDF_TRACE_H */
|
||||
|
Reference in New Issue
Block a user