07 Apr, 2012

1 commit

  • Pull arch/tile bug fixes from Chris Metcalf:
    "This includes Paul Gortmaker's change to fix the
    disintegration issues on tile, a fix to unbreak the tilepro ethernet
    driver, and a backlog of bugfix-only changes from internal Tilera
    development over the last few months.

    They have all been to LKML and on linux-next for the last few days.
    The EDAC change to MAINTAINERS is an oddity but discussion on the
    linux-edac list suggested I ask you to pull that change through my
    tree since they don't have a tree to pull edac changes from at the
    moment."

    * 'stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile: (39 commits)
    drivers/net/ethernet/tile: fix netdev_alloc_skb() bombing
    MAINTAINERS: update EDAC information
    tilepro ethernet driver: fix a few minor issues
    tile-srom.c driver: minor code cleanup
    edac: say "TILEGx" not "TILEPro" for the tilegx edac driver
    arch/tile: avoid accidentally unmasking NMI-type interrupt accidentally
    arch/tile: remove bogus performance optimization
    arch/tile: return SIGBUS for addresses that are unaligned AND invalid
    arch/tile: fix finv_buffer_remote() for tilegx
    arch/tile: use atomic exchange in arch_write_unlock()
    arch/tile: stop mentioning the "kvm" subdirectory
    arch/tile: export the page_home() function.
    arch/tile: fix pointer cast in cacheflush.c
    arch/tile: fix single-stepping over swint1 instructions on tilegx
    arch/tile: implement panic_smp_self_stop()
    arch/tile: add "nop" after "nap" to help GX idle power draw
    arch/tile: use proper memparse() for "maxmem" options
    arch/tile: fix up locking in pgtable.c slightly
    arch/tile: don't leak kernel memory when we unload modules
    arch/tile: fix bug in delay_backoff()
    ...

    Linus Torvalds
     

04 Apr, 2012

1 commit

  • MCA details seldom change inbetween the models of a family so don't
    be too conservative and enable decoding on everything starting from
    K8 onwards. Minor adjustments can come in later but most importantly,
    we have some decoding infrastructure in place for upcoming models by
    default.

    Signed-off-by: Borislav Petkov

    Borislav Petkov
     

03 Apr, 2012

1 commit


29 Mar, 2012

1 commit

  • Pull EDAC fixes from Mauro Carvalho Chehab:
    "A series of EDAC driver fixes. It also has one core fix at the
    documentation, and a rename patch, fixing the name of the struct that
    contains the rank information."

    * 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac:
    edac: rename channel_info to rank_info
    i5400_edac: Avoid calling pci_put_device() twice
    edac: i5100 ack error detection register after each read
    edac: i5100 fix erroneous define for M1Err
    edac: sb_edac: Fix a wrong value setting for the previous value
    edac: sb_edac: Fix a INTERLEAVE_MODE() misuse
    edac: sb_edac: Let the driver depend on PCI_MMCONFIG
    edac: Improve the comments to better describe the memory concepts
    edac/ppc4xx_edac: Fix compilation
    Fix sb_edac compilation with 32 bits kernels

    Linus Torvalds
     

25 Mar, 2012

1 commit

  • Pull avoidance patches from Paul Gortmaker:
    "Nearly every subsystem has some kind of header with a proto like:

    void foo(struct device *dev);

    and yet there is no reason for most of these guys to care about the
    sub fields within the device struct. This allows us to significantly
    reduce the scope of headers including headers. For this instance, a
    reduction of about 40% is achieved by replacing the include with the
    simple fact that the device is some kind of a struct.

    Unlike the much larger module.h cleanup, this one is simply two
    commits. One to fix the implicit users, and then one
    to delete the device.h includes from the linux/include/ dir wherever
    possible."

    * tag 'device-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
    device.h: audit and cleanup users in main include dir
    device.h: cleanup users outside of linux/include (C files)

    Linus Torvalds
     

24 Mar, 2012

1 commit

  • Pull AMD64 EDAC fixes from Borislav Petkov:
    "A bunch of fixes/updates for the AMD side of EDAC including

    * MCE decoding updates
    * tree-wide EDAC sweep making pci_device_ids __devinitconst
    * Scrub rate API correction
    * two amd64_edac corrections for K8 boxes and sysfs csrow nodes"

    * tag 'amd64-edac-updates-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
    MCE, AMD: Constify error tables
    MCE, AMD: Correct bank 5 error signatures
    MCE, AMD: Rework NB MCE signatures
    MCE, AMD: Correct VB data error description
    MCE, AMD: Correct ucode patch buffer description
    MCE, AMD: Correct some MC0 error types
    EDAC: Make pci_device_id tables __devinitconst.
    EDAC: Correct scrub rate API
    amd64_edac: Fix K8 revD and later chip select sizes
    amd64_edac: Fix missing csrows sysfs nodes

    Linus Torvalds
     

