浏览代码

Merge tag 'edac_for_3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp into x86/ras

Pull RAS/EDAC updates from Boris Petkov:

 "An amd64_edac fix for single channel configurations + trivial cleanups
  courtesy of Jingoo Han."

Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar 12 年之前
父节点
当前提交
c874b6ba55
共有 5 个文件被更改,包括 15 次插入8 次删除
  1. 8 1
      drivers/edac/amd64_edac.c
  2. 1 1
      drivers/edac/cpc925_edac.c
  3. 4 2
      drivers/edac/edac_mc_sysfs.c
  4. 1 2
      drivers/edac/i3200_edac.c
  5. 1 2
      drivers/edac/x38_edac.c

+ 8 - 1
drivers/edac/amd64_edac.c

@@ -2642,8 +2642,15 @@ static int amd64_init_one_instance(struct pci_dev *F2)
 	layers[0].size = pvt->csels[0].b_cnt;
 	layers[0].size = pvt->csels[0].b_cnt;
 	layers[0].is_virt_csrow = true;
 	layers[0].is_virt_csrow = true;
 	layers[1].type = EDAC_MC_LAYER_CHANNEL;
 	layers[1].type = EDAC_MC_LAYER_CHANNEL;
-	layers[1].size = pvt->channel_count;
+
+	/*
+	 * Always allocate two channels since we can have setups with DIMMs on
+	 * only one channel. Also, this simplifies handling later for the price
+	 * of a couple of KBs tops.
+	 */
+	layers[1].size = 2;
 	layers[1].is_virt_csrow = false;
 	layers[1].is_virt_csrow = false;
+
 	mci = edac_mc_alloc(nid, ARRAY_SIZE(layers), layers, 0);
 	mci = edac_mc_alloc(nid, ARRAY_SIZE(layers), layers, 0);
 	if (!mci)
 	if (!mci)
 		goto err_siblings;
 		goto err_siblings;

+ 1 - 1
drivers/edac/cpc925_edac.c

@@ -789,7 +789,7 @@ static struct cpc925_dev_info cpc925_devs[] = {
 	.exit = cpc925_htlink_exit,
 	.exit = cpc925_htlink_exit,
 	.check = cpc925_htlink_check,
 	.check = cpc925_htlink_check,
 	},
 	},
-	{0}, /* Terminated by NULL */
+	{ }
 };
 };
 
 
 /*
 /*

+ 4 - 2
drivers/edac/edac_mc_sysfs.c

@@ -58,8 +58,10 @@ static int edac_set_poll_msec(const char *val, struct kernel_param *kp)
 	if (!val)
 	if (!val)
 		return -EINVAL;
 		return -EINVAL;
 
 
-	ret = strict_strtol(val, 0, &l);
-	if (ret == -EINVAL || ((int)l != l))
+	ret = kstrtol(val, 0, &l);
+	if (ret)
+		return ret;
+	if ((int)l != l)
 		return -EINVAL;
 		return -EINVAL;
 	*((int *)kp->arg) = l;
 	*((int *)kp->arg) = l;
 
 

+ 1 - 2
drivers/edac/i3200_edac.c

@@ -260,8 +260,7 @@ static void i3200_check(struct mem_ctl_info *mci)
 	i3200_process_error_info(mci, &info);
 	i3200_process_error_info(mci, &info);
 }
 }
 
 
-
-void __iomem *i3200_map_mchbar(struct pci_dev *pdev)
+static void __iomem *i3200_map_mchbar(struct pci_dev *pdev)
 {
 {
 	union {
 	union {
 		u64 mchbar;
 		u64 mchbar;

+ 1 - 2
drivers/edac/x38_edac.c

@@ -248,8 +248,7 @@ static void x38_check(struct mem_ctl_info *mci)
 	x38_process_error_info(mci, &info);
 	x38_process_error_info(mci, &info);
 }
 }
 
 
-
-void __iomem *x38_map_mchbar(struct pci_dev *pdev)
+static void __iomem *x38_map_mchbar(struct pci_dev *pdev)
 {
 {
 	union {
 	union {
 		u64 mchbar;
 		u64 mchbar;