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

Commit 15771ddc authored by Kyle Yan's avatar Kyle Yan Committed by Gerrit - the friendly Code Review server
Browse files

Merge "arm64: Add TLB conflict fault handler" into msm-4.8

parents 45659378 dbb2ce9b
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@
#include <asm/pgtable.h>
#include <asm/tlbflush.h>
#include <asm/kryo3xx-arm64-edac.h>
#include <soc/qcom/scm.h>

static const char *fault_name(unsigned int esr);

@@ -445,6 +446,23 @@ static int __kprobes do_page_fault(unsigned long addr, unsigned int esr,
	return 0;
}

static int do_tlb_conf_fault(unsigned long addr,
				unsigned int esr,
				struct pt_regs *regs)
{
#define SCM_TLB_CONFLICT_CMD	0x1B
	struct scm_desc desc = {
		.args[0] = addr,
		.arginfo = SCM_ARGS(1),
	};

	if (scm_call2_atomic(SCM_SIP_FNID(SCM_SVC_MP, SCM_TLB_CONFLICT_CMD),
						&desc))
		return 1;

	return 0;
}

/*
 * First Level Translation Fault Handler
 *
@@ -543,7 +561,7 @@ static const struct fault_info {
	{ do_bad,		SIGBUS,  0,		"unknown 45"			},
	{ do_bad,		SIGBUS,  0,		"unknown 46"			},
	{ do_bad,		SIGBUS,  0,		"unknown 47"			},
	{ do_bad,		SIGBUS,  0,		"TLB conflict abort"		},
	{ do_tlb_conf_fault,	SIGBUS,  0,		"TLB conflict abort"		},
	{ do_bad,		SIGBUS,  0,		"unknown 49"			},
	{ do_bad,		SIGBUS,  0,		"unknown 50"			},
	{ do_bad,		SIGBUS,  0,		"unknown 51"			},