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

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

Merge "drivers: edac: Add Cache Error Reporting driver for Kryo3xx processors" into msm-4.8

parents 4cb7303f ddc44249
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -519,6 +519,19 @@
			reg = <0x10 8>;
		};
	};

	kryo3xx-erp {
		compatible = "arm,arm64-kryo3xx-cpu-erp";
		interrupts = <1 6 4>,
			     <1 7 4>,
			     <0 34 4>,
			     <0 35 4>;

		interrupt-names = "l1-l2-faultirq",
				  "l1-l2-errirq",
				  "l3-scu-errirq",
				  "l3-scu-faultirq";
	};
};

&pcie_0_gdsc {
+22 −0
Original line number Diff line number Diff line
/* Copyright (c) 2016, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef ASM_KRYO3xx_EDAC_H
#define ASM_KRYO3xx_EDAC_H

#if defined(CONFIG_EDAC_KRYO3XX_ARM64)
void kryo3xx_poll_cache_errors(void *info);
#else
static inline void kryo3xx_poll_cache_errors(void *info) { }
#endif

#endif
+2 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@
#include <asm/system_misc.h>
#include <asm/pgtable.h>
#include <asm/tlbflush.h>
#include <asm/kryo3xx-arm64-edac.h>

static const char *fault_name(unsigned int esr);

@@ -477,6 +478,7 @@ static int do_alignment_fault(unsigned long addr, unsigned int esr,
 */
static int do_bad(unsigned long addr, unsigned int esr, struct pt_regs *regs)
{
	kryo3xx_poll_cache_errors(NULL);
	return 1;
}

+41 −0
Original line number Diff line number Diff line
@@ -413,6 +413,47 @@ config EDAC_SYNOPSYS
	  Support for error detection and correction on the Synopsys DDR
	  memory controller.

config EDAC_KRYO3XX_ARM64
	depends on EDAC_MM_EDAC && ARM64
	tristate "ARM KRYO3XX Gold and Silver L1/L2/L3/SCU Caches"
	help
	   Support for error detection and correction on the
	   Kryo3xx Gold and Silver CPUs. Reports errors caught by Kryo3xx
	   ECC mechanism.
	   For debugging issues having to do with stability and overall system
	   health, you should probably say 'Y' here.

config EDAC_KRYO3XX_ARM64_POLL
	depends on EDAC_KRYO3XX_ARM64
	bool "Poll on kryo3xx ECC registers - kryo3xx"
	help
	   This option chooses whether or not you want to poll on the Kryo3xx
	   ECC registers. When this is enabled, the polling rate can be set as
	   a module parameter. By default, it will call the polling function
	   every second.
	   This option should only be used if the associated interrupt lines
	   are not enabled.

config EDAC_KRYO3XX_ARM64_PANIC_ON_CE
	depends on EDAC_KRYO3XX_ARM64
	bool "Panic on correctable errors - kryo3xx"
	help
	   Forcibly cause a kernel panic if an correctable error (CE) is
	   detected, even though the error is (by definition) correctable and
	   would otherwise result in no adverse system effects. This can reduce
	   debugging times on hardware which may be operating at voltages or
	   frequencies outside normal specification.
	   For production builds, you should definitely say 'N' here.

config EDAC_KRYO3XX_ARM64_PANIC_ON_UE
	depends on EDAC_KRYO3XX_ARM64
	bool "Panic on uncorrectable errors - kryo3xx"
	help
	   Forcibly cause a kernel panic if an uncorrectable error (UE) is
	   detected. This can reduce debugging times on hardware which may be
	   operating at voltages or frequencies outside normal specification.
	   For production builds, you should probably say 'N' here.

config EDAC_XGENE
	tristate "APM X-Gene SoC"
	depends on EDAC_MM_EDAC && (ARM64 || COMPILE_TEST)
+1 −0
Original line number Diff line number Diff line
@@ -69,5 +69,6 @@ obj-$(CONFIG_EDAC_OCTEON_LMC) += octeon_edac-lmc.o
obj-$(CONFIG_EDAC_OCTEON_PCI)		+= octeon_edac-pci.o

obj-$(CONFIG_EDAC_ALTERA)		+= altera_edac.o
obj-$(CONFIG_EDAC_KRYO3XX_ARM64)	+= kryo3xx_arm64_edac.o
obj-$(CONFIG_EDAC_SYNOPSYS)		+= synopsys_edac.o
obj-$(CONFIG_EDAC_XGENE)		+= xgene_edac.o
Loading