Loading msm/sde_dbg.c +18 −0 Original line number Diff line number Diff line Loading @@ -300,6 +300,18 @@ struct sde_dbg_evtlog *sde_dbg_base_evtlog; /* sde_dbg_base_reglog - global pointer to main sde reg log for macro use */ struct sde_dbg_reglog *sde_dbg_base_reglog; u32 sde_mini_dump_add_region(const char *name, u32 size, void *virt_addr) { struct md_region md_entry; strlcpy(md_entry.name, name, sizeof(md_entry.name)); md_entry.virt_addr = (uintptr_t)virt_addr; md_entry.phys_addr = virt_to_phys(virt_addr); md_entry.size = size; return msm_minidump_add_region(&md_entry); } static void _sde_debug_bus_xbar_dump(void __iomem *mem_base, struct sde_debug_bus_entry *entry, u32 val, u32 block_id_off, u32 test_id_off) Loading Loading @@ -856,6 +868,9 @@ static void _sde_dbg_dump_sde_dbg_bus(struct sde_dbg_sde_debug_bus *bus) dev_info(sde_dbg_base.dev, "%s: start_addr:0x%pK len:0x%x\n", __func__, dump_addr, list_size); if (sde_mini_dump_add_region("sde_dbgbus", list_size, *dump_mem) < 0) pr_err("minidump add sde debug bus failed\n"); } else { in_mem = false; pr_err("dump_mem: allocation fails\n"); Loading Loading @@ -986,6 +1001,9 @@ static void _sde_dbg_dump_vbif_dbg_bus(struct sde_dbg_vbif_debug_bus *bus) dev_info(sde_dbg_base.dev, "%s: start_addr:0x%pK len:0x%x\n", __func__, dump_addr, list_size); if (sde_mini_dump_add_region("vbif_dbgbus", list_size, *dump_mem) < 0) pr_err("minidump add vbif debug bus failed\n"); } else { in_mem = false; pr_err("dump_mem: allocation fails\n"); Loading msm/sde_dbg.h +3 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ #include <stdarg.h> #include <linux/debugfs.h> #include <linux/list.h> #include <soc/qcom/minidump.h> /* select an uncommon hex value for the limiter */ #define SDE_EVTLOG_DATA_LIMITER (0xC0DEBEEF) Loading Loading @@ -248,6 +249,8 @@ extern struct sde_dbg_reglog *sde_dbg_base_reglog; #define SDE_DBG_CTRL(...) sde_dbg_ctrl(__func__, ##__VA_ARGS__, \ SDE_DBG_DUMP_DATA_LIMITER) u32 sde_mini_dump_add_region(const char *name, u32 size, void *virt_addr); /** * sde_evtlog_init - allocate a new event log object * Returns: evtlog or -ERROR Loading msm/sde_dbg_evtlog.c +7 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,10 @@ struct sde_dbg_evtlog *sde_evtlog_init(void) if (!evtlog) return ERR_PTR(-ENOMEM); if (sde_mini_dump_add_region("evt_log", sizeof(*evtlog), evtlog) < 0) pr_err("minidump add region failed for evtlog\n"); spin_lock_init(&evtlog->spin_lock); evtlog->enable = SDE_EVTLOG_DEFAULT_ENABLE; Loading @@ -240,6 +244,9 @@ struct sde_dbg_reglog *sde_reglog_init(void) return ERR_PTR(-ENOMEM); atomic64_set(®log->curr, 0); if (sde_mini_dump_add_region("reg_log", sizeof(*reglog), reglog) < 0) pr_err("minidump add region failed for reglog\n"); return reglog; } Loading Loading
msm/sde_dbg.c +18 −0 Original line number Diff line number Diff line Loading @@ -300,6 +300,18 @@ struct sde_dbg_evtlog *sde_dbg_base_evtlog; /* sde_dbg_base_reglog - global pointer to main sde reg log for macro use */ struct sde_dbg_reglog *sde_dbg_base_reglog; u32 sde_mini_dump_add_region(const char *name, u32 size, void *virt_addr) { struct md_region md_entry; strlcpy(md_entry.name, name, sizeof(md_entry.name)); md_entry.virt_addr = (uintptr_t)virt_addr; md_entry.phys_addr = virt_to_phys(virt_addr); md_entry.size = size; return msm_minidump_add_region(&md_entry); } static void _sde_debug_bus_xbar_dump(void __iomem *mem_base, struct sde_debug_bus_entry *entry, u32 val, u32 block_id_off, u32 test_id_off) Loading Loading @@ -856,6 +868,9 @@ static void _sde_dbg_dump_sde_dbg_bus(struct sde_dbg_sde_debug_bus *bus) dev_info(sde_dbg_base.dev, "%s: start_addr:0x%pK len:0x%x\n", __func__, dump_addr, list_size); if (sde_mini_dump_add_region("sde_dbgbus", list_size, *dump_mem) < 0) pr_err("minidump add sde debug bus failed\n"); } else { in_mem = false; pr_err("dump_mem: allocation fails\n"); Loading Loading @@ -986,6 +1001,9 @@ static void _sde_dbg_dump_vbif_dbg_bus(struct sde_dbg_vbif_debug_bus *bus) dev_info(sde_dbg_base.dev, "%s: start_addr:0x%pK len:0x%x\n", __func__, dump_addr, list_size); if (sde_mini_dump_add_region("vbif_dbgbus", list_size, *dump_mem) < 0) pr_err("minidump add vbif debug bus failed\n"); } else { in_mem = false; pr_err("dump_mem: allocation fails\n"); Loading
msm/sde_dbg.h +3 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ #include <stdarg.h> #include <linux/debugfs.h> #include <linux/list.h> #include <soc/qcom/minidump.h> /* select an uncommon hex value for the limiter */ #define SDE_EVTLOG_DATA_LIMITER (0xC0DEBEEF) Loading Loading @@ -248,6 +249,8 @@ extern struct sde_dbg_reglog *sde_dbg_base_reglog; #define SDE_DBG_CTRL(...) sde_dbg_ctrl(__func__, ##__VA_ARGS__, \ SDE_DBG_DUMP_DATA_LIMITER) u32 sde_mini_dump_add_region(const char *name, u32 size, void *virt_addr); /** * sde_evtlog_init - allocate a new event log object * Returns: evtlog or -ERROR Loading
msm/sde_dbg_evtlog.c +7 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,10 @@ struct sde_dbg_evtlog *sde_evtlog_init(void) if (!evtlog) return ERR_PTR(-ENOMEM); if (sde_mini_dump_add_region("evt_log", sizeof(*evtlog), evtlog) < 0) pr_err("minidump add region failed for evtlog\n"); spin_lock_init(&evtlog->spin_lock); evtlog->enable = SDE_EVTLOG_DEFAULT_ENABLE; Loading @@ -240,6 +244,9 @@ struct sde_dbg_reglog *sde_reglog_init(void) return ERR_PTR(-ENOMEM); atomic64_set(®log->curr, 0); if (sde_mini_dump_add_region("reg_log", sizeof(*reglog), reglog) < 0) pr_err("minidump add region failed for reglog\n"); return reglog; } Loading