mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-08 14:13:53 +00:00
- skx_edac: Fix overflow when decoding 32G DIMM ranks
- i10nm_edac: Add Sierra Forest support - amd64_edac: Split driver code between legacy and SMCA systems. The final goal is adding support for more hw, like GPUs - The usual minor cleanups and fixes -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmRGLQsACgkQEsHwGGHe VUoGQA//f421tlj9544EA+UFGB9d03cQousLIqsxi1m+N24jbc3Xoxy4+MayAENr S+N0Sl3iF4ACnBlHp0LrdPd+jDtUq4+DIHsCKt6zRoDDK1pJL/7mxjDL7VsWUQEN ILJO5y/xwTiSWTS4vHH+36b8SzM90FDzBtXtq0L6jo3AJTk2btwc13VwphnWr2ia BaIAC9/WWbffcXWqAVVui3ukVs5+ZhLAafixocnYsHNxH6Tf98i2QhxJTDdYFmj3 o16opvfwYDSesw3pgPTzzyQOTXwoXvGSZGJT+QlYN2EFkOzdy/4FMAnv352gACgl q0Rq7LeQMqopaE3secB9Xii+5bGjTZnMlYlJHAtkUwuZZVfZ/8HThqNnrqV/sxTZ Cm2wNyOPO9d7SvOPikyWx5MTdWCENg7kOEl4Qos87n+rhv3ksMwv+/hUERAFCLKK k+qprsfiHyxnzfdYALbIeKYPiQ8vns1uWhG8nnG3c9B/ZcZvlxKUXxmoNSS86TvD nEh+UuB8HjTuoaOwQptPTuGNZAwbRwTD3p6krL+mnfYtnhjbO8pJ5aa5hopoFQL6 luDsIOgjFgM75TqLi3VAoX4uMYVCsFf5AY4z1NJrFk3Akaf129NaDHlxLnIhfUKW Lc4AHCAc9mfMa/8/+UF/1cFOrtNYkeFZp3jnnwsuD2X+CqXIPkk= =sIvA -----END PGP SIGNATURE----- Merge tag 'edac_updates_for_v6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras Pull EDAC updates from Borislav Petkov: - skx_edac: Fix overflow when decoding 32G DIMM ranks - i10nm_edac: Add Sierra Forest support - amd64_edac: Split driver code between legacy and SMCA systems. The final goal is adding support for more hw, like GPUs - The usual minor cleanups and fixes * tag 'edac_updates_for_v6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras: (25 commits) EDAC/i10nm: Add Intel Sierra Forest server support EDAC/amd64: Fix indentation in umc_determine_edac_cap() EDAC/altera: Remove MODULE_LICENSE in non-module EDAC: Sanitize MODULE_AUTHOR strings EDAC/amd81[13]1: Remove trailing newline from MODULE_AUTHOR EDAC/amd64: Add get_err_info() to pvt->ops EDAC/amd64: Split dump_misc_regs() into dct/umc functions EDAC/amd64: Split init_csrows() into dct/umc functions EDAC/amd64: Split determine_edac_cap() into dct/umc functions EDAC/amd64: Rename f17h_determine_edac_ctl_cap() EDAC/amd64: Split setup_mci_misc_attrs() into dct/umc functions EDAC/amd64: Split ecc_enabled() into dct/umc functions EDAC/amd64: Split read_mc_regs() into dct/umc functions EDAC/amd64: Split determine_memory_type() into dct/umc functions EDAC/amd64: Split read_base_mask() into dct/umc functions EDAC/amd64: Split prep_chip_selects() into dct/umc functions EDAC/amd64: Rework hw_info_{get,put} EDAC/amd64: Merge struct amd64_family_type into struct amd64_pvt EDAC/amd64: Do not discover ECC symbol size for Family 17h and later EDAC/amd64: Drop dbam_to_cs() for Family 17h and later ...
This commit is contained in:
commit
e94ee641f9
@ -2149,10 +2149,8 @@ static int altr_edac_a10_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
edac->sb_irq = platform_get_irq(pdev, 0);
|
||||
if (edac->sb_irq < 0) {
|
||||
dev_err(&pdev->dev, "No SBERR IRQ resource\n");
|
||||
if (edac->sb_irq < 0)
|
||||
return edac->sb_irq;
|
||||
}
|
||||
|
||||
irq_set_chained_handler_and_data(edac->sb_irq,
|
||||
altr_edac_a10_irq_handler,
|
||||
@ -2184,10 +2182,9 @@ static int altr_edac_a10_probe(struct platform_device *pdev)
|
||||
}
|
||||
#else
|
||||
edac->db_irq = platform_get_irq(pdev, 1);
|
||||
if (edac->db_irq < 0) {
|
||||
dev_err(&pdev->dev, "No DBERR IRQ resource\n");
|
||||
if (edac->db_irq < 0)
|
||||
return edac->db_irq;
|
||||
}
|
||||
|
||||
irq_set_chained_handler_and_data(edac->db_irq,
|
||||
altr_edac_a10_irq_handler, edac);
|
||||
#endif
|
||||
@ -2226,6 +2223,5 @@ static struct platform_driver altr_edac_a10_driver = {
|
||||
};
|
||||
module_platform_driver(altr_edac_a10_driver);
|
||||
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_AUTHOR("Thor Thayer");
|
||||
MODULE_DESCRIPTION("EDAC Driver for Altera Memories");
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -273,25 +273,6 @@
|
||||
|
||||
#define UMC_SDP_INIT BIT(31)
|
||||
|
||||
enum amd_families {
|
||||
K8_CPUS = 0,
|
||||
F10_CPUS,
|
||||
F15_CPUS,
|
||||
F15_M30H_CPUS,
|
||||
F15_M60H_CPUS,
|
||||
F16_CPUS,
|
||||
F16_M30H_CPUS,
|
||||
F17_CPUS,
|
||||
F17_M10H_CPUS,
|
||||
F17_M30H_CPUS,
|
||||
F17_M60H_CPUS,
|
||||
F17_M70H_CPUS,
|
||||
F19_CPUS,
|
||||
F19_M10H_CPUS,
|
||||
F19_M50H_CPUS,
|
||||
NUM_FAMILIES,
|
||||
};
|
||||
|
||||
/* Error injection control structure */
|
||||
struct error_injection {
|
||||
u32 section;
|
||||
@ -334,6 +315,16 @@ struct amd64_umc {
|
||||
enum mem_type dram_type;
|
||||
};
|
||||
|
||||
struct amd64_family_flags {
|
||||
/*
|
||||
* Indicates that the system supports the new register offsets, etc.
|
||||
* first introduced with Family 19h Model 10h.
|
||||
*/
|
||||
__u64 zn_regs_v2 : 1,
|
||||
|
||||
__reserved : 63;
|
||||
};
|
||||
|
||||
struct amd64_pvt {
|
||||
struct low_ops *ops;
|
||||
|
||||
@ -375,6 +366,12 @@ struct amd64_pvt {
|
||||
/* x4, x8, or x16 syndromes in use */
|
||||
u8 ecc_sym_sz;
|
||||
|
||||
const char *ctl_name;
|
||||
u16 f1_id, f2_id;
|
||||
/* Maximum number of memory controllers per die/node. */
|
||||
u8 max_mcs;
|
||||
|
||||
struct amd64_family_flags flags;
|
||||
/* place to store error injection parameters prior to issue */
|
||||
struct error_injection injection;
|
||||
|
||||
@ -465,29 +462,15 @@ struct ecc_settings {
|
||||
* functions and per device encoding/decoding logic.
|
||||
*/
|
||||
struct low_ops {
|
||||
void (*map_sysaddr_to_csrow) (struct mem_ctl_info *mci, u64 sys_addr,
|
||||
struct err_info *);
|
||||
int (*dbam_to_cs) (struct amd64_pvt *pvt, u8 dct,
|
||||
unsigned cs_mode, int cs_mask_nr);
|
||||
};
|
||||
|
||||
struct amd64_family_flags {
|
||||
/*
|
||||
* Indicates that the system supports the new register offsets, etc.
|
||||
* first introduced with Family 19h Model 10h.
|
||||
*/
|
||||
__u64 zn_regs_v2 : 1,
|
||||
|
||||
__reserved : 63;
|
||||
};
|
||||
|
||||
struct amd64_family_type {
|
||||
const char *ctl_name;
|
||||
u16 f1_id, f2_id;
|
||||
/* Maximum number of memory controllers per die/node. */
|
||||
u8 max_mcs;
|
||||
struct amd64_family_flags flags;
|
||||
struct low_ops ops;
|
||||
void (*map_sysaddr_to_csrow)(struct mem_ctl_info *mci, u64 sys_addr,
|
||||
struct err_info *err);
|
||||
int (*dbam_to_cs)(struct amd64_pvt *pvt, u8 dct,
|
||||
unsigned int cs_mode, int cs_mask_nr);
|
||||
int (*hw_info_get)(struct amd64_pvt *pvt);
|
||||
bool (*ecc_enabled)(struct amd64_pvt *pvt);
|
||||
void (*setup_mci_misc_attrs)(struct mem_ctl_info *mci);
|
||||
void (*dump_misc_regs)(struct amd64_pvt *pvt);
|
||||
void (*get_err_info)(struct mce *m, struct err_info *err);
|
||||
};
|
||||
|
||||
int __amd64_read_pci_cfg_dword(struct pci_dev *pdev, int offset,
|
||||
|
@ -593,5 +593,5 @@ module_init(amd8111_edac_init);
|
||||
module_exit(amd8111_edac_exit);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Cao Qingtao <qingtao.cao@windriver.com>\n");
|
||||
MODULE_AUTHOR("Cao Qingtao <qingtao.cao@windriver.com>");
|
||||
MODULE_DESCRIPTION("AMD8111 HyperTransport I/O Hub EDAC kernel module");
|
||||
|
@ -354,5 +354,5 @@ module_init(amd8131_edac_init);
|
||||
module_exit(amd8131_edac_exit);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Cao Qingtao <qingtao.cao@windriver.com>\n");
|
||||
MODULE_AUTHOR("Cao Qingtao <qingtao.cao@windriver.com>");
|
||||
MODULE_DESCRIPTION("AMD8131 HyperTransport PCI-X Tunnel EDAC kernel module");
|
||||
|
@ -1462,7 +1462,7 @@ module_init(e752x_init);
|
||||
module_exit(e752x_exit);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Linux Networx (http://lnxi.com) Tom Zimmerman\n");
|
||||
MODULE_AUTHOR("Linux Networx (http://lnxi.com) Tom Zimmerman");
|
||||
MODULE_DESCRIPTION("MC support for Intel e752x/3100 memory controllers");
|
||||
|
||||
module_param(force_function_unhide, int, 0444);
|
||||
|
@ -596,8 +596,7 @@ module_init(e7xxx_init);
|
||||
module_exit(e7xxx_exit);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Linux Networx (http://lnxi.com) Thayne Harbaugh et al\n"
|
||||
"Based on.work by Dan Hollis et al");
|
||||
MODULE_AUTHOR("Linux Networx (http://lnxi.com) Thayne Harbaugh et al");
|
||||
MODULE_DESCRIPTION("MC support for Intel e7xxx memory controllers");
|
||||
module_param(edac_op_state, int, 0444);
|
||||
MODULE_PARM_DESC(edac_op_state, "EDAC Error Reporting state: 0=Poll,1=NMI");
|
||||
|
@ -906,6 +906,7 @@ static const struct x86_cpu_id i10nm_cpuids[] = {
|
||||
X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS(SAPPHIRERAPIDS_X, X86_STEPPINGS(0x0, 0xf), &spr_cfg),
|
||||
X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS(EMERALDRAPIDS_X, X86_STEPPINGS(0x0, 0xf), &spr_cfg),
|
||||
X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS(GRANITERAPIDS_X, X86_STEPPINGS(0x0, 0xf), &gnr_cfg),
|
||||
X86_MATCH_INTEL_FAM6_MODEL_STEPPINGS(SIERRAFOREST_X, X86_STEPPINGS(0x0, 0xf), &gnr_cfg),
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(x86cpu, i10nm_cpuids);
|
||||
|
@ -1573,13 +1573,10 @@ module_init(i5000_init);
|
||||
module_exit(i5000_exit);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR
|
||||
("Linux Networx (http://lnxi.com) Doug Thompson <norsk5@xmission.com>");
|
||||
MODULE_DESCRIPTION("MC Driver for Intel I5000 memory controllers - "
|
||||
I5000_REVISION);
|
||||
MODULE_AUTHOR("Linux Networx (http://lnxi.com) Doug Thompson <norsk5@xmission.com>");
|
||||
MODULE_DESCRIPTION("MC Driver for Intel I5000 memory controllers - " I5000_REVISION);
|
||||
|
||||
module_param(edac_op_state, int, 0444);
|
||||
MODULE_PARM_DESC(edac_op_state, "EDAC Error Reporting state: 0=Poll,1=NMI");
|
||||
module_param(misc_messages, int, 0444);
|
||||
MODULE_PARM_DESC(misc_messages, "Log miscellaneous non fatal messages");
|
||||
|
||||
|
@ -909,7 +909,7 @@ static void i5100_do_inject(struct mem_ctl_info *mci)
|
||||
*
|
||||
* The injection code don't work without setting this register.
|
||||
* The register needs to be flipped off then on else the hardware
|
||||
* will only preform the first injection.
|
||||
* will only perform the first injection.
|
||||
*
|
||||
* Stop condition bits 7:4
|
||||
* 1010 - Stop after one injection
|
||||
@ -1220,6 +1220,5 @@ module_init(i5100_init);
|
||||
module_exit(i5100_exit);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR
|
||||
("Arthur Jones <ajones@riverbed.com>");
|
||||
MODULE_AUTHOR("Arthur Jones <ajones@riverbed.com>");
|
||||
MODULE_DESCRIPTION("MC Driver for Intel I5100 memory controllers");
|
||||
|
@ -355,8 +355,7 @@ module_init(i82860_init);
|
||||
module_exit(i82860_exit);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Red Hat Inc. (http://www.redhat.com) "
|
||||
"Ben Woodard <woodard@redhat.com>");
|
||||
MODULE_AUTHOR("Red Hat Inc. (http://www.redhat.com) Ben Woodard <woodard@redhat.com>");
|
||||
MODULE_DESCRIPTION("ECC support for Intel 82860 memory hub controllers");
|
||||
|
||||
module_param(edac_op_state, int, 0444);
|
||||
|
@ -72,5 +72,4 @@ module_exit(fsl_ddr_mc_exit);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("NXP Semiconductor");
|
||||
module_param(edac_op_state, int, 0444);
|
||||
MODULE_PARM_DESC(edac_op_state,
|
||||
"EDAC Error Reporting state: 0=Poll, 2=Interrupt");
|
||||
MODULE_PARM_DESC(edac_op_state, "EDAC Error Reporting state: 0=Poll, 2=Interrupt");
|
||||
|
@ -711,5 +711,4 @@ module_exit(mpc85xx_mc_exit);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Montavista Software, Inc.");
|
||||
module_param(edac_op_state, int, 0444);
|
||||
MODULE_PARM_DESC(edac_op_state,
|
||||
"EDAC Error Reporting state: 0=Poll, 2=Interrupt");
|
||||
MODULE_PARM_DESC(edac_op_state, "EDAC Error Reporting state: 0=Poll, 2=Interrupt");
|
||||
|
@ -415,8 +415,7 @@ module_init(r82600_init);
|
||||
module_exit(r82600_exit);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Tim Small <tim@buttersideup.com> - WPAD Ltd. "
|
||||
"on behalf of EADS Astrium");
|
||||
MODULE_AUTHOR("Tim Small <tim@buttersideup.com> - WPAD Ltd. on behalf of EADS Astrium");
|
||||
MODULE_DESCRIPTION("MC support for Radisys 82600 memory controllers");
|
||||
|
||||
module_param(disable_hardware_scrub, bool, 0644);
|
||||
|
@ -510,7 +510,7 @@ static bool skx_rir_decode(struct decoded_addr *res)
|
||||
}
|
||||
|
||||
static u8 skx_close_row[] = {
|
||||
15, 16, 17, 18, 20, 21, 22, 28, 10, 11, 12, 13, 29, 30, 31, 32, 33
|
||||
15, 16, 17, 18, 20, 21, 22, 28, 10, 11, 12, 13, 29, 30, 31, 32, 33, 34
|
||||
};
|
||||
|
||||
static u8 skx_close_column[] = {
|
||||
@ -518,7 +518,7 @@ static u8 skx_close_column[] = {
|
||||
};
|
||||
|
||||
static u8 skx_open_row[] = {
|
||||
14, 15, 16, 20, 28, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33
|
||||
14, 15, 16, 20, 28, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34
|
||||
};
|
||||
|
||||
static u8 skx_open_column[] = {
|
||||
|
Loading…
Reference in New Issue
Block a user