31 Oct, 2011

1 commit

  • The changed files were only including linux/module.h for the
    EXPORT_SYMBOL infrastructure, and nothing else. Revector them
    onto the isolated export header for faster compile times.

    Nothing to see here but a whole lot of instances of:

    -#include
    +#include

    This commit is only changing the kernel dir; next targets
    will probably be mm, fs, the arch dirs, etc.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

31 Mar, 2011

1 commit


05 Aug, 2010

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (39 commits)
    random: Reorder struct entropy_store to remove padding on 64bits
    padata: update API documentation
    padata: Remove padata_get_cpumask
    crypto: pcrypt - Update pcrypt cpumask according to the padata cpumask notifier
    crypto: pcrypt - Rename pcrypt_instance
    padata: Pass the padata cpumasks to the cpumask_change_notifier chain
    padata: Rearrange set_cpumask functions
    padata: Rename padata_alloc functions
    crypto: pcrypt - Dont calulate a callback cpu on empty callback cpumask
    padata: Check for valid cpumasks
    padata: Allocate cpumask dependend recources in any case
    padata: Fix cpu index counting
    crypto: geode_aes - Convert pci_table entries to PCI_VDEVICE (if PCI_ANY_ID is used)
    pcrypt: Added sysfs interface to pcrypt
    padata: Added sysfs primitives to padata subsystem
    padata: Make two separate cpumasks
    padata: update documentation
    padata: simplify serialization mechanism
    padata: make padata_do_parallel to return zero on success
    padata: Handle empty padata cpumasks
    ...

    Linus Torvalds
     

31 Jul, 2010

4 commits

  • A function that copies the padata cpumasks to a user buffer
    is a bit error prone. The cpumask can change any time so we
    can't be sure to have the right cpumask when using this function.
    A user who is interested in the padata cpumasks should register
    to the padata cpumask notifier chain instead. Users of
    padata_get_cpumask are already updated, so we can remove it.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • We pass a pointer to the new padata cpumasks to the cpumask_change_notifier
    chain. So users can access the cpumasks without the need of an extra
    padata_get_cpumask function.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • padata_set_cpumask needs to be protected by a lock. We make
    __padata_set_cpumasks unlocked and static. So this function
    can be used by the exported and locked padata_set_cpumask and
    padata_set_cpumasks functions.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • We rename padata_alloc to padata_alloc_possible because this
    function allocates a padata_instance and uses the cpu_possible
    mask for parallel and serial workers. Also we rename __padata_alloc
    to padata_alloc to avoid to export underlined functions. Underlined
    functions are considered to be private to padata. Users are updated
    accordingly.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     

26 Jul, 2010

3 commits

  • Now that we allow to change the cpumasks from userspace, we have
    to check for valid cpumasks in padata_do_parallel. This patch adds
    the necessary check. This fixes a division by zero crash if the
    parallel cpumask contains no active cpu.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • The cpumask separation work assumes the cpumask dependend recources
    present regardless of valid or invalid cpumasks. With this patch
    we allocate the cpumask dependend recources in any case. This fixes
    two NULL pointer dereference crashes in padata_replace and in
    padata_get_cpumask.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • The counting of the cpu index got lost with a recent commit.
    This patch restores it. This fixes a hang of the parallel worker
    threads on cpu hotplug.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     

19 Jul, 2010

2 commits

  • Added sysfs primitives to padata subsystem. Now API user may
    embedded kobject each padata instance contains into any sysfs
    hierarchy. For now padata sysfs interface provides only
    two objects:
    serial_cpumask [RW] - cpumask for serial workers
    parallel_cpumask [RW] - cpumask for parallel workers

    Signed-off-by: Dan Kruchinin
    Signed-off-by: Herbert Xu

    Dan Kruchinin
     
  • The aim of this patch is to make two separate cpumasks
    for padata parallel and serial workers respectively.
    It allows user to make more thin and sophisticated configurations
    of padata framework. For example user may bind parallel and serial workers to non-intersecting
    CPU groups to gain better performance. Also each padata instance has notifiers chain for its
    cpumasks now. If either parallel or serial or both masks were changed all
    interested subsystems will get notification about that. It's especially useful
    if padata user uses algorithm for callback CPU selection according to serial cpumask.

    Signed-off-by: Dan Kruchinin
    Signed-off-by: Herbert Xu

    Dan Kruchinin
     

14 Jul, 2010

