31 Dec, 2009

1 commit

  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:
    drivers/dma: Correct use after free
    drivers/dma: drop unnecesary memset
    ioat2,3: put channel hardware in known state at init
    async_tx: expand async raid6 test to cover ioatdma corner case
    ioat3: fix p-disabled q-continuation
    sh: fix DMA driver's descriptor chaining and cookie assignment
    dma: at_hdmac: correct incompatible type for argument 1 of 'spin_lock_bh'

    Linus Torvalds
     

18 Dec, 2009

1 commit


15 Dec, 2009

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (34 commits)
    m68k: rename global variable vmalloc_end to m68k_vmalloc_end
    percpu: add missing per_cpu_ptr_to_phys() definition for UP
    percpu: Fix kdump failure if booted with percpu_alloc=page
    percpu: make misc percpu symbols unique
    percpu: make percpu symbols in ia64 unique
    percpu: make percpu symbols in powerpc unique
    percpu: make percpu symbols in x86 unique
    percpu: make percpu symbols in xen unique
    percpu: make percpu symbols in cpufreq unique
    percpu: make percpu symbols in oprofile unique
    percpu: make percpu symbols in tracer unique
    percpu: make percpu symbols under kernel/ and mm/ unique
    percpu: remove some sparse warnings
    percpu: make alloc_percpu() handle array types
    vmalloc: fix use of non-existent percpu variable in put_cpu_var()
    this_cpu: Use this_cpu_xx in trace_functions_graph.c
    this_cpu: Use this_cpu_xx for ftrace
    this_cpu: Use this_cpu_xx in nmi handling
    this_cpu: Use this_cpu operations in RCU
    this_cpu: Use this_cpu ops for VM statistics
    ...

    Fix up trivial (famous last words) global per-cpu naming conflicts in
    arch/x86/kvm/svm.c
    mm/slab.c

    Linus Torvalds
     

09 Dec, 2009

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    hwrng: core - Prevent too-small buffer sizes
    hwrng: virtio-rng - Convert to new API
    hwrng: core - Replace u32 in driver API with byte array
    crypto: ansi_cprng - Move FIPS functions under CONFIG_CRYPTO_FIPS
    crypto: testmgr - Add ghash algorithm test before provide to users
    crypto: ghash-clmulni-intel - Put proper .data section in place
    crypto: ghash-clmulni-intel - Use gas macro for PCLMULQDQ-NI and PSHUFB
    crypto: aesni-intel - Use gas macro for AES-NI instructions
    x86: Generate .byte code for some new instructions via gas macro
    crypto: ghash-intel - Fix irq_fpu_usable usage
    crypto: ghash-intel - Add PSHUFB macros
    crypto: ghash-intel - Hard-code pshufb
    crypto: ghash-intel - Fix building failure on x86_32
    crypto: testmgr - Fix warning
    crypto: ansi_cprng - Fix test in get_prng_bytes
    crypto: hash - Remove cra_u.{digest,hash}
    crypto: api - Remove digest case from procfs show handler
    crypto: hash - Remove legacy hash/digest code
    crypto: ansi_cprng - Add FIPS wrapper
    crypto: ghash - Add PCLMULQDQ accelerated implementation

    Linus Torvalds
     

08 Dec, 2009

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6: (43 commits)
    security/tomoyo: Remove now unnecessary handling of security_sysctl.
    security/tomoyo: Add a special case to handle accesses through the internal proc mount.
    sysctl: Drop & in front of every proc_handler.
    sysctl: Remove CTL_NONE and CTL_UNNUMBERED
    sysctl: kill dead ctl_handler definitions.
    sysctl: Remove the last of the generic binary sysctl support
    sysctl net: Remove unused binary sysctl code
    sysctl security/tomoyo: Don't look at ctl_name
    sysctl arm: Remove binary sysctl support
    sysctl x86: Remove dead binary sysctl support
    sysctl sh: Remove dead binary sysctl support
    sysctl powerpc: Remove dead binary sysctl support
    sysctl ia64: Remove dead binary sysctl support
    sysctl s390: Remove dead sysctl binary support
    sysctl frv: Remove dead binary sysctl support
    sysctl mips/lasat: Remove dead binary sysctl support
    sysctl drivers: Remove dead binary sysctl support
    sysctl crypto: Remove dead binary sysctl support
    sysctl security/keys: Remove dead binary sysctl support
    sysctl kernel: Remove binary sysctl logic
    ...

    Linus Torvalds
     

