13 Nov, 2013

2 commits


12 Nov, 2013

6 commits

  • Return code of pm_runtime_get_sync() > 0 is not an error and may happen.
    Noticed during rmmod & modprobe testing.

    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Vinod Koul

    Sebastian Andrzej Siewior
     
  • Most of the logic here is try and error since what actually happens does
    not match the trm or I miss read it.
    My first assumption was that the queue on which the tear-down descriptor
    completes (their own complete queue vs "active descriptor" complete
    queue) depends on the transfer direction. This seems not to be true
    because I manage to trigger
    | WARN_ON(c->desc_phys != desc_phys);
    and the other few were fine means the tear-down descriptor was valid but
    on different queue.

    This patch changes the logic here to look on both queues for the
    descriptor.

    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Vinod Koul

    Sebastian Andrzej Siewior
     
  • Use cppi41_pop_desc() when appropriate instead of open-coding the same
    functionality again. That makes the code more readable. The function has
    to be moved some lines up for this change.

    Signed-off-by: Daniel Mack
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Vinod Koul

    Daniel Mack
     
  • With active users over suspend/resume cycles, it turns out that
    more registers, in particular DMA_TDFDQ and RXHPCRA0, have to be
    restored on resume.

    Signed-off-by: Daniel Mack
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Vinod Koul

    Daniel Mack
     
  • Signed-off-by: Sebastian Andrzej Siewior
    Acked-by: Olof Johansson
    Signed-off-by: Vinod Koul

    Sebastian Andrzej Siewior
     
  • Using the PaRAM configuration function that we split for reuse by the
    different DMA types, we implement Cyclic DMA support.
    For the cyclic case, we pass different configuration parameters to this
    function, and handle all the Cyclic-specific functionality separately.

    Callbacks to the DMA users are handled using vchan_cyclic_callback in
    the virt-dma layer. Linking is handled the same way as the slave SG case
    except for the last slot where we link it back to the first one in a
    cyclic fashion.

    For continuity, we check for cases where no.of periods is great than the
    MAX number of slots the driver can allocate for a particular descriptor
    and error out on such cases.

    Signed-off-by: Joel Fernandes
    Signed-off-by: Vinod Koul

    Joel Fernandes
     

01 Nov, 2013

2 commits


31 Oct, 2013

2 commits

  • Driver core clears the driver data to NULL after device_release
    or on probe failure, so just remove it from here.

    Driver core change:
    "device-core: Ensure drvdata = NULL when no driver is bound"
    (sha1: 0998d0631001288a5974afc0b2a5f568bcdecb4d)

    Signed-off-by: Michal Simek
    Signed-off-by: Vinod Koul

    Michal Simek
     
  • drivers/dma/imx-dma.c:575:3: warning: format '%x' expects argument of type 'unsigned int', but argument 6 has type 'dma_addr_t'
    drivers/dma/imx-dma.c:575:3: warning: format '%x' expects argument of type 'unsigned int', but argument 7 has type 'dma_addr_t'
    drivers/dma/imx-dma.c:589:4: warning: format '%x' expects argument of type 'unsigned int', but argument 9 has type 'dma_addr_t'
    drivers/dma/imx-dma.c:599:4: warning: format '%x' expects argument of type 'unsigned int', but argument 9 has type 'dma_addr_t'
    drivers/dma/imx-dma.c:929:2: warning: format '%x' expects argument of type 'unsigned int', but argument 6 has type 'dma_addr_t'
    drivers/dma/imx-dma.c:929:2: warning: format '%x' expects argument of type 'unsigned int', but argument 7 has type 'dma_addr_t'
    drivers/dma/imx-dma.c:959:2: warning: format '%x' expects argument of type 'unsigned int', but argument 6 has type 'dma_addr_t'
    drivers/dma/imx-dma.c:959:2: warning: format '%x' expects argument of type 'unsigned int', but argument 7 has type 'dma_addr_t'

    We can't use the %pa format for these because this relates to phys_addr_t,
    and dma_addr_t can be a different size. So, fix these by converting them
    to %llx and casting the dma_addr_t to always be unsigned long long.

    While we're here, also use %zu for size_t.

    Signed-off-by: Russell King
    Signed-off-by: Vinod Koul

    Russell King
     

30 Oct, 2013

3 commits


28 Oct, 2013

