EDAC, skx, i10nm: Fix source ID register offset
authorQiuxu Zhuo <qiuxu.zhuo@intel.com>
Wed, 26 Jun 2019 06:16:55 +0000 (14:16 +0800)
committerTony Luck <tony.luck@intel.com>
Wed, 26 Jun 2019 17:07:27 +0000 (10:07 -0700)
The source ID register offset for Skylake server is 0xf0, while for
Icelake server is 0xf8. Pass the correct offset to get the source ID.

Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
drivers/edac/i10nm_base.c
drivers/edac/skx_base.c
drivers/edac/skx_common.c
drivers/edac/skx_common.h

index 72cc20a..83392f2 100644 (file)
@@ -267,7 +267,7 @@ static int __init i10nm_init(void)
                goto fail;
 
        list_for_each_entry(d, i10nm_edac_list, list) {
-               rc = skx_get_src_id(d, &src_id);
+               rc = skx_get_src_id(d, 0xf8, &src_id);
                if (rc < 0)
                        goto fail;
 
index a5c8fa3..0fcf378 100644 (file)
@@ -639,7 +639,7 @@ static int __init skx_init(void)
        }
 
        list_for_each_entry(d, skx_edac_list, list) {
-               rc = skx_get_src_id(d, &src_id);
+               rc = skx_get_src_id(d, 0xf0, &src_id);
                if (rc < 0)
                        goto fail;
                rc = skx_get_node_id(d, &node_id);
index b0dddcf..d8ff63d 100644 (file)
@@ -136,11 +136,11 @@ void skx_set_decode(skx_decode_f decode)
        skx_decode = decode;
 }
 
-int skx_get_src_id(struct skx_dev *d, u8 *id)
+int skx_get_src_id(struct skx_dev *d, int off, u8 *id)
 {
        u32 reg;
 
-       if (pci_read_config_dword(d->util_all, 0xf0, &reg)) {
+       if (pci_read_config_dword(d->util_all, off, &reg)) {
                skx_printk(KERN_ERR, "Failed to read src id\n");
                return -ENODEV;
        }
index d18fa98..08cc971 100644 (file)
@@ -118,7 +118,7 @@ int __init skx_adxl_get(void);
 void __exit skx_adxl_put(void);
 void skx_set_decode(skx_decode_f decode);
 
-int skx_get_src_id(struct skx_dev *d, u8 *id);
+int skx_get_src_id(struct skx_dev *d, int off, u8 *id);
 int skx_get_node_id(struct skx_dev *d, u8 *id);
 
 int skx_get_all_bus_mappings(unsigned int did, int off, enum type,