01 Dec, 2009

2 commits


23 Nov, 2009

2 commits


20 Nov, 2009

1 commit

  • ioat3.2 does not support asynchronous error notifications which makes
    the driver experience latencies when non-zero pq validate results are
    expected. Provide a mechanism for turning off async_xor_val and
    async_syndrome_val via Kconfig. This approach is generally useful for
    any driver that specifies ASYNC_TX_DISABLE_CHANNEL_SWITCH and would like
    to force the async_tx api to fall back to the synchronous path for
    certain operations.

    Signed-off-by: Dan Williams

    Dan Williams
     

19 Nov, 2009

1 commit


16 Nov, 2009

1 commit

  • The flow of the complete function (xxx_done) in gcm.c is as follow:

    void complete(struct crypto_async_request *areq, int err)
    {
    struct aead_request *req = areq->data;

    if (!err) {
    err = async_next_step();
    if (err == -EINPROGRESS || err == -EBUSY)
    return;
    }

    complete_for_next_step(areq, err);
    }

    But *areq may be destroyed in async_next_step(), this makes
    complete_for_next_step() can not work properly. To fix this, one of
    following methods is used for each complete function.

    - Add a __complete() for each complete(), which accept struct
    aead_request *req instead of areq, so avoid using areq after it is
    destroyed.

    - Expand complete_for_next_step().

    The fixing method is based on the idea of Herbert Xu.

    Signed-off-by: Huang Ying
    Signed-off-by: Herbert Xu

    Huang Ying
     

12 Nov, 2009

1 commit


01 Nov, 2009

1 commit

  • * 'for-linus' of git://neil.brown.name/md:
    async_tx: fix asynchronous raid6 recovery for ddf layouts
    async_pq: rename scribble page
    async_pq: kill a stray dma_map() call and other cleanups
    md/raid6: kill a gcc-4.0.1 'uninitialized variable' warning
    raid6/async_tx: handle holes in block list in async_syndrome_val
    md/async: don't pass a memory pointer as a page pointer.
    md: Fix handling of raid5 array which is being reshaped to fewer devices.
    md: fix problems with RAID6 calculations for DDF.
    md/raid456: downlevel multicore operations to raid_run_ops
    md: drivers/md/unroll.pl replaced with awk analog
    md: remove clumsy usage of do_sync_mapping_range from bitmap code
    md: raid1/raid10: handle allocation errors during array setup.
    md/raid5: initialize conf->device_lock earlier
    md/raid1/raid10: add a cond_resched
    Revert "md: do not progress the resync process if the stripe was blocked"

    Linus Torvalds
     

27 Oct, 2009

3 commits


20 Oct, 2009

3 commits

  • The raid6 recovery code currently requires special handling of the
    4-disk and 5-disk recovery scenarios for the native layout. Quoting
    from commit 0a82a623:

    In these situations the default N-disk algorithm will present
    0-source or 1-source operations to dma devices. To cover for
    dma devices where the minimum source count is 2 we implement
    4-disk and 5-disk handling in the recovery code.

    The ddf layout presents disks=6 and disks=7 to the recovery code in
    these situations. Instead of looking at the number of disks count the
    number of non-zero sources in the list and call the special case code
    when the number of non-failed sources is 0 or 1.

    [neilb@suse.de: replace 'ddf' flag with counting good sources]
    Signed-off-by: Dan Williams

    Dan Williams
     
  • The global scribble page is used as a temporary destination buffer when
    disabling the P or Q result is requested. The local scribble buffer
    contains memory for performing address conversions. Rename the global
    variable to avoid confusion.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • - update the kernel doc for async_syndrome to indicate what NULL in the
    source list means
    - whitespace fixups

    Signed-off-by: Dan Williams

    Dan Williams
     

19 Oct, 2009

4 commits


16 Oct, 2009

