linux/drivers/edac
Scott Wood 666db563d3 EDAC, mpc85xx: Make mpc85xx-pci-edac a platform device
Originally the mpc85xx-pci-edac driver bound directly to the PCI
controller node.

Commit

  905e75c46d ("powerpc/fsl-pci: Unify pci/pcie initialization code")

turned the PCI controller code into a platform device. Since we can't
have two drivers binding to the same device, the EDAC code was changed
to be called into as a library-style submodule. However, this doesn't
work if the EDAC driver is built as a module.

Commit

  8d8fcba6d1ea ("EDAC: Rip out the edac_subsys reference counting")

exposed another problem with this approach -- mpc85xx_pci_err_probe()
was being called in the same early boot phase that the PCI controller
is initialized, rather than in the device_initcall phase that the EDAC
layer expects. This caused a crash on boot.

To fix this, the PCI controller code now creates a child platform device
specifically for EDAC, which the mpc85xx-pci-edac driver binds to.

Reported-by: Michael Ellerman <mpe@ellerman.id.au>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Scott Wood <scottwood@freescale.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Daniel Axtens <dja@axtens.net>
Cc: Doug Thompson <dougthompson@xmission.com>
Cc: Jia Hongtao <B38951@freescale.com>
Cc: Jiri Kosina <jkosina@suse.com>
Cc: Kim Phillips <kim.phillips@freescale.com>
Cc: linux-edac <linux-edac@vger.kernel.org>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: Masanari Iida <standby24x7@gmail.com>
Cc: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Rob Herring <robh@kernel.org>
Link: http://lkml.kernel.org/r/1449774432-18593-1-git-send-email-scottwood@freescale.com
Signed-off-by: Borislav Petkov <bp@suse.de>
2015-12-11 16:56:16 +01:00
..
altera_edac.c EDAC, altera: Convert to debugfs wrappers 2015-09-22 18:20:56 +02:00
altera_edac.h EDAC, altera: SoCFPGA EDAC should not look for ECC_CORR_EN 2015-10-15 11:57:23 +02:00
amd64_edac_dbg.c EDAC: amd64: Use static attribute groups 2015-02-23 13:08:09 +01:00
amd64_edac_inj.c EDAC: amd64: Use static attribute groups 2015-02-23 13:08:09 +01:00
amd64_edac.c Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-11-03 17:51:33 -08:00
amd64_edac.h EDAC, amd64_edac: Update copyright and remove changelog 2015-09-29 13:41:04 +02:00
amd76x_edac.c EDAC: Remove DEFINE_PCI_DEVICE_TABLE macro 2013-12-06 10:23:41 +01:00
amd8111_edac.c amd8111_edac: Fix leaks in probe error paths 2014-02-25 10:09:09 +01:00
amd8111_edac.h
amd8131_edac.c edac: Drop __DATE__ usage 2011-04-19 00:23:22 +02:00
amd8131_edac.h tree-wide: fix comment/printk typos 2010-11-01 15:38:34 -04:00
cell_edac.c edac: drop owner assignment from platform_drivers 2014-10-20 16:20:30 +02:00
cpc925_edac.c cpc925_edac: Report UE events properly 2014-10-22 22:58:45 +02:00
debugfs.c EDAC: Use edac_debugfs_remove_recursive() 2015-10-14 18:50:32 +02:00
e7xxx_edac.c e7xxx_edac: Report CE events properly 2014-10-22 22:59:00 +02:00
e752x_edac.c e752x_edac: Drop pvt->bridge_ck 2014-02-25 10:01:30 +01:00
edac_core.h EDAC: Carve out debugfs functionality 2015-09-22 12:29:46 +02:00
edac_device_sysfs.c edac: Convert debugfX to edac_dbg(X, 2012-06-11 13:23:49 -03:00
edac_device.c EDAC: Don't try to cancel workqueue when it's never setup 2014-01-10 15:57:36 +01:00
edac_mc_sysfs.c EDAC: Use edac_debugfs_remove_recursive() 2015-10-14 18:50:32 +02:00
edac_mc.c EDAC: Fix PAGES_TO_MiB macro misuse 2015-10-22 22:57:30 +02:00
edac_module.c EDAC: Properly unwind on failure path in edac_init() 2015-02-23 13:13:07 +01:00
edac_module.h EDAC: Add debugfs wrappers 2015-09-22 18:10:22 +02:00
edac_pci_sysfs.c EDAC, pci_sysfs: remove unneccessary ifdef around entire file 2014-11-11 18:17:57 +01:00
edac_pci.c EDAC, pci: Remove old disabled code 2015-11-18 14:00:05 +01:00
edac_stub.c EDAC, edac_stub: Drop arch-specific include 2015-05-29 22:01:00 +02:00
ghes_edac.c EDAC: Fix PAGES_TO_MiB macro misuse 2015-10-22 22:57:30 +02:00
highbank_l2_edac.c edac, highbank: Improve and unify naming 2013-11-04 17:01:07 -06:00
highbank_mc_edac.c EDAC: Constify of_device_id array 2015-03-20 17:50:07 +01:00
i7core_edac.c x86/mce: Kill drain_mcelog_buffer() 2015-08-13 10:12:52 +02:00
i3000_edac.c EDAC: Delete unnecessary check before calling pci_dev_put() 2014-11-19 16:33:48 +01:00
i3200_edac.c move io-64-nonatomic*.h out of asm-generic 2015-10-15 00:21:07 +02:00
i5000_edac.c EDAC: Remove DEFINE_PCI_DEVICE_TABLE macro 2013-12-06 10:23:41 +01:00
i5100_edac.c EDAC, i5100: Convert to debugfs wrappers 2015-09-22 18:21:12 +02:00
i5400_edac.c Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2014-04-04 09:50:07 -07:00
i7300_edac.c Linux 3.14-rc5 2014-03-11 06:55:49 -03:00
i82443bxgx_edac.c EDAC, i82443bxgx: Don't export static symbol 2015-03-11 20:39:15 +01:00
i82860_edac.c EDAC: Delete unnecessary checks before pci_dev_put() 2015-02-23 13:06:23 +01:00
i82875p_edac.c EDAC: Delete unnecessary checks before pci_dev_put() 2015-02-23 13:06:23 +01:00
i82975x_edac.c EDAC: Delete unnecessary checks before pci_dev_put() 2015-02-23 13:06:23 +01:00
ie31200_edac.c move io-64-nonatomic*.h out of asm-generic 2015-10-15 00:21:07 +02:00
Kconfig x86/ras: Move AMD MCE injector to arch/x86/ras/ 2015-08-13 10:12:54 +02:00
Makefile EDAC: Carve out debugfs functionality 2015-09-22 12:29:46 +02:00
mce_amd.c x86/mce: Kill drain_mcelog_buffer() 2015-08-13 10:12:52 +02:00
mce_amd.h x86, mce, severity: Extend the the mce_severity mechanism to handle UCNA/DEFERRED error 2014-11-19 10:55:43 -08:00
mpc85xx_edac.c EDAC, mpc85xx: Make mpc85xx-pci-edac a platform device 2015-12-11 16:56:16 +01:00
mpc85xx_edac.h EDAC, mpc85xx: Extend error address to 64 bit 2015-05-31 12:51:08 +02:00
mv64x60_edac.c EDAC, mv64x60: Use platform_register/unregister_drivers() 2015-12-03 12:05:40 +01:00
mv64x60_edac.h edac: Drop __DATE__ usage 2011-04-19 00:23:22 +02:00
octeon_edac-l2c.c EDAC, octeon: Fix broken build due to model helper renames 2015-07-02 10:46:28 +02:00
octeon_edac-lmc.c EDAC, octeon: Fix broken build due to model helper renames 2015-07-02 10:46:28 +02:00
octeon_edac-pc.c EDAC, octeon: Fix broken build due to model helper renames 2015-07-02 10:46:28 +02:00
octeon_edac-pci.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
pasemi_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
ppc4xx_edac.c EDAC, ppc4xx_edac: Fix module autoload for OF platform driver 2015-10-03 12:19:42 +02:00
ppc4xx_edac.h
r82600_edac.c EDAC: Remove DEFINE_PCI_DEVICE_TABLE macro 2013-12-06 10:23:41 +01:00
sb_edac.c EDAC, sb_edac: Add Knights Landing (Xeon Phi gen 2) support 2015-12-05 19:00:52 +01:00
synopsys_edac.c EDAC: Constify of_device_id array 2015-03-20 17:50:07 +01:00
tile_edac.c edac: drop owner assignment from platform_drivers 2014-10-20 16:20:30 +02:00
x38_edac.c move io-64-nonatomic*.h out of asm-generic 2015-10-15 00:21:07 +02:00
xgene_edac.c EDAC, xgene: Add SoC support 2015-09-25 15:41:46 +02:00