22 Mar, 2012

9 commits

  • What it is pointed by a csrow/channel vector is a rank information, and
    not a channel information.

    On a traditional architecture, the memory controller directly access the
    memory ranks, via chip select rows. Different ranks at the same DIMM is
    selected via different chip select rows. So, typically, one
    csrow/channel pair means one different DIMM.

    On FB-DIMMs, there's a microcontroller chip at the DIMM, called Advanced
    Memory Buffer (AMB) that serves as the interface between the memory
    controller and the memory chips.

    The AMB selection is via the DIMM slot, and not via a csrow.

    It is up to the AMB to talk with the csrows of the DRAM chips.

    So, the FB-DIMM memory controllers see the DIMM slot, and not the DIMM
    rank. RAMBUS is similar.

    Newer memory controllers, like the ones found on Intel Sandy Bridge and
    Nehalem, even working with normal DDR3 DIMM's, don't use the usual
    channel A/channel B interleaving schema to provide 128 bits data access.

    Instead, they have more channels (3 or 4 channels), and they can use
    several interleaving schemas. Such memory controllers see the DIMMs
    directly on their registers, instead of the ranks, which is better for
    the driver, as its main usageis to point to a broken DIMM stick (the
    Field Repleceable Unit), and not to point to a broken DRAM chip.

    The drivers that support such such newer memory architecture models
    currently need to fake information and to abuse on EDAC structures, as
    the subsystem was conceived with the idea that the csrow would always be
    visible by the CPU.

    To make things a little worse, those drivers don't currently fake
    csrows/channels on a consistent way, as the concepts there don't apply
    to the memory controllers they're talking with. So, each driver author
    interpreted the concepts using a different logic.

    In order to fix it, let's rename the data structure that points into a
    DIMM rank to "rank_info", in order to be clearer about what's stored
    there.

    Latter patches will provide a better way to represent the memory
    hierarchy for the other types of memory controller.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • When i5400_edac driver is removed and re-loaded a few times, it causes
    an OOPS, as it is currently decrementing some PCI device usage two
    times.

    When called inside a loop, pci_get_device() will call
    pci_put_device(). That mangles the error count. In this specific
    case, it seems easier to just duplicate the call.

    Also fixes the error logic when pci_get_device fails.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • If I only ack the detection register after a error have been detected
    I'm unable to reliably detect errors. I have verified this behavior
    using both an error injection DIMM and software to inject errors.

    I can't find any documentation supporting this behavior in Intel 5100
    Memory Controller Hub Chipset, see 1. So this is all based on
    experimentation.

    [1] Intel® 5100 Memory Controller Hub Chipset
    http://www.intel.com/content/dam/doc/datasheet/5100-
    memory-controller-hub-chipset-datasheet.pdf

    Signed-off-by: Niklas Söderlund
    Signed-off-by: Mauro Carvalho Chehab

    Niklas Söderlund
     
  • According to [1] the define for M1Err in the FERR_NF_MEM register is
    wrong. It should be at position 1 not 0.

    [1] Intel 5100 Memory Controller Hub Chipset Doc.Nr: 318378
    http://www.intel.com/content/dam/doc/datasheet/5100-
    memory-controller-hub-chipset-datasheet.pdf

    Reported-by: Ba Thang Nguyen
    Signed-off-by: Niklas Söderlund
    Signed-off-by: Mauro Carvalho Chehab

    Niklas Söderlund
     
  • >From the driver design, the variable limit wants to compare with its
    previous value, we should set the value of limit instead of the value
    of tmp_mb to the variable prev.

    Signed-off-by: Hui Wang
    Signed-off-by: Mauro Carvalho Chehab

    Hui Wang
     
  • We can identify dram interleave mode from the Dram Rule register
    rather than Dram Interleave list register.

    In this context, the reg of INTERLEAVE_MODE(reg) contains the Dram
    Interleave list register, we can't get interleave mode from the reg,
    while the variable interleave_mode saves the the mode got from the
    Dram Rule register, so we use the variable to replace
    INTERLEAVE_MDDE(reg) here.

    Signed-off-by: Hui Wang
    Signed-off-by: Mauro Carvalho Chehab

    Hui Wang
     
  • This driver needs to access PCIe Extended Configuration Space
    Registers (0x100~0xfff), to correctly access those registers, we need
    to enable PCI_MMCONFIG option. Since this option is not enabled for
    X86_64 by default, we let the driver depend on it to prevent users
    forgetting to enable this option.

    Signed-off-by: Hui Wang
    Signed-off-by: Mauro Carvalho Chehab

    Hui Wang
     
  • It seems that nobody is cross-compiling for this arch anymore...

    drivers/edac/ppc4xx_edac.c: In function 'ppc4xx_edac_probe':
    drivers/edac/ppc4xx_edac.c:188:12: error: storage class specified for parameter 'ppc4xx_edac_remove'
    ...
    drivers/edac/ppc4xx_edac.c:1068:19: error: 'match' undeclared (first use in this function)
    drivers/edac/ppc4xx_edac.c:1068:19: note: each undeclared identifier is reported only once for each function it appears in
    drivers/edac/ppc4xx_edac.c:1068:36: warning: left-hand operand of comma expression has no effect [-Wunused-value]

    Acked-by: Josh Boyer
    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • As reported by Josh Boyer :
    > drivers/edac/sb_edac.c: In function 'get_memory_error_data':
    > drivers/edac/sb_edac.c:861:2: warning: left shift count >= width of type
    > [enabled by default]
    >
    > ERROR: "__udivdi3" [drivers/edac/sb_edac.ko] undefined!
    > make[1]: *** [__modpost] Error 1
    > make: *** [modules] Error 2

    PS.: compile-tested only

    Reported-by: Josh Boyer
    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     

