1. 21 2月, 2013 2 次提交
    • M
      i3200_edac: Fix the logic that detects filled memories · 61734e18
      Mauro Carvalho Chehab 提交于
      After running a series of tests on an HP DL320, filled with different
      memory sizes, it was noticed that, when filled with just one DIMM
      on such hardware, the driver wrongly detects twice the memory, and
      thinks that both channels 0 and 1 are filled.
      
      It seems to be partially caused by the BIOS and partially by the driver.
      
      The i3200_edac current logic would be working fine if the BIOS were
      disabling the unused second channel when just one DIMM is connected,
      in order to do power-saving, as recommended on this chipset's datasheet.
      
      However, the BIOS on this particular machine doesn't do it:
      
      [   16.741421] EDAC DEBUG: how_many_channels: In dual channel mode
      [   16.741424] EDAC DEBUG: how_many_channels: 2 DIMMS per channel enabled
      
      So, the driver were assuming that 2 channels are enabled (well, they are,
      but the second is unused).
      
      Combined with that, I found two issues at the logic that creates the
      EDAC data, that were failing when the two channels are not equally
      filled (AFAICT, that happens only when just 1 DIMM is plugged).
      
      The first one is that a 0 at DRB means that nothing is filled. The
      driver's logic, however, do some calculation with that.
      
      The second one is that the logic that fills the DIMM data currently
      assumes that both channels are equally filled.
      
      I tested the system already with the current configuration and my
      patch and it is now working fine. So, for a 2R single DIMM 2Gb memory
      at dimm slot 01 (channel 0), it is now displaying:
      
      [   16.741406] EDAC DEBUG: i3200_get_drbs: drb[0][0] = 16, drb[1][0] = 0
      [   16.741410] EDAC DEBUG: i3200_get_drbs: drb[0][1] = 32, drb[1][1] = 0
      [   16.741413] EDAC DEBUG: i3200_get_drbs: drb[0][2] = 32, drb[1][2] = 0
      [   16.741416] EDAC DEBUG: i3200_get_drbs: drb[0][3] = 32, drb[1][3] = 0
      ...
      [   16.741896] EDAC DEBUG: i3200_probe1: csrow 0, channel 0, size = 1024 Mb
      [   16.741899] EDAC DEBUG: i3200_probe1: csrow 1, channel 0, size = 1024 Mb
      
      and the corresponding sysfs nodes are now properly filled.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      61734e18
    • M
      i3200_edac: Add more debug to the driver · 5f466cb0
      Mauro Carvalho Chehab 提交于
      Currently, it is not possible to know, when debug is enabled,
      if the driver is using 2 DIMMS per channel mode or not. It is
      not possible to know the values of the drbs registers, used
      to identify the memory rank sizes.
      
      Add debug for both, as it helps to track issues on the driver.
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      5f466cb0
  2. 30 1月, 2013 2 次提交
  3. 08 1月, 2013 3 次提交
  4. 04 1月, 2013 1 次提交
    • G
      Drivers: edac: remove __dev* attributes. · 9b3c6e85
      Greg Kroah-Hartman 提交于
      CONFIG_HOTPLUG is going away as an option.  As a result, the __dev*
      markings need to be removed.
      
      This change removes the use of __devinit, __devexit_p, and __devexit
      from these drivers.
      
      Based on patches originally written by Bill Pemberton, but redone by me
      in order to handle some of the coding style issues better, by hand.
      
      Cc: Bill Pemberton <wfp5p@virginia.edu>
      Cc: Doug Thompson <dougthompson@xmission.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Mark Gross <mark.gross@intel.com>
      Cc: Jason Uhlenkott <juhlenko@akamai.com>
      Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
      Cc: Tim Small <tim@buttersideup.com>
      Cc: Ranganathan Desikan <ravi@jetztechnologies.com>
      Cc: "Arvind R." <arvino55@gmail.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: David Daney <david.daney@cavium.com>
      Cc: Egor Martovetsky <egor@pasemi.com>
      Cc: Olof Johansson <olof@lixom.net>
      Cc: Chris Metcalf <cmetcalf@tilera.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9b3c6e85
  5. 21 12月, 2012 4 次提交
    • L
      i7core_edac: fix kernel crash on unloading i7core_edac. · 1c069100
      Lans Zhang 提交于
      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)
      Stack:
        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: NLans Zhang <jia.zhang@windriver.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      1c069100
    • N
      i7core_edac: fix erroneous size of static array · c31d34fe
      Niklas Söderlund 提交于
      Remove size from lookup arrays and mark them as const.
      Reviewed-by: NJesper Juhl <jj@chaosbits.net>
      Signed-off-by: NNiklas Söderlund <niso@kth.se>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      c31d34fe
    • M
      sb_edac: add a missing /n on a debug message · da14d93d
      Mauro Carvalho Chehab 提交于
      [   17.024963] EDAC DEBUG: get_memory_layout: TOHM: 132.160 GB (0x0000002043ffffff)<7>[   17.024971] EDAC DEBUG: get_memory_layout: SAD#0 DRAM up to 33.792 GB (0x0000000840000000) Interleave: 8:6 reg=0x000083c3
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      da14d93d
    • S
      edac: edac_mc no longer deals with kobjects directly · 80f5ab09
      Shaun Ruffell 提交于
      There are no more embedded kobjects in struct mem_ctl_info. Remove a header and
      a comment that does not reflect the code anymore.
      Signed-off-by: NShaun Ruffell <sruffell@digium.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
      80f5ab09
  6. 14 12月, 2012 1 次提交
  7. 12 12月, 2012 1 次提交
    • R
      MIPS: Cavium: Add EDAC support. · f65aad41
      Ralf Baechle 提交于
      Drivers for EDAC on Cavium.  Supported subsystems are:
      
       o CPU primary caches.  These are parity protected only, so only error
         reporting.
       o Second level cache - ECC protected, provides SECDED.
       o Memory: ECC / SECDEC if used with suitable DRAM modules.  The driver will
         will only initialize if ECC is enabled on a system so is safe to run on
         non-ECC memory.
       o PCI: Parity error reporting
      
      Since it is very hard to test this sort of code the implementation is very
      conservative and uses polling where possible for now.
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      Reviewed-by: NBorislav Petkov <borislav.petkov@amd.com>
      f65aad41
  8. 04 12月, 2012 1 次提交
  9. 28 11月, 2012 24 次提交
  10. 30 10月, 2012 1 次提交