Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ba930012 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "disp: msm: sde: add reg log minidump partition"

parents 061744eb ae9f6d8d
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -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)
@@ -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");
@@ -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");
+3 −0
Original line number Diff line number Diff line
@@ -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)
@@ -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
+7 −0
Original line number Diff line number Diff line
@@ -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;

@@ -240,6 +244,9 @@ struct sde_dbg_reglog *sde_reglog_init(void)
		return ERR_PTR(-ENOMEM);

	atomic64_set(&reglog->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;
}