lkml.org 
[lkml]   [2012]   [Mar]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 00/14] Fix the EDAC API
    On Thu, Mar 29, 2012 at 02:06:47PM -0300, Mauro Carvalho Chehab wrote:
    > The EDAC API is broken for any memory controller that doesn't use
    > a DIMM rank as its primary unit.
    >
    > That covers RAMBUS and FB-DIMM drivers, where it is impossible to
    > track a single rank, as the hank is hidden by a buffer controller
    > (AMB - Advanced Memory Buffer, in the case of FB-DIMM).
    >
    > Also, newer Intel architectures (Nehalem and Sandy Bridge) brings
    > advanced memory controllers, where the cachesize can be different
    > than 128 bits, and up to 4 channels can be interlaced. The current
    > EDAC API doesn't work for those.
    >
    > So, all drivers that need that do some sort of tricks to lie to the
    > EDAC core, in order for the memory to be somehow exposed. There are
    > several cases where this is done wrong.
    >
    > The only way to fix is to create a new ABI capable of exporting what
    > the driver actually sees, and not some virtual information, produced
    > by the driver just to make the EDAC core happy.
    >
    > As requested by Greg, the first step is to convert the EDAC MC code
    > to use struct device. That means that 3 drivers also need to be
    > converted (amd64, i7core and mpc85xx_edac), as they create their own
    > ABI's.
    >
    > Those patches were compile-tested on all architectures.
    >
    > It was also tested on all types of Memory Controllers with EDAC support
    > I was able to find at Red Hat Labs:
    > e752x_edac (a Xeon i3100 chipset)
    > i3000_edac
    > i3200_edac
    > i5000_edac
    > i5100_edac
    > i5400_edac
    > i7300_edac
    > i7core_edac (Nehalem)
    > sb_edac (Sandy Bridge E5)
    > amd64_edac
    >
    > Several of them with multiple memory controllers (the amd64 hardware
    > I used is the bigger one, in terms of MC, with 8 memory controllers).
    >
    > There are 3 intended changes that are out of this series:
    >
    > - ABI documentation. I'll write the ABI patch as soon as I
    > merge this series at -next;
    >
    > - New API UE/CE error counters. They're needed, but, as the
    > discussions weren't finished, let's postpone it. I'll start work on
    > it after the merge of this series.
    >
    > - MCA error trace. Also, there wasn't any agreement yet.
    > So, keep this out of this series, until we come to some conclusion.
    >
    > Regards,
    > Mauro
    >
    > Mauro Carvalho Chehab (14):
    > edac: rewrite the sysfs code to use struct device
    > mpc85xx_edac: convert sysfs logic to use struct device
    > amd64_edac: convert sysfs logic to use struct device
    > i7core_edac: convert it to use struct device
    > edac: Get rid of the old kobj's from the edac mc code
    > edac: add a new per-dimm API and make the old per-virtual-rank API
    > obsolete
    > edac: add a sysfs node to report the maximum location for the system
    > edac: Add debufs nodes to allow doing fake error inject
    > edac: Create a per-Memory Controller bus
    > edac: Move grain/dtype/edac_type calculus to be out of channel loop
    > i82975x_edac: Test nr_pages earlier to save a few CPU cycles
    > i5100_edac: Fix a warning when compiled with 32 bits
    > i7300_edac: Get rid of some wrongly-solved rebase conflict
    > edac: Only expose csrows/channels on legacy API if they're populated
    >
    > drivers/edac/Kconfig | 8 +
    > drivers/edac/amd64_edac.c | 43 +-
    > drivers/edac/amd64_edac.h | 29 +-
    > drivers/edac/amd64_edac_dbg.c | 89 ++--
    > drivers/edac/amd64_edac_inj.c | 128 +++--
    > drivers/edac/cpc925_edac.c | 54 +-
    > drivers/edac/e752x_edac.c | 31 +-
    > drivers/edac/e7xxx_edac.c | 32 +-
    > drivers/edac/edac_mc.c | 60 +-
    > drivers/edac/edac_mc_sysfs.c | 1322 +++++++++++++++++++++--------------------
    > drivers/edac/edac_module.c | 13 +-
    > drivers/edac/edac_module.h | 9 +-
    > drivers/edac/i5000_edac.c | 3 -
    > drivers/edac/i5100_edac.c | 4 +-
    > drivers/edac/i7300_edac.c | 3 -
    > drivers/edac/i7core_edac.c | 336 +++++++----
    > drivers/edac/i82875p_edac.c | 4 -
    > drivers/edac/i82975x_edac.c | 9 +-
    > drivers/edac/mpc85xx_edac.c | 93 ++--
    > include/linux/edac.h | 69 +--
    > 20 files changed, 1250 insertions(+), 1089 deletions(-)
    Reviewed-by: Aristeu Rozanski <arozansk@redhat.com>

    --
    Aristeu



    \
     
     \ /
      Last update: 2012-03-29 22:49    [W:0.031 / U:30.640 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site