Merge git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 3 Dec 2012 19:16:37 +0000 (11:16 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 3 Dec 2012 19:16:37 +0000 (11:16 -0800)
Pull EDAC fixes from Mauro Carvalho Chehab:
 "One EDAC core fix, and a few driver fixes (i7300, i9275x, i7core)."

* git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac:
  i7core_edac: fix panic when accessing sysfs files
  i7300_edac: Fix error flag testing
  edac: Fix the dimm filling for csrows-based layouts
  i82975x_edac: Fix dimm label initialization

1  2 
drivers/edac/edac_mc.c

diff --combined drivers/edac/edac_mc.c
index 90f0b730e9bb1ee4a23a2941ea60021a12798d1f,81eb9fd3f717a0f46c0c0f4bd782f9a1a8f759f2..75c0a1a85fc3ce553cb38f7099806874e26a2645
@@@ -416,10 -416,18 +416,18 @@@ struct mem_ctl_info *edac_mc_alloc(unsi
                dimm->cschannel = chn;
  
                /* Increment csrow location */
-               row++;
-               if (row == tot_csrows) {
-                       row = 0;
+               if (layers[0].is_virt_csrow) {
                        chn++;
+                       if (chn == tot_channels) {
+                               chn = 0;
+                               row++;
+                       }
+               } else {
+                       row++;
+                       if (row == tot_csrows) {
+                               row = 0;
+                               chn++;
+                       }
                }
  
                /* Increment dimm location */
@@@ -559,7 -567,7 +567,7 @@@ static void edac_mc_workq_setup(struct 
                return;
  
        INIT_DELAYED_WORK(&mci->work, edac_mc_workq_function);
 -      queue_delayed_work(edac_workqueue, &mci->work, msecs_to_jiffies(msec));
 +      mod_delayed_work(edac_workqueue, &mci->work, msecs_to_jiffies(msec));
  }
  
  /*
@@@ -599,6 -607,21 +607,6 @@@ void edac_mc_reset_delay_period(int val
  
        mutex_lock(&mem_ctls_mutex);
  
 -      /* scan the list and turn off all workq timers, doing so under lock
 -       */
 -      list_for_each(item, &mc_devices) {
 -              mci = list_entry(item, struct mem_ctl_info, link);
 -
 -              if (mci->op_state == OP_RUNNING_POLL)
 -                      cancel_delayed_work(&mci->work);
 -      }
 -
 -      mutex_unlock(&mem_ctls_mutex);
 -
 -
 -      /* re-walk the list, and reset the poll delay */
 -      mutex_lock(&mem_ctls_mutex);
 -
        list_for_each(item, &mc_devices) {
                mci = list_entry(item, struct mem_ctl_info, link);
  
This page took 0.027449 seconds and 5 git commands to generate.