20 Mar, 2012

1 commit


19 Mar, 2012

10 commits

  • ... so that checkpatch can chill out.

    Signed-off-by: Borislav Petkov
    Reviewed-by: Andreas Herrmann

    Borislav Petkov
     
  • ... and remove superfluous ErrorCodeExt check.

    Signed-off-by: Borislav Petkov
    Reviewed-by: Andreas Herrmann

    Borislav Petkov
     
  • Correct their formulation, replace per-family functions with a single,
    unified lookup table.

    Signed-off-by: Borislav Petkov
    Reviewed-by: Andreas Herrmann

    Borislav Petkov
     
  • Sync with latest BKDG error types.

    Signed-off-by: Borislav Petkov
    Reviewed-by: Andreas Herrmann

    Borislav Petkov
     
  • This MC1 error signature is called differently now, fix it.

    Signed-off-by: Borislav Petkov
    Reviewed-by: Andreas Herrmann

    Borislav Petkov
     
  • Use "System Read Data Error" as a more general name for MC0 bus errors
    on F15h and update some error definitions.

    Signed-off-by: Borislav Petkov
    Reviewed-by: Andreas Herrmann

    Borislav Petkov
     
  • These const tables are currently marked __devinitdata, but
    Documentation/PCI/pci.txt says:

    "o The ID table array should be marked __devinitconst; this is done
    automatically if the table is declared with DEFINE_PCI_DEVICE_TABLE()."

    So use DEFINE_PCI_DEVICE_TABLE(x).

    Based on PaX and earlier work by Andi Kleen.

    Signed-off-by: Lionel Debroux
    Signed-off-by: Borislav Petkov

    Lionel Debroux
     
  • The original scrub rate API definition states that if scrub rate
    accessors are not implemented, a negative value (-1) should be written
    to the sysfs file (/sys/devices/system/edac/mc/mc/sdram_scrub_rate,
    where N is the memory controller number on the system). This is
    counter-intuitive and awkward at the very least because, when setting
    the scrub rate, userspace has to write to sysfs and then read it back to
    check error status of the operation.

    As Tony notes, best it would be to not have the sdram_scrub_rate in
    sysfs if scrub rate support is not implemented. It is too late about
    that and a bunch of drivers on a bunch of arches would need to be
    changed and tested which is not a trivial task ATM.

    Instead, settle for the next best thing of returning -ENODEV when
    implementation is missing and -EINVAL when there was an error
    encountered while setting the scrub rate.

    Reported-by: Han Pingtian
    Cc: Tony Luck
    Link: http://lkml.kernel.org/r/20110916105856.GA13253@hpt.nay.redhat.com
    Signed-off-by: Borislav Petkov

    Borislav Petkov
     
  • Fix DRAM chip select sizes calculation for K8, revisions D and E.

    Reported-by: Niklas Söderlund

    Borislav Petkov
     
  • While initializing the array of csrow attribute instances, a few csrows
    were uninitialized. This happened because the module only performed a
    check for DRAM base ctl register0's and not DRAM base ctl register1's
    chip select enable bit. There could be systems with DIMMs populated
    on only single memory channel whereas the module also assumed that a
    dual channel dimm had double the memory size of a single memory channel
    instead of checking the memory on each channel.

    This patch fixes these above issues.

    Signed-off-by: Ashish Shenoy
    Signed-off-by: Prasanna S. Panchamukhi
    Link: http://lkml.kernel.org/r/4F459CFA.5090604@riverbed.com
    Signed-off-by: Borislav Petkov

    Ashish Shenoy
     