5 commits

  • We count the number of processed objects on a percpu basis,
    so we need to go through all the percpu reorder queues to calculate
    the sequence number of the next object that needs serialization.
    This patch changes this to count the number of processed objects
    global. So we can calculate the sequence number and the percpu
    reorder queue of the next object that needs serialization without
    searching through the percpu reorder queues. This avoids some
    accesses to memory of foreign cpus.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • To return -EINPROGRESS on success in padata_do_parallel was
    considered to be odd. This patch changes this to return zero
    on success. Also the only user of padata, pcrypt is adapted to
    convert a return of zero to -EINPROGRESS within the crypto layer.
    This also removes the pcrypt fallback if padata_do_parallel
    was called on a not running padata instance as we can't handle it
    anymore. This fallback was unused, so it's save to remove it.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • This patch fixes a bug when the padata cpumask does not
    intersect with the active cpumask. In this case we get a
    division by zero in padata_alloc_pd and we end up with a
    useless padata instance. Padata can end up with an empty
    cpumask for two reasons:

    1. A user removed the last cpu that belongs to the padata
    cpumask and the active cpumask.

    2. The last cpu that belongs to the padata cpumask and the
    active cpumask goes offline.

    We introduce a function padata_validate_cpumask to check if the padata
    cpumask does intersect with the active cpumask. If the cpumasks do not
    intersect we mark the instance as invalid, so it can't be used. We do not
    allocate the cpumask dependend recources in this case. This fixes the
    division by zero and keeps the padate instance in a consistent state.

    It's not possible to trigger this bug by now because the only padata user,
    pcrypt uses always the possible cpumask.

    Reported-by: Dan Kruchinin
    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • This patch makes padata_stop to block until the padata
    instance is unused. Also we split padata_stop to a locked
    and a unlocked version. This is in preparation to be able
    to change the cpumask after a call to patata stop.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • This patch introduces the PADATA_INVALID flag which is
    checked on padata start. This will be used to mark a padata
    instance as invalid, if the padata cpumask does not intersect
    with the active cpumask. we change padata_start to return an
    error if the PADATA_INVALID is set. Also we adapt the only
    padata user, pcrypt to this change.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     

03 Jun, 2010

1 commit

  • MAX_SEQ_NR is used in padata_alloc_pd() like this:

    pd->max_seq_nr = (MAX_SEQ_NR / num_cpus) * num_cpus - 1;

    It needs parenthesis or the divide by num_cpus takes precedence over the
    subtraction.

    Signed-off-by: Dan Carpenter
    Acked-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Dan Carpenter
     

28 May, 2010

1 commit


19 May, 2010

4 commits

  • Add get_online_cpus/put_online_cpus to ensure that no cpu goes
    offline during the flushing of the padata percpu queues.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • yield was used to wait until all references of the internal control
    structure in use are dropped before it is freed. This patch implements
    padata_flush_queues which actively flushes the padata percpu queues
    in this case.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     
  • padata_get_next needs to check whether the next object that
    need serialization must be parallel processed by the local cpu.
    This check was wrong implemented and returned always true,
    so the try_again loop in padata_reorder was never taken. This
    can lead to object leaks in some rare cases due to a race that
    appears with the trylock in padata_reorder. The try_again loop
    was not a good idea after all, because a cpu could take that
    loop frequently, so we handle this with a timer instead.

    This patch adds a timer to handle the race that appears with
    the trylock. If cpu1 queues an object to the reorder queue while
    cpu2 holds the pd->lock but left the while loop in padata_reorder
    already, cpu2 can't care for this object and cpu1 exits because
    it can't get the lock. Usually the next cpu that takes the lock
    cares for this object too. We need the timer just if this object
    was the last one that arrives to the reorder queues. The timer
    function sends it out in this case.

    Signed-off-by: Steffen Klassert
    Signed-off-by: Herbert Xu

    Steffen Klassert
     

03 May, 2010

6 commits


30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

29 Mar, 2010

1 commit

  • This patch removes the __cupinit from padata_cpu_callback(),
    which is refered by the exportet function padata_alloc().

    This could lead to problems if CONFIG_HOTPLUG_CPU is disabled,
    which should happen very often.

    WARNING: kernel/built-in.o(.text+0x7ffcb): Section mismatch in reference from the function padata_alloc() to the function .cpuinit.text:padata_cpu_callback()
    The function padata_alloc() references
    the function __cpuinit padata_cpu_callback().
    This is often because padata_alloc lacks a __cpuinit
    annotation or the annotation of padata_cpu_callback is wrong.

    Signed-off-by: Henrik Kretzschmar
    Signed-off-by: Herbert Xu

    Henrik Kretzschmar
     

04 Mar, 2010

1 commit


06 Jan, 2010

1 commit