RE: [PATCH v6 2/2] EDAC/zynqmp: Add EDAC support for Xilinx ZynqMP OCM

From: Potthuri, Sai Krishna
Date: Wed Nov 09 2022 - 06:22:05 EST


Hi Boris,

> -----Original Message-----
> From: Borislav Petkov <bp@xxxxxxxxx>
> Sent: Wednesday, November 9, 2022 12:09 AM
> To: Potthuri, Sai Krishna <sai.krishna.potthuri@xxxxxxx>
> Cc: Rob Herring <robh+dt@xxxxxxxxxx>; Krzysztof Kozlowski
> <krzysztof.kozlowski+dt@xxxxxxxxxx>; Michal Simek
> <michal.simek@xxxxxxxxxx>; Mauro Carvalho Chehab
> <mchehab@xxxxxxxxxx>; Tony Luck <tony.luck@xxxxxxxxx>; James Morse
> <james.morse@xxxxxxx>; Robert Richter <rric@xxxxxxxxxx>;
> devicetree@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx; linux-edac@xxxxxxxxxxxxxxx;
> saikrishna12468@xxxxxxxxx; git (AMD-Xilinx) <git@xxxxxxx>; Datta,
> Shubhrajyoti <shubhrajyoti.datta@xxxxxxx>; kernel test robot
> <lkp@xxxxxxxxx>
> Subject: Re: [PATCH v6 2/2] EDAC/zynqmp: Add EDAC support for Xilinx
> ZynqMP OCM
>
> On Wed, Nov 02, 2022 at 12:36:55PM +0530, Sai Krishna Potthuri wrote:
> > Add EDAC support for Xilinx ZynqMP OCM Controller, this driver
>
> So a while ago you said that this driver is for the on chip memory controller.
> Is it possible for such a system to have another memory controller too for
> which another EDAC driver gets loaded?
>
> Because the EDAC core - at least on x86 - assumes that a single driver runs on
> the system and I don't think I've ever had the case where we need multiple
> drivers. And in such case to audit it for concurrency issues.
>
> So I guess the question is, can a system have zynqmp_ocm_edac and say,
> synopsys_edac or some other EDAC driver loaded at the same time?
Yes, we have this scenario on Xilinx ZynqMP platform where we have both
the drivers (zynqmp_ocm_edac - OCM Controller and synopsys_edac - DDR
Memory Controller) probed at the same time.
We tested this scenario on our platform (arm based), and we see both the
controllers getting probed and tested by injecting errors.

Probe log for both the controllers:
xilinx-zcu102-20222:~$ dmesg | grep edac
[ 1.642225] EDAC DEBUG: edac_mc_sysfs_init: device mc created
[ 2.151781] EDAC DEBUG: edac_mc_alloc: allocating 2272 bytes for mci data (1 ranks, 1 csrows/channels)
[ 2.151862] EDAC DEBUG: edac_mc_add_mc_with_groups:
[ 2.151912] EDAC DEBUG: edac_create_sysfs_mci_device: device mc0 created
[ 2.151945] EDAC DEBUG: edac_create_dimm_object: device rank0 created at location csrow 0 channel 0
[ 2.151979] EDAC DEBUG: edac_create_csrow_object: device csrow0 created
[ 2.152020] EDAC MC0: Giving out device to module 1 controller synps_ddr_controller: DEV synps_edac (INTERRUPT)
[ 2.161952] EDAC DEBUG: edac_device_register_sysfs_main_kobj:
[ 2.162035] EDAC DEBUG: edac_device_add_device:
[ 2.162039] EDAC DEBUG: find_edac_device_by_dev:
[ 2.162043] EDAC DEBUG: edac_device_create_sysfs: idx=0
[ 2.162050] EDAC DEBUG: edac_device_create_instances:
[ 2.162065] EDAC DEVICE0: Giving out device to module zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT)

Regards
Sai Krishna