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

Commit 36e8b005 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge changes I15c09a92,I9c2e530b,I025037da,Ia1c445bb,I98921469 into msm-next

* changes:
  defconfig: Enable EDAC driver for SDM855
  ARM: dts: msm: Add EDAC DT node for SDM855
  drivers: edac: Add Cache Error Reporting driver for Kryo processors
  Documentation: EDAC: Add documentation for Kryo binding
  edac: Allow panic on correctable errors (CE).
parents 75bbf9ab 5f269bd2
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
* Kryo EDAC node

Kryo EDAC node is defined to describe on-chip error detection and correction
for the Kryo core.

Kryo will report all SBE and DBE found in L1/L2/L3/SCU caches in two registers:
	ERRXSTATUS - Error Record Primary Status Register
	ERRXMISC0 - Error Record Miscellaneous Register

Current implementation of Kryo ECC mechanism is based on interrupts.

The following section describes the DT node binding for kryo_cpu_erp.

Required properties:
- compatible		: Shall be "arm,arm64-kryo-cpu-erp".
- interrupts		: Interrupt-specifier for L1/L2, L3/SCU error IRQ(s)
- interrupt-names	: Descriptive names of the interrupts

Example:

	kryo-erp {
		compatible = "arm,arm64-kryo-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";
	};
+13 −0
Original line number Diff line number Diff line
@@ -348,6 +348,19 @@
		#clock-cells = <1>;
		#reset-cells = <1>;
	};

	kryo-erp {
		compatible = "arm,arm64-kryo-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";
	};
};

&emac_gdsc {
+5 −0
Original line number Diff line number Diff line
@@ -287,6 +287,10 @@ CONFIG_MMC_TEST=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_MSM=y
CONFIG_EDAC=y
CONFIG_EDAC_KRYO_ARM64=y
CONFIG_EDAC_KRYO_ARM64_PANIC_ON_CE=y
CONFIG_EDAC_KRYO_ARM64_PANIC_ON_UE=y
CONFIG_RTC_CLASS=y
CONFIG_DMADEVICES=y
CONFIG_UIO=y
@@ -298,6 +302,7 @@ CONFIG_QCOM_SCM=y
CONFIG_EXTCON=y
CONFIG_IIO=y
CONFIG_PWM=y
CONFIG_RAS=y
CONFIG_ANDROID=y
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_EXT2_FS=y
+3 −0
Original line number Diff line number Diff line
@@ -294,6 +294,9 @@ CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_MSM=y
CONFIG_EDAC=y
CONFIG_EDAC_KRYO_ARM64=y
CONFIG_EDAC_KRYO_ARM64_PANIC_ON_CE=y
CONFIG_EDAC_KRYO_ARM64_PANIC_ON_UE=y
CONFIG_RTC_CLASS=y
CONFIG_DMADEVICES=y
CONFIG_UIO=y
+22 −0
Original line number Diff line number Diff line
/* Copyright (c) 2017, 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_KRYO_EDAC_H
#define ASM_KRYO_EDAC_H

#if defined(CONFIG_EDAC_KRYO_ARM64)
void kryo_poll_cache_errors(void *info);
#else
static inline void kryo_poll_cache_errors(void *info) { }
#endif

#endif
Loading