soc: qcom: Use debug symbol driver APIs for symbol address
Use debug symbol driver for finding required symbol address information. These symbols are not exported from core kernel anymore for vendor module usage and debug symbol driver APIs provides symbol address for dumping. Change-Id: I86536a26a283cb929210b959110e9009ce0198af Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
#include <linux/sched/task.h>
|
#include <linux/sched/task.h>
|
||||||
#include <linux/suspend.h>
|
#include <linux/suspend.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
|
#include <linux/android_debug_symbols.h>
|
||||||
|
|
||||||
#ifdef CONFIG_QCOM_MINIDUMP_PANIC_DUMP
|
#ifdef CONFIG_QCOM_MINIDUMP_PANIC_DUMP
|
||||||
#include <linux/bits.h>
|
#include <linux/bits.h>
|
||||||
@@ -189,12 +190,18 @@ static void register_kernel_sections(void)
|
|||||||
{
|
{
|
||||||
struct md_region ksec_entry;
|
struct md_region ksec_entry;
|
||||||
char *data_name = "KDATABSS";
|
char *data_name = "KDATABSS";
|
||||||
const size_t static_size = __per_cpu_end - __per_cpu_start;
|
size_t static_size;
|
||||||
void __percpu *base = (void __percpu *)__per_cpu_start;
|
void __percpu *base;
|
||||||
unsigned int cpu;
|
unsigned int cpu;
|
||||||
|
void *_sdata, *__bss_stop;
|
||||||
|
|
||||||
|
_sdata = android_debug_symbol(ADS_SDATA);
|
||||||
|
__bss_stop = android_debug_symbol(ADS_BSS_END);
|
||||||
|
base = android_debug_symbol(ADS_PER_CPU_START);
|
||||||
|
static_size = (size_t)(android_debug_symbol(ADS_PER_CPU_END) - base);
|
||||||
|
|
||||||
strlcpy(ksec_entry.name, data_name, sizeof(ksec_entry.name));
|
strlcpy(ksec_entry.name, data_name, sizeof(ksec_entry.name));
|
||||||
ksec_entry.virt_addr = (uintptr_t)_sdata;
|
ksec_entry.virt_addr = (u64)_sdata;
|
||||||
ksec_entry.phys_addr = virt_to_phys(_sdata);
|
ksec_entry.phys_addr = virt_to_phys(_sdata);
|
||||||
ksec_entry.size = roundup((__bss_stop - _sdata), 4);
|
ksec_entry.size = roundup((__bss_stop - _sdata), 4);
|
||||||
if (msm_minidump_add_region(&ksec_entry) < 0)
|
if (msm_minidump_add_region(&ksec_entry) < 0)
|
||||||
@@ -552,9 +559,10 @@ static void register_irq_stack(void)
|
|||||||
u64 irq_stack_base;
|
u64 irq_stack_base;
|
||||||
struct md_region irq_sp_entry;
|
struct md_region irq_sp_entry;
|
||||||
u64 sp;
|
u64 sp;
|
||||||
|
u64 *irq_stack_ptr = android_debug_per_cpu_symbol(ADS_IRQ_STACK_PTR);
|
||||||
|
|
||||||
for_each_possible_cpu(cpu) {
|
for_each_possible_cpu(cpu) {
|
||||||
irq_stack_base = (u64)per_cpu(irq_stack_ptr, cpu);
|
irq_stack_base = (u64)per_cpu_ptr((void *)irq_stack_ptr, cpu);
|
||||||
if (is_vmap_stack) {
|
if (is_vmap_stack) {
|
||||||
irq_stack_pages_count = IRQ_STACK_SIZE / PAGE_SIZE;
|
irq_stack_pages_count = IRQ_STACK_SIZE / PAGE_SIZE;
|
||||||
sp = irq_stack_base & ~(PAGE_SIZE - 1);
|
sp = irq_stack_base & ~(PAGE_SIZE - 1);
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
#include <linux/android_debug_symbols.h>
|
||||||
#include <linux/soc/qcom/smem.h>
|
#include <linux/soc/qcom/smem.h>
|
||||||
#include <soc/qcom/minidump.h>
|
#include <soc/qcom/minidump.h>
|
||||||
#include "minidump_private.h"
|
#include "minidump_private.h"
|
||||||
@@ -437,8 +438,9 @@ static int msm_minidump_add_header(void)
|
|||||||
struct elf_shdr *shdr;
|
struct elf_shdr *shdr;
|
||||||
struct elf_phdr *phdr;
|
struct elf_phdr *phdr;
|
||||||
unsigned int strtbl_off, elfh_size, phdr_off;
|
unsigned int strtbl_off, elfh_size, phdr_off;
|
||||||
char *banner;
|
char *banner, *linux_banner;
|
||||||
|
|
||||||
|
linux_banner = android_debug_symbol(ADS_LINUX_BANNER);
|
||||||
/* Header buffer contains:
|
/* Header buffer contains:
|
||||||
* elf header, MAX_NUM_ENTRIES+4 of section and program elf headers,
|
* elf header, MAX_NUM_ENTRIES+4 of section and program elf headers,
|
||||||
* string table section and linux banner.
|
* string table section and linux banner.
|
||||||
|
Reference in New Issue
Block a user