7 commits

  • Linus Torvalds
     
  • Pull parisc fix from Helge Deller:
    "This is a 2-line patch to save the CPU register which holds our task
    thread info pointer before calling a firmware function and then to
    restore it again afterwards.

    This is necessary because on some 64bit machines the high-order 32bits
    are being clobbered by the firmware call, and thus we failed to bring
    up secondary CPUs (and instead crashed the kernel) in some situations
    eg if we had more than 4GB RAM. This patch fixes a bug which has been
    since ever in the parisc linux kernel and which prevented some people
    to use a 64bit kernel"

    * 'parisc-3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    parisc: Do not crash 64bit SMP kernels on machines with >= 4GB RAM

    Linus Torvalds
     
  • Pull timer fix from Ingo Molnar:
    "This tree contains a clockevents regression fix for certain ARM
    subarchitectures"

    * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    clockevents: Sanitize ticks to nsec conversion

    Linus Torvalds
     
  • Pull perf fixes from Ingo Molnar:
    "The tree contains three fixes:

    - Two tooling fixes

    - Reversal of the new 'MMAP2' extended mmap record ABI, introduced in
    this merge window. (Patches were proposed to fix it but it was all
    a bit late and we felt it's safer to just delay the ABI one more
    kernel release and do it right)"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf: Disable PERF_RECORD_MMAP2 support
    perf scripting perl: Fix build error on Fedora 12
    perf probe: Fix to initialize fname always before use it

    Linus Torvalds
     
  • Pull locking fix from Ingo Molnar:
    "This tree fixes a boot crash in CONFIG_DEBUG_MUTEXES=y kernels, on
    kernels built with GCC 3.x (there are still such distros)"

    Side note: it's not just a fix for old gcc versions, it's also removing
    an incredibly broken/subtle check that LLVM had issues with, and that
    made no sense.

    * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    mutex: Avoid gcc version dependent __builtin_constant_p() usage

    Linus Torvalds
     
  • Pull SCSI target fixes from Nicholas Bellinger:
    "Here are the outstanding target pending fixes for v3.12-rc7.

    This includes a number of EXTENDED_COPY related fixes as a result of
    Thomas and Doug's continuing testing and feedback.

    Also included is an important vhost/scsi fix that addresses a long
    standing issue where the 'write' parameter for get_user_pages_fast()
    was incorrectly set for virtio-scsi WRITEs -> DMA_TO_DEVICE, and not
    for virtio-scsi READs -> DMA_FROM_DEVICE.

    This resulted in random userspace segfaults and other unpleasantness
    on KVM host, and unfortunately has been an issue since the initial
    merge of vhost/scsi in v3.6. This patch is CC'ed to stable, along
    with two other less critical items"

    * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
    vhost/scsi: Fix incorrect usage of get_user_pages_fast write parameter
    target/pscsi: fix return value check
    target: Fail XCOPY for non matching source + destination block_size
    target: Generate failure for XCOPY I/O with non-zero scsi_status
    target: Add missing XCOPY I/O operation sense_buffer
    iser-target: check device before dereferencing its variable
    target: Return an error for WRITE SAME with ANCHOR==1
    target: Fix assignment of LUN in tracepoints
    target: Reject EXTENDED_COPY when emulate_3pc is disabled
    target: Allow non zero ListID in EXTENDED_COPY parameter list
    target: Make target_do_xcopy failures return INVALID_PARAMETER_LIST

    Linus Torvalds
     
  • Pull slave-dmaengine fixes from Vinod Koul:
    "Here is the late fixes pull request for dmaengine while you fly back
    from KS.

    We have a new dmaengine ML hosted by vger so a patch for that along
    with addition of Dave as driver mainatainer for ioat. Other fixes are
    memeory leak fixes on edma driver, small fixes on rcar-hpbdma driver
    by Sergei"

    * 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
    dmaengine: edma: fix another memory leak
    dma: edma: Fix memory leak
    MAINTAINERS: add to ioatdma maintainer list
    MAINTAINERS: add the new dmaengine mailing list

    Linus Torvalds
     

27 Oct, 2013

1 commit

  • Since the beginning of the parisc-linux port, sometimes 64bit SMP kernels were
    not able to bring up other CPUs than the monarch CPU and instead crashed the
    kernel. The reason was unclear, esp. since it involved various machines (e.g.
    J5600, J6750 and SuperDome). Testing showed, that those crashes didn't happened
    when less than 4GB were installed, or if a 32bit Linux kernel was booted.

    In the end, the fix for those SMP problems is trivial:
    During the early phase of the initialization of the CPUs, including the monarch
    CPU, the PDC_PSW firmware function to enable WIDE (=64bit) mode is called.
    It's documented that this firmware function may clobber various registers, and
    one one of those possibly clobbered registers is %cr30 which holds the task
    thread info pointer.

    Now, if %cr30 would always have been clobbered, then this bug would have been
    detected much earlier. But lots of testing finally showed, that - at least for
    %cr30 - on some machines only the upper 32bits of the 64bit register suddenly
    turned zero after the firmware call.

    So, after finding the root cause, the explanation for the various crashes
    became clear:
    - On 32bit SMP Linux kernels all upper 32bit were zero, so we didn't faced this
    problem.
    - Monarch CPUs in 64bit mode always booted sucessfully, because the inital task
    thread info pointer was below 4GB.
    - Secondary CPUs booted sucessfully on machines with less than 4GB RAM because
    the upper 32bit were zero anyay.
    - Secondary CPus failed to boot if we had more than 4GB RAM and the task thread
    info pointer was located above the 4GB boundary.

    Finally, the patch to fix this problem is trivial by saving the %cr30 register
    before the firmware call and restoring it afterwards.

    Signed-off-by: Helge Deller
    Signed-off-by: John David Anglin
    Cc: # 2.6.12+
    Signed-off-by: Helge Deller

    Helge Deller
     