12 Mar, 2012

1 commit

  • For files that are actively using linux/device.h, make sure
    that they call it out. This will allow us to clean up some
    of the implicit uses of linux/device.h within include/*
    without introducing build regressions.

    Yes, this was created by "cheating" -- i.e. the headers were
    cleaned up, and then the fallout was found and fixed, and then
    the two commits were reordered. This ensures we don't introduce
    build regressions into the git history.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

22 Feb, 2012

1 commit

  • This provides unified readq()/writeq() helper functions for 32-bit
    drivers.

    For some cases, readq/writeq without atomicity is harmful, and order of
    io access has to be specified explicitly. So in this patch, new two
    header files which contain non-atomic readq/writeq are added.

    - provides non-atomic readq/
    writeq with the order of lower address -> higher address

    - provides non-atomic readq/
    writeq with reversed order

    This allows us to remove some readq()s that were added drivers when the
    default non-atomic ones were removed in commit dbee8a0affd5 ("x86:
    remove 32-bit versions of readq()/writeq()")

    The drivers which need readq/writeq but can do with the non-atomic ones
    must add the line:

    #include /* or hi-lo.h */

    But this will be nop in 64-bit environments, and no other #ifdefs are
    required. So I believe that this patch can solve the problem of
    1. driver-specific readq/writeq
    2. atomicity and order of io access

    This patch is tested with building allyesconfig and allmodconfig as
    ARCH=x86 and ARCH=i386 on top of tip/master.

    Cc: Kashyap Desai
    Cc: Len Brown
    Cc: Ravi Anand
    Cc: Vikas Chaudhary
    Cc: Matthew Garrett
    Cc: Jason Uhlenkott
    Cc: James Bottomley
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Roland Dreier
    Cc: James Bottomley
    Cc: Alan Cox
    Cc: Matthew Wilcox
    Cc: Andrew Morton
    Signed-off-by: Hitoshi Mitake
    Signed-off-by: Linus Torvalds

    Hitoshi Mitake
     

13 Jan, 2012

1 commit


09 Jan, 2012

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (53 commits)
    Kconfig: acpi: Fix typo in comment.
    misc latin1 to utf8 conversions
    devres: Fix a typo in devm_kfree comment
    btrfs: free-space-cache.c: remove extra semicolon.
    fat: Spelling s/obsolate/obsolete/g
    SCSI, pmcraid: Fix spelling error in a pmcraid_err() call
    tools/power turbostat: update fields in manpage
    mac80211: drop spelling fix
    types.h: fix comment spelling for 'architectures'
    typo fixes: aera -> area, exntension -> extension
    devices.txt: Fix typo of 'VMware'.
    sis900: Fix enum typo 'sis900_rx_bufer_status'
    decompress_bunzip2: remove invalid vi modeline
    treewide: Fix comment and string typo 'bufer'
    hyper-v: Update MAINTAINERS
    treewide: Fix typos in various parts of the kernel, and fix some comments.
    clockevents: drop unknown Kconfig symbol GENERIC_CLOCKEVENTS_MIGR
    gpio: Kconfig: drop unknown symbol 'CS5535_GPIO'
    leds: Kconfig: Fix typo 'D2NET_V2'
    sound: Kconfig: drop unknown symbol ARCH_CLPS7500
    ...

    Fix up trivial conflicts in arch/powerpc/platforms/40x/Kconfig (some new
    kconfig additions, close to removed commented-out old ones)

    Linus Torvalds
     

08 Jan, 2012