2 commits

  • async_syndrome_val check the P and Q blocks used for RAID6
    calculations.
    With DDF raid6, some of the data blocks might be NULL, so
    this needs to be handled in the same way that async_gen_syndrome
    handles it.

    As async_syndrome_val calls async_xor, also enhance async_xor
    to detect and skip NULL blocks in the list.

    Signed-off-by: NeilBrown

    NeilBrown
     
  • md/raid6 passes a list of 'struct page *' to the async_tx routines,
    which then either DMA map them for offload, or take the page_address
    for CPU based calculations.

    For RAID6 we sometime leave 'blanks' in the list of pages.
    For CPU based calcs, we want to treat theses as a page of zeros.
    For offloaded calculations, we simply don't pass a page to the
    hardware.

    Currently the 'blanks' are encoded as a pointer to
    raid6_empty_zero_page. This is a 4096 byte memory region, not a
    'struct page'. This is mostly handled correctly but is rather ugly.

    So change the code to pass and expect a NULL pointer for the blanks.
    When taking page_address of a page, we need to check for a NULL and
    in that case use raid6_empty_zero_page.

    Signed-off-by: NeilBrown

    NeilBrown
     

12 Oct, 2009

1 commit


03 Oct, 2009

1 commit


23 Sep, 2009

1 commit


22 Sep, 2009

1 commit


17 Sep, 2009

1 commit

  • Testing on x86_64 with NDISKS=255 yields:

    do_IRQ: modprobe near stack overflow (cur:ffff88007d19c000,sp:ffff88007d19c128)

    ...and eventually

    general protection fault: 0000 [#1]

    Moving the scribble buffers off the stack allows the test to complete
    successfully.

    Signed-off-by: Dan Williams

    Dan Williams
     

12 Sep, 2009

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (102 commits)
    crypto: sha-s390 - Fix warnings in import function
    crypto: vmac - New hash algorithm for intel_txt support
    crypto: api - Do not displace newly registered algorithms
    crypto: ansi_cprng - Fix module initialization
    crypto: xcbc - Fix alignment calculation of xcbc_tfm_ctx
    crypto: fips - Depend on ansi_cprng
    crypto: blkcipher - Do not use eseqiv on stream ciphers
    crypto: ctr - Use chainiv on raw counter mode
    Revert crypto: fips - Select CPRNG
    crypto: rng - Fix typo
    crypto: talitos - add support for 36 bit addressing
    crypto: talitos - align locks on cache lines
    crypto: talitos - simplify hmac data size calculation
    crypto: mv_cesa - Add support for Orion5X crypto engine
    crypto: cryptd - Add support to access underlaying shash
    crypto: gcm - Use GHASH digest algorithm
    crypto: ghash - Add GHASH digest algorithm for GCM
    crypto: authenc - Convert to ahash
    crypto: api - Fix aligned ctx helper
    crypto: hmac - Prehash ipad/opad
    ...

    Linus Torvalds
     

09 Sep, 2009

6 commits

  • Conflicts:
    crypto/async_tx/async_xor.c
    drivers/dma/ioat/dma_v2.h
    drivers/dma/ioat/pci.c
    drivers/md/raid5.c

    Dan Williams
     
  • Some engines have transfer size and address alignment restrictions. Add
    a per-operation alignment property to struct dma_device that the async
    routines and dmatest can use to check alignment capabilities.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • Channel switching is problematic for some dmaengine drivers as the
    architecture precludes separating the ->prep from ->submit. In these
    cases the driver can select ASYNC_TX_DISABLE_CHANNEL_SWITCH to modify
    the async_tx allocator to only return channels that support all of the
    required asynchronous operations.

    For example MD_RAID456=y selects support for asynchronous xor, xor
    validate, pq, pq validate, and memcpy. When
    ASYNC_TX_DISABLE_CHANNEL_SWITCH=y any channel with all these
    capabilities is marked DMA_ASYNC_TX allowing async_tx_find_channel() to
    quickly locate compatible channels with the guarantee that dependency
    chains will remain on one channel. When
    ASYNC_TX_DISABLE_CHANNEL_SWITCH=n async_tx_find_channel() may select
    channels that lead to operation chains that need to cross channel
    boundaries using the async_tx channel switch capability.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • Some engines optimize operation by reading ahead in the descriptor chain
    such that descriptor2 may start execution before descriptor1 completes.
    If descriptor2 depends on the result from descriptor1 then a fence is
    required (on descriptor2) to disable this optimization. The async_tx
    api could implicitly identify dependencies via the 'depend_tx'
    parameter, but that would constrain cases where the dependency chain
    only specifies a completion order rather than a data dependency. So,
    provide an ASYNC_TX_FENCE to explicitly identify data dependencies.

    Signed-off-by: Dan Williams

    Dan Williams
     
  • Conflicts:
    include/linux/dmaengine.h

    Dan Williams
     
  • Dan Williams
     

06 Sep, 2009

1 commit


02 Sep, 2009

1 commit