26 Oct, 2013

6 commits

  • Pull ACPI and power management fixes from
    "These fix two bugs in the intel_pstate driver, a hibernate bug leading
    to nasty resume failures sometimes and acpi-cpufreq initialization bug
    that causes problems to happen during module unload when intel_pstate
    is in use.

    Specifics:

    - Fix for rounding errors in intel_pstate causing CPU utilization to
    be underestimated from Brennan Shacklett.

    - intel_pstate fix to always use the correct max pstate value when
    computing the min pstate from Dirk Brandewie.

    - Hibernation fix for deadlocking resume in cases when the probing of
    the device containing the image is deferred from Russ Dill.

    - acpi-cpufreq fix to prevent the module from staying in memory when
    the driver cannot be registered and then attempting to unregister
    things that have never been registered on exit"

    * tag 'pm+acpi-3.12-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    acpi-cpufreq: Fail initialization if driver cannot be registered
    PM / hibernate: Move software_resume to late_initcall_sync
    intel_pstate: Correct calculation of min pstate value
    intel_pstate: Improve accuracy by not truncating until final result

    Linus Torvalds
     
  • Pull final mtd fixes from Brian Norris:
    "A few more last-minute regression fixes, prepared jointly by me and
    David Woodhouse:

    - Revert pxa3xx to its old name to avoid breaking existing
    'mtdparts=' boot strings.

    - Return GPMI NAND to its legacy ECC layout for backwards
    compatibility. We will revisit this in 3.13.

    A note from David on the latter fix: 'This leaves a harmless cosmetic
    warning about an unused function. At this point in the cycle I really
    don't care.'"

    * tag 'for-linus-20131025' of git://git.infradead.org/linux-mtd:
    mtd: gpmi: fix ECC regression
    mtd: nand: pxa3xx: Fix registered MTD name

    Linus Torvalds
     
  • This patch addresses a long-standing bug where the get_user_pages_fast()
    write parameter used for setting the underlying page table entry permission
    bits was incorrectly set to write=1 for data_direction=DMA_TO_DEVICE, and
    passed into get_user_pages_fast() via vhost_scsi_map_iov_to_sgl().

    However, this parameter is intended to signal WRITEs to pinned userspace
    PTEs for the virtio-scsi DMA_FROM_DEVICE -> READ payload case, and *not*
    for the virtio-scsi DMA_TO_DEVICE -> WRITE payload case.

    This bug would manifest itself as random process segmentation faults on
    KVM host after repeated vhost starts + stops and/or with lots of vhost
    endpoints + LUNs.

    Cc: Stefan Hajnoczi
    Cc: Michael S. Tsirkin
    Cc: Asias He
    Cc: # 3.6+
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • In case of error, the function scsi_host_lookup() returns NULL
    pointer not ERR_PTR(). The IS_ERR() test in the return value check
    should be replaced with NULL test.

    Signed-off-by: Wei Yongjun
    Cc:
    Signed-off-by: Nicholas Bellinger

    Wei Yongjun
     
  • Pull vfs fixes (try two) from Al Viro:
    "nfsd performance regression fix + seq_file lseek(2) fix"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    seq_file: always update file->f_pos in seq_lseek()
    nfsd regression since delayed fput()

    Linus Torvalds
     
  • The "legacy" ECC layout used until 3.12-rc1 uses all the OOB area by
    computing the ECC strength and ECC step size ourselves.

    Commit 2febcdf84b ("mtd: gpmi: set the BCHs geometry with the ecc info")
    makes the driver use the ECC info (ECC strength and ECC step size)
    provided by the MTD code, and creates a different NAND ECC layout
    for the BCH, and use the new ECC layout. This causes a regression:

    We can not mount the ubifs which was created by the old NAND ECC layout.

    This patch fixes this issue by reverting to the legacy ECC layout.

    We will probably introduce a new device-tree property to indicate that
    the new ECC layout can be used. For now though, for the imminent 3.12
    release, we just unconditionally revert to the 3.11 behaviour.

    This leaves a harmless cosmetic warning about an unused function. At
    this point in the cycle I really don't care.

    Signed-off-by: David Woodhouse
    Signed-off-by: Brian Norris
    Acked-by: Huang Shijie
    Acked-by: Marek Vasut
    Tested-by: Marek Vasut

    David Woodhouse
     

25 Oct, 2013

11 commits