Messages in this thread | | | Date | Sun, 15 Mar 2020 20:50:24 +0100 | From | Borislav Petkov <> | Subject | Re: [PATCH v2] EDAC: synopsys: Fix the wrong call of pinf->col parameter |
| |
On Fri, Feb 28, 2020 at 10:16:23AM +0800, Sherry Sun wrote: > Since ZynqMP platform call zynqmp_get_error_info() function to get ce/ue > information. In this function, pinf->col parameter is not used, this > parameter is only used by Zynq platforme in zynq_get_error_info(). So > here pinf->col should not be called and printed for ZynqMP, need remove > it.
Err, the interrupt handler intr_handler() calls the ->get_error_info() function pointer and then calls handle_error(). I.e, the same path ending in handle_error() is called on both: Zynq and ZynqMP, one through the interrupt and the other through the poller.
Because it looks like the interrupt support is only on ZynqMP? I'm looking at that DDR_ECC_INTR_SUPPORT thing.
If so, then you need to rename the interrupt handler to zynqmp_intr_handler().
And normal Zynq platform uses check_errors() which then calls handle_error().
So still not good enough: you probably "fixed" it on ZynqMP but broke it on Zynq because check_errors() calls ->get_error_info() which is zynq_get_error_info() and will have populated pinf->col.
You need to differentiate between Zynq and ZynqMP in handle_error() and issue the proper string depending on the platform.
AFAICT.
-- Regards/Gruss, Boris.
https://people.kernel.org/tglx/notes-about-netiquette
| |