1. 11 Dec, 2015 2 commits
  2. 11 Nov, 2014 1 commit
  3. 30 Jan, 2013 1 commit
  4. 21 Dec, 2012 1 commit
    • Lans Zhang's avatar
      i7core_edac: fix kernel crash on unloading i7core_edac. · 1c069100
      Lans Zhang authored
      It is easy to trigger this crash on 3.7.0:
      root@intel_westmere_ep-3:~# modprobe -r i7core_edac
      EDAC PCI: Removed device 0 for i7core_edac EDAC PCI controller: DEV 0000:fe:03.0
      EDAC MC: Removed device 1 for i7core_edac.c i7 core #1: DEV 0000:fe:03.0
      EDAC PCI: Removed device 1 for i7core_edac EDAC PCI controller: DEV 0000:ff:03.0
      EDAC MC: Removed device 0 for i7core_edac.c i7 core #0: DEV 0000:ff:03.0
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000110
      IP: [<ffffffff82069ee9>] __blocking_notifier_call_chain+0x29/0x80
      PGD 1eaae7067 PUD 1e96e4067 PMD 0
      Oops: 0000 [#1] PREEMPT SMP
      Modules linked in: minix acpi_cpufreq freq_table mperf ioatdma processor edac_core(-) iTCO_wdt coretemp evdev hwmon lpc_ich dca mfd_core crc32c_intel ioapic [last unloaded: i7core_edac]
      CPU 3
      Pid: 1268, comm: modprobe Not tainted 3.7.0-WR5.0.1.0_standard+ #30 Intel Corporation S5520HC/S5520HC
      RIP: 0010:[<ffffffff82069ee9>]  [<ffffffff82069ee9>] __blocking_notifier_call_chain+0x29/0x80
      RSP: 0018:ffff8801eb12de28  EFLAGS: 00010246
      RAX: 0000000000000000 RBX: 00000000000000f0 RCX: 00000000ffffffff
      RDX: ffff88012b452800 RSI: 0000000000000002 RDI: 00000000000000f0
      RBP: ffff8801eb12de68 R08: 0000000000000000 R09: ffffea0004ad1118
      R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
      R13: ffff8801eb12dee8 R14: ffff88012b452800 R15: 000000000060e518
      FS:  00007f9ea95a9700(0000) GS:ffff8801efc20000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      CR2: 0000000000000110 CR3: 00000001262f1000 CR4: 00000000000007e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process modprobe (pid: 1268, threadinfo ffff8801eb12c000, task ffff8801e8421690)
        ffff88012c802a00 ffff88012b445ec0 ffff88012c802300 ffff88012b452800
        0000000000000000 ffff8801eb12dee8 000000000060e080 000000000060e518
        ffff8801eb12de78 ffffffff82069f56 ffff8801eb12dea8 ffffffff824ead7c
      Call Trace:
        [<ffffffff82069f56>] blocking_notifier_call_chain+0x16/0x20
        [<ffffffff824ead7c>] device_del+0x3c/0x1d0
        [<ffffffffa00095a8>] edac_mc_sysfs_exit+0x1c/0x2f [edac_core]
        [<ffffffffa000961c>] edac_exit+0x4f/0x56 [edac_core]
        [<ffffffff820a3d2a>] sys_delete_module+0x17a/0x240
        [<ffffffff8212da7c>] ? vm_munmap+0x5c/0x80
        [<ffffffff82877682>] system_call_fastpath+0x16/0x1b
      Code: 90 90 55 48 89 e5 48 83 ec 40 48 89 5d d8 4c 89 65 e0 4c 89 6d e8 4c 89 75 f0 4c 89 7d f8 66 66 66 66 90 31 c0 49 89 d6 48 89 fb <48> 8b 57 20 49 89 f5 41 89 cf 4c 8d 67 20 48 85 d2 74 2c 4c 89
      RIP  [<ffffffff82069ee9>] __blocking_notifier_call_chain+0x29/0x80
        RSP <ffff8801eb12de28>
      CR2: 0000000000000110
      ---[ end trace b69acf12ccad1c0d ]---
      Usually, edac_subsys is grabbed one time by pci at initialization.
      But edac_subsys may be released several times if multiple pci MCs exist.
      The fix just makes the operations balanced.
      Signed-off-by: default avatarLans Zhang <jia.zhang@windriver.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
  5. 04 Dec, 2012 1 commit
  6. 11 Jun, 2012 2 commits
    • Joe Perches's avatar
      edac: Convert debugfX to edac_dbg(X, · 956b9ba1
      Joe Perches authored
      Use a more common debugging style.
      Remove __FILE__ uses, add missing newlines,
      coalesce formats and align arguments.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    • Mauro Carvalho Chehab's avatar
      edac: Don't add __func__ or __FILE__ for debugf[0-9] msgs · dd23cd6e
      Mauro Carvalho Chehab authored
      The debug macro already adds that. Most of the work here was
      made by this small script:
      $f .=$_ while (<>);
      $f =~ s/(debugf[0-9]\s*\(\s*)__FILE__\s*": /\1"/g;
      $f =~ s/(debugf[0-9]\s*\(\s*)__FILE__\s*/\1/g;
      $f =~ s/(debugf[0-9]\s*\(\s*)__FILE__\s*"MC: /\1"/g;
      $f =~ s/(debugf[0-9]\s*\(\")\%s[\:\,\(\)]*\s*([^\"]*\s*[^\)]+)__func__\s*\,\s*/\1\2/g;
      $f =~ s/(debugf[0-9]\s*\(\")\%s[\:\,\(\)]*\s*([^\"]*\s*[^\)]+),\s*__func__\s*\)/\1\2)/g;
      $f =~ s/(debugf[0-9]\s*\(\"MC\:\s*)\%s[\:\,\(\)]*\s*([^\"]*\s*[^\)]+)__func__\s*\,\s*/\1\2/g;
      $f =~ s/(debugf[0-9]\s*\(\"MC\:\s*)\%s[\:\,\(\)]*\s*([^\"]*\s*[^\)]+),\s*__func__\s*\)/\1\2)/g;
      $f =~ s/\"MC\: \\n\"/"MC:\\n"/g;
      print $f;
      After running the script, manual cleanups were done to fix it the remaining
      While here, removed the __LINE__ on most places, as it doesn't actually give
      useful info on most places.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
  7. 14 Dec, 2011 1 commit
  8. 31 Mar, 2011 1 commit
  9. 21 Oct, 2010 1 commit
  10. 30 Mar, 2010 1 commit
    • Tejun Heo's avatar
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking... · 5a0e3ad6
      Tejun Heo authored
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
      percpu.h is included by sched.h and module.h and thus ends up being
      included when building most .c files.  percpu.h includes slab.h which
      in turn includes gfp.h making everything defined by the two files
      universally available and complicating inclusion dependencies.
      percpu.h -> slab.h dependency is about to be removed.  Prepare for
      this change by updating users of gfp and slab facilities include those
      headers directly instead of assuming availability.  As this conversion
      needs to touch large number of source files, the following script is
      used as the basis of conversion.
      The script does the followings.
      * Scan files for gfp and slab usages and update includes such that
        only the necessary includes are there.  ie. if only gfp is used,
        gfp.h, if slab is used, slab.h.
      * When the script inserts a new include, it looks at the include
        blocks and try to put the new include such that its order conforms
        to its surrounding.  It's put in the include block which contains
        core kernel includes, in the same order that the rest are ordered -
        alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
        doesn't seem to be any matching order.
      * If the script can't find a place to put a new include (mostly
        because the file doesn't have fitting include block), it prints out
        an error message indicating which .h file needs to be added to the
      The conversion was done in the following steps.
      1. The initial automatic conversion of all .c files updated slightly
         over 4000 files, deleting around 700 includes and adding ~480 gfp.h
         and ~3000 slab.h inclusions.  The script emitted errors for ~400
      2. Each error was manually checked.  Some didn't need the inclusion,
         some needed manual addition while adding it to implementation .h or
         embedding .c file was more appropriate for others.  This step added
         inclusions to around 150 files.
      3. The script was run again and the output was compared to the edits
         from #2 to make sure no file was left behind.
      4. Several build tests were done and a couple of problems were fixed.
         e.g. lib/decompress_*.c used malloc/free() wrappers around slab
         APIs requiring slab.h to be added manually.
      5. The script was run on all .h files but without automatically
         editing them as sprinkling gfp.h and slab.h inclusions around .h
         files could easily lead to inclusion dependency hell.  Most gfp.h
         inclusion directives were ignored as stuff from gfp.h was usually
         wildly available and often used in preprocessor macros.  Each
         slab.h inclusion directive was examined and added manually as
      6. percpu.h was updated not to include slab.h.
      7. Build test were done on the following configurations and failures
         were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my
         distributed build env didn't work with gcov compiles) and a few
         more options had to be turned off depending on archs to make things
         build (like ipr on powerpc/64 which failed due to missing writeq).
         * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
         * powerpc and powerpc64 SMP allmodconfig
         * sparc and sparc64 SMP allmodconfig
         * ia64 SMP allmodconfig
         * s390 SMP allmodconfig
         * alpha SMP allmodconfig
         * um on x86_64 SMP allmodconfig
      8. percpu.h modifications were reverted so that it could be applied as
         a separate patch and serve as bisection point.
      Given the fact that I had only a couple of failures from tests on step
      6, I'm fairly confident about the coverage of this conversion patch.
      If there is a breakage, it's likely to be something in one of the arch
      headers which should be easily discoverable easily on most builds of
      the specific arch.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Guess-its-ok-by: default avatarChristoph Lameter <cl@linux-foundation.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
  11. 08 Mar, 2010 1 commit
  12. 24 Dec, 2009 1 commit
  13. 06 Jan, 2009 1 commit
  14. 25 Jul, 2008 1 commit
  15. 29 Apr, 2008 1 commit
  16. 07 Feb, 2008 1 commit
    • Bryan Boatright's avatar
      drivers/edac: pci: broken parity regression · 6b09ff9d
      Bryan Boatright authored
      Using the EDAC code in kernel.org kernel version I am seeing the
      following problem:
          In the kernel there is a pci device attribute located in sysfs that is
          checked by the EDAC PCI scanning code. If that attribute is set,
          PCI parity/error scannining is skipped for that device. The attribute
          as is located in /sys/devices/pci<XXX>/0000:XX:YY.Z directorys for
          PCI devices.
      I don't think this check was actually implemented.  I have a misbehaved card
      that reports a parity error every 1000 ms:
      Nov 25 07:28:43 beta kernel: EDAC PCI: Master Data Parity Error on 0000:05:01.0
      Nov 25 07:28:44 beta kernel: EDAC PCI: Master Data Parity Error on 0000:05:01.0
      Nov 25 07:28:45 beta kernel: EDAC PCI: Master Data Parity Error on 0000:05:01.0
      Setting that card's broken_parity_status bit did not mask the error:
      echo "1" > /sys/bus/pci/devices/0000:05:01.0/broken_parity_status
      I looked through the EDAC code and did not readily see any reference to
      broken_parity_status at all (which makes sense based on the behavior I am
      seeing).  I applied the following patch as a proof-of-concept and now EDAC's
      PCI parity error reporting behaves as documented:
      Good regression find, bryan. It used to work. sigh.
      I added more logic to your patch, for more coverage of the error.
      Doug T
      Signed-off-by: default avatarBryan Boatright <b1@omega71.com>
      Signed-off-by: default avatarDoug Thompson <dougthompson@xmisson.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
  17. 25 Jan, 2008 2 commits
  18. 26 Jul, 2007 1 commit
    • Doug Thompson's avatar
      drivers/edac: fix edac_pci sysfs · d4c1465b
      Doug Thompson authored
      This patch fixes sysfs exit code for the EDAC PCI device in a similiar manner
      and the previous fixes for EDAC_MC and EDAC_DEVICE.
      It removes the old (and incorrect) completion model and uses reference counts
      on per instance kobjects and on the edac core module.
      This pattern was applied to the edac_mc and edac_device code, but the EDAC PCI
      code was missed.  In addition, this fixes a system hang after a low level
      driver was unloaded.  (A cleanup function was called twice, which really
      screwed things up)
      Cc: Greg KH <greg@kroah.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: default avatarDoug Thompson <dougthompson@xmission.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
  19. 19 Jul, 2007 7 commits