1 commit

  • * 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (73 commits)
    arm: fix up some samsung merge sysdev conversion problems
    firmware: Fix an oops on reading fw_priv->fw in sysfs loading file
    Drivers:hv: Fix a bug in vmbus_driver_unregister()
    driver core: remove __must_check from device_create_file
    debugfs: add missing #ifdef HAS_IOMEM
    arm: time.h: remove device.h #include
    driver-core: remove sysdev.h usage.
    clockevents: remove sysdev.h
    arm: convert sysdev_class to a regular subsystem
    arm: leds: convert sysdev_class to a regular subsystem
    kobject: remove kset_find_obj_hinted()
    m86k: gpio - convert sysdev_class to a regular subsystem
    mips: txx9_sram - convert sysdev_class to a regular subsystem
    mips: 7segled - convert sysdev_class to a regular subsystem
    sh: dma - convert sysdev_class to a regular subsystem
    sh: intc - convert sysdev_class to a regular subsystem
    power: suspend - convert sysdev_class to a regular subsystem
    power: qe_ic - convert sysdev_class to a regular subsystem
    power: cmm - convert sysdev_class to a regular subsystem
    s390: time - convert sysdev_class to a regular subsystem
    ...

    Fix up conflicts with 'struct sysdev' removal from various platform
    drivers that got changed:
    - arch/arm/mach-exynos/cpu.c
    - arch/arm/mach-exynos/irq-eint.c
    - arch/arm/mach-s3c64xx/common.c
    - arch/arm/mach-s3c64xx/cpu.c
    - arch/arm/mach-s5p64x0/cpu.c
    - arch/arm/mach-s5pv210/common.c
    - arch/arm/plat-samsung/include/plat/cpu.h
    - arch/powerpc/kernel/sysfs.c
    and fix up cpu_is_hotpluggable() as per Greg in include/linux/cpu.h

    Linus Torvalds
     

07 Jan, 2012

2 commits


21 Dec, 2011

1 commit

  • Several fields in struct cpuinfo_x86 were not defined for the
    !SMP case, likely to save space. However, those fields still
    have some meaning for UP, and keeping them allows some #ifdef
    removal from other files. The additional size of the UP kernel
    from this change is not significant enough to worry about
    keeping up the distinction:

    text data bss dec hex filename
    4737168 506459 972040 6215667 5ed7f3 vmlinux.o.before
    4737444 506459 972040 6215943 5ed907 vmlinux.o.after

    for a difference of 276 bytes for an example UP config.

    If someone wants those 276 bytes back badly then it should
    be implemented in a cleaner way.

    Signed-off-by: Kevin Winchester
    Cc: Steffen Persvold
    Link: http://lkml.kernel.org/r/1324428742-12498-1-git-send-email-kjwinchester@gmail.com
    Signed-off-by: Ingo Molnar

    Kevin Winchester
     

15 Dec, 2011

1 commit


14 Dec, 2011

1 commit


02 Dec, 2011

1 commit


24 Nov, 2011

1 commit


14 Nov, 2011

1 commit


07 Nov, 2011

1 commit

  • * 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)
    Revert "tracing: Include module.h in define_trace.h"
    irq: don't put module.h into irq.h for tracking irqgen modules.
    bluetooth: macroize two small inlines to avoid module.h
    ip_vs.h: fix implicit use of module_get/module_put from module.h
    nf_conntrack.h: fix up fallout from implicit moduleparam.h presence
    include: replace linux/module.h with "struct module" wherever possible
    include: convert various register fcns to macros to avoid include chaining
    crypto.h: remove unused crypto_tfm_alg_modname() inline
    uwb.h: fix implicit use of asm/page.h for PAGE_SIZE
    pm_runtime.h: explicitly requires notifier.h
    linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h
    miscdevice.h: fix up implicit use of lists and types
    stop_machine.h: fix implicit use of smp.h for smp_processor_id
    of: fix implicit use of errno.h in include/linux/of.h
    of_platform.h: delete needless include
    acpi: remove module.h include from platform/aclinux.h
    miscdevice.h: delete unnecessary inclusion of module.h
    device_cgroup.h: delete needless include
    net: sch_generic remove redundant use of
    net: inet_timewait_sock doesnt need
    ...

    Fix up trivial conflicts (other header files, and removal of the ab3550 mfd driver) in
    - drivers/media/dvb/frontends/dibx000_common.c
    - drivers/media/video/{mt9m111.c,ov6650.c}
    - drivers/mfd/ab3550-core.c
    - include/linux/dmaengine.h

    Linus Torvalds