- A new EDAC driver for Xilinx's Versal integrated memory controller

-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmU7igwACgkQEsHwGGHe
 VUowxg/+OB0V3j93bL9TCakU8wa/yoe8nMZZYdnnPUadeC8nKzoW8hblxkLy5b25
 3WF8e+CtcergGNqNhPbl+1ozkZCtrVs71JuWRW/TASNoW66nFPJhWtqSwg7TJuMl
 PPkwodDDKznxTPpGshpw2S1ZR8mU02ts5aws5js8+VuVb8EcEGX5wXdW93zf3Ei8
 ZtiSJbxh8Wc4gtqq8iMqXPDiMCoC+oyZ1Y1SQu0h1ZGE5ui2iLMNcagwB2dmQP3q
 NJYDkZK2aNkPmhqzkZsxtIFzDpXLMzJwgTYqd6Szk3wZuB0K/3rvKq2Eb5dbIzlw
 X4z6Y1KdhQnQi1Q6EmE6w1qdrrVGcwARRW1z5exQ9ZS3xqQ9OPBS4IlU+Z+2msTJ
 1rL81PFgta6b482N87sxeekPt6Y7DMZ+9/UvAwo7YnNq9W+/Q7l/UZXt7DqBjV2G
 ddyCXHgdWH/365w+EGWLt6tnoQjcXIeA7CJpCJZ/ebpFTRJ43qYj1DhJfcDtIj5L
 F0Ai9/s/TjnxY8V6sGLn+OlL/MzmNCIioPzhBg1YKcbH3sNO30BE/oAUPgIIqFtl
 k56bMXO0N2Sn0OjkFpkIGJtDsUW6VRnpmL53CvdHCZUKp0aSRybsL5AlCsHNaCsb
 p4KVvP2ONzscO+DPf5dOz2/kVZjPZneMyy/5CvRaNWeOkhx/FO0=
 =3V+h
 -----END PGP SIGNATURE-----

Merge tag 'edac_updates_for_v6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras

Pull EDAC updates from Borislav Petkov:

 - A new EDAC driver for Xilinx's Versal integrated memory controller

* tag 'edac_updates_for_v6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras:
  EDAC/versal: Add a Xilinx Versal memory controller driver
  dt-bindings: memory-controllers: Add support for Xilinx Versal EDAC for DDRMC
This commit is contained in:
Linus Torvalds 2023-10-30 11:45:36 -10:00
commit 66cc8838c7
6 changed files with 1158 additions and 0 deletions

View File

@ -0,0 +1,57 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/memory-controllers/xlnx,versal-ddrmc-edac.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Xilinx Versal DDRMC (Integrated DDR Memory Controller)
maintainers:
- Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
- Sai Krishna Potthuri <sai.krishna.potthuri@amd.com>
description:
The integrated DDR Memory Controllers (DDRMCs) support both DDR4 and LPDDR4/
4X memory interfaces. Versal DDR memory controller has an optional ECC support
which correct single bit ECC errors and detect double bit ECC errors.
properties:
compatible:
const: xlnx,versal-ddrmc
reg:
items:
- description: DDR Memory Controller registers
- description: NOC registers corresponding to DDR Memory Controller
reg-names:
items:
- const: base
- const: noc
interrupts:
maxItems: 1
required:
- compatible
- reg
- reg-names
- interrupts
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
bus {
#address-cells = <2>;
#size-cells = <2>;
memory-controller@f6150000 {
compatible = "xlnx,versal-ddrmc";
reg = <0x0 0xf6150000 0x0 0x2000>, <0x0 0xf6070000 0x0 0x20000>;
reg-names = "base", "noc";
interrupt-parent = <&gic>;
interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
};
};

View File

@ -23738,6 +23738,13 @@ F: Documentation/devicetree/bindings/media/xilinx/
F: drivers/media/platform/xilinx/
F: include/uapi/linux/xilinx-v4l2-controls.h
XILINX VERSAL EDAC DRIVER
M: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
M: Sai Krishna Potthuri <sai.krishna.potthuri@amd.com>
S: Maintained
F: Documentation/devicetree/bindings/memory-controllers/xlnx,versal-ddrmc-edac.yaml
F: drivers/edac/versal_edac.c
XILINX WATCHDOG DRIVER
M: Srinivas Neeli <srinivas.neeli@amd.com>
R: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>

View File

@ -561,4 +561,16 @@ config EDAC_NPCM
error detection (in-line ECC in which a section 1/8th of the memory
device used to store data is used for ECC storage).
config EDAC_VERSAL
tristate "Xilinx Versal DDR Memory Controller"
depends on ARCH_ZYNQMP || COMPILE_TEST
help
Support for error detection and correction on the Xilinx Versal DDR
memory controller.
Report both single bit errors (CE) and double bit errors (UE).
Support injecting both correctable and uncorrectable errors
for debugging purposes.
endif # EDAC

View File

@ -86,3 +86,4 @@ obj-$(CONFIG_EDAC_BLUEFIELD) += bluefield_edac.o
obj-$(CONFIG_EDAC_DMC520) += dmc520_edac.o
obj-$(CONFIG_EDAC_NPCM) += npcm_edac.o
obj-$(CONFIG_EDAC_ZYNQMP) += zynqmp_edac.o
obj-$(CONFIG_EDAC_VERSAL) += versal_edac.o

1069
drivers/edac/versal_edac.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -100,6 +100,18 @@
#define SD_ITAPDLY 0xFF180314
#define SD_OTAPDLYSEL 0xFF180318
/**
* XPM_EVENT_ERROR_MASK_DDRMC_CR: Error event mask for DDRMC MC Correctable ECC Error.
*/
#define XPM_EVENT_ERROR_MASK_DDRMC_CR BIT(18)
/**
* XPM_EVENT_ERROR_MASK_DDRMC_NCR: Error event mask for DDRMC MC Non-Correctable ECC Error.
*/
#define XPM_EVENT_ERROR_MASK_DDRMC_NCR BIT(19)
#define XPM_EVENT_ERROR_MASK_NOC_NCR BIT(13)
#define XPM_EVENT_ERROR_MASK_NOC_CR BIT(12)
enum pm_api_cb_id {
PM_INIT_SUSPEND_CB = 30,
PM_ACKNOWLEDGE_CB = 31,