kernel-hacking-2024-linux-s.../drivers/edac
Bryan Boatright 6b09ff9d78 drivers/edac: pci: broken parity regression
Using the EDAC code in kernel.org kernel version 2.6.23.8 I am seeing the
following problem:

    In the kernel there is a pci device attribute located in sysfs that is
    checked by the EDAC PCI scanning code. If that attribute is set,
    PCI parity/error scannining is skipped for that device. The attribute
    is:

            broken_parity_status

    as is located in /sys/devices/pci<XXX>/0000:XX:YY.Z directorys for
    PCI devices.

I don't think this check was actually implemented.  I have a misbehaved card
that reports a parity error every 1000 ms:

Nov 25 07:28:43 beta kernel: EDAC PCI: Master Data Parity Error on 0000:05:01.0
Nov 25 07:28:44 beta kernel: EDAC PCI: Master Data Parity Error on 0000:05:01.0
Nov 25 07:28:45 beta kernel: EDAC PCI: Master Data Parity Error on 0000:05:01.0

Setting that card's broken_parity_status bit did not mask the error:

echo "1" > /sys/bus/pci/devices/0000:05:01.0/broken_parity_status

I looked through the EDAC code and did not readily see any reference to
broken_parity_status at all (which makes sense based on the behavior I am
seeing).  I applied the following patch as a proof-of-concept and now EDAC's
PCI parity error reporting behaves as documented:

bryan

Good regression find, bryan. It used to work. sigh.
I added more logic to your patch, for more coverage of the error.

Doug T

Signed-off-by: Bryan Boatright <b1@omega71.com>
Signed-off-by: Doug Thompson <dougthompson@xmisson.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-07 08:42:23 -08:00
..
amd76x_edac.c
cell_edac.c drivers-edac: add Cell MC driver 2008-02-07 08:42:23 -08:00
e7xxx_edac.c
e752x_edac.c
edac_core.h drivers-edac: add Cell XDR memory types 2008-02-07 08:42:23 -08:00
edac_device.c drivers-edac: use round_jiffies_relative 2008-02-07 08:42:23 -08:00
edac_device_sysfs.c Kobject: convert drivers/* from kobject_unregister() to kobject_put() 2008-01-24 20:40:40 -08:00
edac_mc.c
edac_mc_sysfs.c drivers-edac: add Cell XDR memory types 2008-02-07 08:42:23 -08:00
edac_module.c Driver core: change sysdev classes to use dynamic kobject names 2008-01-24 20:40:40 -08:00
edac_module.h
edac_pci.c drivers-edac: use round_jiffies_relative 2008-02-07 08:42:23 -08:00
edac_pci_sysfs.c drivers/edac: pci: broken parity regression 2008-02-07 08:42:23 -08:00
edac_stub.c
i3000_edac.c drivers-edac: i3000 replace macros with functions 2008-02-07 08:42:23 -08:00
i5000_edac.c drivers/edac/: Spelling fixes 2008-02-03 17:12:34 +02:00
i82443bxgx_edac.c
i82860_edac.c
i82875p_edac.c
i82975x_edac.c
Kconfig drivers-edac: add marvell mv64x60 driver 2008-02-07 08:42:23 -08:00
Makefile drivers-edac: add marvell mv64x60 driver 2008-02-07 08:42:23 -08:00
mpc85xx_edac.c drivers-edac: add freescale mpc85xx driver 2008-02-07 08:42:23 -08:00
mpc85xx_edac.h drivers-edac: add freescale mpc85xx driver 2008-02-07 08:42:23 -08:00
mv64x60_edac.c drivers-edac: add marvell mv64x60 driver 2008-02-07 08:42:23 -08:00
mv64x60_edac.h drivers-edac: add marvell mv64x60 driver 2008-02-07 08:42:23 -08:00
pasemi_edac.c [POWERPC] pasemi: Broaden specific references to 1682M 2007-11-29 22:30:47 -06:00
r82600_edac.c