27 May, 2012

3 commits

  • This makes actually live up to its promise of
    allowing architectures to help tune the string functions that do their
    work a word at a time.

    David had already taken the x86 strncpy_from_user() function, modified
    it to work on sparc, and then done the extra work to make it generically
    useful. This then expands on that work by making x86 use that generic
    version, completing the circle.

    But more importantly, it fixes up the word-at-a-time interfaces so that
    it's now easy to also support things like strnlen_user(), and pretty
    much most random string functions.

    David reports that it all works fine on sparc, and Jonas Bonn reported
    that an earlier version of this worked on OpenRISC too. It's pretty
    easy for architectures to add support for this and just replace their
    private versions with the generic code.

    * generic-string-functions:
    sparc: use the new generic strnlen_user() function
    x86: use the new generic strnlen_user() function
    lib: add generic strnlen_user() function
    word-at-a-time: make the interfaces truly generic
    x86: use generic strncpy_from_user routine

    Linus Torvalds
     
  • Pull arm-soc stmp-dev library code from Olof Johansson:
    "A number of devices are using a common register layout, this adds
    support code for it in lib/stmp_device.c so we do not need to
    duplicate it in each driver."

    Fix up trivial conflicts in drivers/i2c/busses/i2c-mxs.c and
    lib/Makefile

    * tag 'stmp-dev' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    i2c: mxs: use global reset function
    lib: add support for stmp-style devices

    Linus Torvalds
     
  • This adds a new generic optimized strnlen_user() function that uses the
    infrastructure to portably do efficient string
    handling.

    In many ways, strnlen is much simpler than strncpy, and in particular we
    can always pre-align the words we load from memory. That means that all
    the worries about alignment etc are a non-issue, so this one can easily
    be used on any architecture. You obviously do have to do the
    appropriate word-at-a-time.h macros.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

25 May, 2012

2 commits

  • Pull sparc changes from David S. Miller:
    "This has the generic strncpy_from_user() implementation architectures
    can now use, which we've been developing on linux-arch over the past
    few days.

    For good measure I ran both a 32-bit and a 64-bit glibc testsuite run,
    and the latter of which pointed out an adjustment I needed to make to
    sparc's user_addr_max() definition. Linus, you were right, STACK_TOP
    was not the right thing to use, even on sparc itself :-)

    From Sam Ravnborg, we have a conversion of sparc32 over to the common
    alloc_thread_info_node(), since the aspect which originally blocked
    our doing so (sun4c) has been removed."

    Fix up trivial arch/sparc/Kconfig and lib/Makefile conflicts.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
    sparc: Fix user_addr_max() definition.
    lib: Sparc's strncpy_from_user is generic enough, move under lib/
    kernel: Move REPEAT_BYTE definition into linux/kernel.h
    sparc: Increase portability of strncpy_from_user() implementation.
    sparc: Optimize strncpy_from_user() zero byte search.
    sparc: Add full proper error handling to strncpy_from_user().
    sparc32: use the common implementation of alloc_thread_info_node()

    Linus Torvalds
     
  • To use this, an architecture simply needs to:

    1) Provide a user_addr_max() implementation via asm/uaccess.h

    2) Add "select GENERIC_STRNCPY_FROM_USER" to their arch Kcnfig

    3) Remove the existing strncpy_from_user() implementation and symbol
    exports their architecture had.

    Signed-off-by: David S. Miller
    Acked-by: David Howells

    David S. Miller
     

02 May, 2012

1 commit

  • add LPDDR2 data from the JEDEC spec JESD209-2. The data
    includes:

    1. Addressing information for LPDDR2 memories of different
    densities and types(S2/S4)
    2. AC timing data.

    This data will useful for memory controller device drivers.
    Right now this is used by the TI EMIF SDRAM controller
    driver.

    Signed-off-by: Aneesh V
    Reviewed-by: Santosh Shilimkar
    Reviewed-by: Benoit Cousson
    [santosh.shilimkar@ti.com: Moved to drivers/memory from drivers/misc]
    Signed-off-by: Santosh Shilimkar
    Tested-by: Lokesh Vutla
    Signed-off-by: Greg Kroah-Hartman

    Aneesh V
     

21 Apr, 2012

1 commit

  • MX23/28 use IP cores which follow a register layout I have first seen on
    STMP3xxx SoCs. In this layout, every register actually has four u32:

    1.) to store a value directly
    2.) a SET register where every 1-bit sets the corresponding bit,
    others are unaffected
    3.) same with a CLR register
    4.) same with a TOG (toggle) register

    Also, the 2 MSBs in register 0 are always the same and can be used to reset
    the IP core.

    All this is strictly speaking not mach-specific (but IP core specific) and,
    thus, doesn't need to be in mach-mxs/include. At least mx6 also uses IP cores
    following this stmp-style. So:

    Introduce a stmp-style device, put the code and defines for that in a public
    place (lib/), and let drivers for stmp-style devices select that code.
    To avoid regressions and ease reviewing, the actual code is simply copied from
    mach-mxs. It definately wants updates, but those need a seperate patch series.

    Voila, mach dependency gone, reusable code introduced. Note that I didn't
    remove the duplicated code from mach-mxs yet, first the drivers have to be
    converted.

    Signed-off-by: Wolfram Sang
    Acked-by: Shawn Guo
    Acked-by: Dong Aisheng

    Wolfram Sang
     

29 Mar, 2012

1 commit


28 Mar, 2012

1 commit

  • Pull UML changes from Richard Weinberger:
    "Mostly bug fixes and cleanups"

    * 'for-linus-3.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml: (35 commits)
    um: Update defconfig
    um: Switch to large mcmodel on x86_64
    MTD: Relax dependencies
    um: Wire CONFIG_GENERIC_IO up
    um: Serve io_remap_pfn_range()
    Introduce CONFIG_GENERIC_IO
    um: allow SUBARCH=x86
    um: most of the SUBARCH uses can be killed
    um: deadlock in line_write_interrupt()
    um: don't bother trying to rebuild CHECKFLAGS for USER_OBJS
    um: use the right ifdef around exports in user_syms.c
    um: a bunch of headers can be killed by using generic-y
    um: ptrace-generic.h doesn't need user.h
    um: kill HOST_TASK_PID
    um: remove pointless include of asm/fixmap.h from asm/pgtable.h
    um: asm-offsets.h might as well come from underlying arch...
    um: merge processor_{32,64}.h a bit...
    um: switch close_chan() to struct line
    um: race fix: initialize delayed_work *before* registering IRQ
    um: line->have_irq is never checked...
    ...

    Linus Torvalds
     

25 Mar, 2012

1 commit

  • There are situations where CONFIG_HAS_IOMEM is too restrictive.
    For example CONFIG_MTD_NAND_NANDSIM depends on CONFIG_HAS_IOMEM
    but it works perfectly fine if an architecture without io memory
    just includes asm-generic/io.h or implements everything defined in it.
    UML is such a corner case.

    Signed-off-by: Richard Weinberger

    Richard Weinberger
     

24 Mar, 2012

3 commits

  • Allow the kernel builder to choose a crc32* algorithm for the kernel.

    Signed-off-by: Darrick J. Wong
    Cc: Bob Pearson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Darrick J. Wong
     
  • Reuse the existing crc32 code to stamp out a crc32c implementation.

    Signed-off-by: Darrick J. Wong
    Cc: Herbert Xu
    Cc: Bob Pearson
    Cc: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Darrick J. Wong
     
  • Replace the unit test provided in crc32.c, which doesn't have a makefile
    and doesn't compile with current headers, with a simpler self test
    routine that also gives a measure of performance and runs at module init
    time. The self test option can be enabled through a configuration
    option CONFIG_CRC32_SELFTEST.

    The test stresses the pre and post loops and is thus not very realistic
    since actual uses will likely have addresses and lengths that are at
    least 4 byte aligned. However, the main loop is long enough so that the
    performance is dominated by that loop.

    The expected values for crc32_le and crc32_be were generated with the
    original version of crc32.c using CRC_BITS_LE = 8 and CRC_BITS_BE = 8.
    These values were then used to check all the values of the BITS
    parameters in both the original and new versions.

    The performance results show some variability from run to run in spite
    of attempts to both warm the cache and reduce the amount of OS noise by
    limiting interrutps during the test. To get comparable results and to
    analyse options wrt performance the best time reported over a small
    sample of runs has been taken.

    [djwong@us.ibm.com: Minor changelog tweaks]
    Signed-off-by: Bob Pearson
    Signed-off-by: Darrick J. Wong
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bob Pearson
     

08 Feb, 2012

1 commit

  • arch: fix ioport mapping on mips,sh

    Kevin Cernekee reported that recent cleanup that replaced pci_iomap with
    a generic function failed to take into account the differences in io
    port handling on mips and sh architectures.

    Rather than revert the changes reintroducing the code duplication, this
    patchset fixes this by adding ability for architectures to override
    ioport mapping for pci devices.

    Signed-off-by: Michael S. Tsirkin

    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
    sh: use the the PCI channels's io_map_base
    mips: use the the PCI controller's io_map_base
    lib: add NO_GENERIC_PCI_IOPORT_MAP

    Linus Torvalds
     

02 Feb, 2012

1 commit

  • Both sparc 32-bit's software divide assembler and MPILIB provide
    clz_tab[] with identical contents.

    Break it out into a seperate object file and select it when
    SPARC32 or MPILIB is set.

    Reported-by: Al Viro
    Signed-off-by: David S. Miller
    Signed-off-by: James Morris

    David Miller
     

01 Feb, 2012

1 commit


18 Jan, 2012

4 commits


11 Jan, 2012

2 commits

  • * 'for-linus' of git://selinuxproject.org/~jmorris/linux-security: (32 commits)
    ima: fix invalid memory reference
    ima: free duplicate measurement memory
    security: update security_file_mmap() docs
    selinux: Casting (void *) value returned by kmalloc is useless
    apparmor: fix module parameter handling
    Security: tomoyo: add .gitignore file
    tomoyo: add missing rcu_dereference()
    apparmor: add missing rcu_dereference()
    evm: prevent racing during tfm allocation
    evm: key must be set once during initialization
    mpi/mpi-mpow: NULL dereference on allocation failure
    digsig: build dependency fix
    KEYS: Give key types their own lockdep class for key->sem
    TPM: fix transmit_cmd error logic
    TPM: NSC and TIS drivers X86 dependency fix
    TPM: Export wait_for_stat for other vendor specific drivers
    TPM: Use vendor specific function for status probe
    tpm_tis: add delay after aborting command
    tpm_tis: Check return code from getting timeouts/durations
    tpm: Introduce function to poll for result of self test
    ...

    Fix up trivial conflict in lib/Makefile due to addition of CONFIG_MPI
    and SIGSIG next to CONFIG_DQL addition.

    Linus Torvalds
     
  • lib: use generic pci_iomap on all architectures

    Many architectures don't want to pull in iomap.c,
    so they ended up duplicating pci_iomap from that file.
    That function isn't trivial, and we are going to modify it
    https://lkml.org/lkml/2011/11/14/183
    so the duplication hurts.

    This reduces the scope of the problem significantly,
    by moving pci_iomap to a separate file and
    referencing that from all architectures.

    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
    alpha: drop pci_iomap/pci_iounmap from pci-noop.c
    mn10300: switch to GENERIC_PCI_IOMAP
    mn10300: add missing __iomap markers
    frv: switch to GENERIC_PCI_IOMAP
    tile: switch to GENERIC_PCI_IOMAP
    tile: don't panic on iomap
    sparc: switch to GENERIC_PCI_IOMAP
    sh: switch to GENERIC_PCI_IOMAP
    powerpc: switch to GENERIC_PCI_IOMAP
    parisc: switch to GENERIC_PCI_IOMAP
    mips: switch to GENERIC_PCI_IOMAP
    microblaze: switch to GENERIC_PCI_IOMAP
    arm: switch to GENERIC_PCI_IOMAP
    alpha: switch to GENERIC_PCI_IOMAP
    lib: add GENERIC_PCI_IOMAP
    lib: move GENERIC_IOMAP to lib/Kconfig

    Fix up trivial conflicts due to changes nearby in arch/{m68k,score}/Kconfig

    Linus Torvalds
     

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
     

30 Nov, 2011

1 commit

  • Implementation of dynamic queue limits (dql). This is a libary which
    allows a queue limit to be dynamically managed. The goal of dql is
    to set the queue limit, number of objects to the queue, to be minimized
    without allowing the queue to be starved.

    dql would be used with a queue which has these properties:

    1) Objects are queued up to some limit which can be expressed as a
    count of objects.
    2) Periodically a completion process executes which retires consumed
    objects.
    3) Starvation occurs when limit has been reached, all queued data has
    actually been consumed but completion processing has not yet run,
    so queuing new data is blocked.
    4) Minimizing the amount of queued data is desirable.

    A canonical example of such a queue would be a NIC HW transmit queue.

    The queue limit is dynamic, it will increase or decrease over time
    depending on the workload. The queue limit is recalculated each time
    completion processing is done. Increases occur when the queue is
    starved and can exponentially increase over successive intervals.
    Decreases occur when more data is being maintained in the queue than
    needed to prevent starvation. The number of extra objects, or "slack",
    is measured over successive intervals, and to avoid hysteresis the
    limit is only reduced by the miminum slack seen over a configurable
    time period.

    dql API provides routines to manage the queue:
    - dql_init is called to intialize the dql structure
    - dql_reset is called to reset dynamic values
    - dql_queued called when objects are being enqueued
    - dql_avail returns availability in the queue
    - dql_completed is called when objects have be consumed in the queue

    Configuration consists of:
    - max_limit, maximum limit
    - min_limit, minimum limit
    - slack_hold_time, time to measure instances of slack before reducing
    queue limit

    Signed-off-by: Tom Herbert
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Tom Herbert
     

29 Nov, 2011

1 commit


25 Nov, 2011

1 commit


22 Nov, 2011

1 commit

  • Fix build errors by adding Kconfig dependency on KEYS.
    CRYPTO dependency removed.

    CC security/integrity/digsig.o
    security/integrity/digsig.c: In function ?integrity_digsig_verify?:
    security/integrity/digsig.c:38:4: error: implicit declaration of function ?request_key?
    security/integrity/digsig.c:38:17: error: ?key_type_keyring? undeclared (first use in this function)
    security/integrity/digsig.c:38:17: note: each undeclared identifier is reported only once for each function it appears in
    make[2]: *** [security/integrity/digsig.o] Error 1

    Reported-by: Randy Dunlap
    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: James Morris

    Dmitry Kasatkin
     

14 Nov, 2011

1 commit


09 Nov, 2011

3 commits

  • This patch implements RSA digital signature verification using GnuPG library.

    The format of the signature and the public key is defined by their respective
    headers. The signature header contains version information, algorithm,
    and keyid, which was used to generate the signature.
    The key header contains version and algorythim type.
    The payload of the signature and the key are multi-precision integers.

    The signing and key management utilities evm-utils provide functionality
    to generate signatures and load keys into the kernel keyring.
    When the key is added to the kernel keyring, the keyid defines the name
    of the key.

    Signed-off-by: Dmitry Kasatkin
    Acked-by: Mimi Zohar

    Dmitry Kasatkin
     
  • Adds the multi-precision-integer maths library which was originally taken
    from GnuPG and ported to the kernel by (among others) David Howells.
    This version is taken from Fedora kernel 2.6.32-71.14.1.el6.
    The difference is that checkpatch reported errors and warnings have been fixed.

    This library is used to implemenet RSA digital signature verification
    used in IMA/EVM integrity protection subsystem.

    Due to patch size limitation, the patch is divided into 4 parts.

    This code is unnecessary for RSA digital signature verification,
    but for completeness it is included here and can be compiled,
    if CONFIG_MPILIB_EXTRA is enabled.

    Signed-off-by: Dmitry Kasatkin

    Dmitry Kasatkin
     
  • Adds the multi-precision-integer maths library which was originally taken
    from GnuPG and ported to the kernel by (among others) David Howells.
    This version is taken from Fedora kernel 2.6.32-71.14.1.el6.
    The difference is that checkpatch reported errors and warnings have been fixed.

    This library is used to implemenet RSA digital signature verification
    used in IMA/EVM integrity protection subsystem.

    Due to patch size limitation, the patch is divided into 4 parts.

    Signed-off-by: Dmitry Kasatkin

    Dmitry Kasatkin
     

30 Oct, 2011

3 commits


04 Oct, 2011

1 commit

  • Because llist code will be used in performance critical scheduler
    code path, make llist_add() and llist_del_all() inline to avoid
    function calling overhead and related 'glue' overhead.

    Signed-off-by: Huang Ying
    Acked-by: Mathieu Desnoyers
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1315461646-1379-2-git-send-email-ying.huang@intel.com
    Signed-off-by: Ingo Molnar

    Huang Ying
     

03 Aug, 2011

2 commits

  • Some trivial conflicts due to other various merges
    adding to the end of common lists sooner than this one.

    arch/ia64/Kconfig
    arch/powerpc/Kconfig
    arch/x86/Kconfig
    lib/Kconfig
    lib/Makefile

    Signed-off-by: Len Brown

    Len Brown
     
  • Cmpxchg is used to implement adding new entry to the list, deleting
    all entries from the list, deleting first entry of the list and some
    other operations.

    Because this is a single list, so the tail can not be accessed in O(1).

    If there are multiple producers and multiple consumers, llist_add can
    be used in producers and llist_del_all can be used in consumers. They
    can work simultaneously without lock. But llist_del_first can not be
    used here. Because llist_del_first depends on list->first->next does
    not changed if list->first is not changed during its operation, but
    llist_del_first, llist_add, llist_add (or llist_del_all, llist_add,
    llist_add) sequence in another consumer may violate that.

    If there are multiple producers and one consumer, llist_add can be
    used in producers and llist_del_all or llist_del_first can be used in
    the consumer.

    This can be summarized as follow:

    | add | del_first | del_all
    add | - | - | -
    del_first | | L | L
    del_all | | | -

    Where "-" stands for no lock is needed, while "L" stands for lock is
    needed.

    The list entries deleted via llist_del_all can be traversed with
    traversing function such as llist_for_each etc. But the list entries
    can not be traversed safely before deleted from the list. The order
    of deleted entries is from the newest to the oldest added one. If you
    want to traverse from the oldest to the newest, you must reverse the
    order by yourself before traversing.

    The basic atomic operation of this list is cmpxchg on long. On
    architectures that don't have NMI-safe cmpxchg implementation, the
    list can NOT be used in NMI handler. So code uses the list in NMI
    handler should depend on CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG.

    Signed-off-by: Huang Ying
    Reviewed-by: Andi Kleen
    Reviewed-by: Mathieu Desnoyers
    Cc: Andrew Morton
    Signed-off-by: Len Brown

    Huang Ying
     

09 Jun, 2011

1 commit


04 Jun, 2011

2 commits

  • The brcm80211 driver in the staging tree has a cordic function to
    determine cosine and sine for a given angle. Feedback received from
    John Linville suggested that these kind of functions should be made
    available to others as a library function in the kernel tree. The
    b43 driver also has a cordic angle calculation implemented.

    Cc: linux-kernel@vger.kernel.org
    Cc: linux-wireless@vger.kernel.org
    Cc: "John W. Linville"
    Cc: Greg Kroah-Hartman
    Cc: Dan Carpenter
    Cc: Randy Dunlap
    Cc: Larry Finger
    Reviewed-by: Roland Vossen
    Reviewed-by: Henry Ptasinski
    Reviewed-by: Franky (Zhenhui) Lin
    Signed-off-by: Arend van Spriel
    Signed-off-by: John W. Linville

    Arend van Spriel
     
  • The brcm80211 driver in staging tree uses a crc8 function. Based on
    feedback from John Linville to move this to lib directory, the linux
    source has been searched. Although there is currently only one other
    kernel driver using this algorithm (ie. drivers/ssb) we are providing
    this as a library function for others to use.

    Cc: linux-kernel@vger.kernel.org
    Cc: linux-wireless@vger.kernel.org
    Cc: Dan Carpenter
    Cc: George Spelvin
    Cc: Randy Dunlap
    Reviewed-by: Henry Ptasinski
    Reviewed-by: Roland Vossen
    Reviewed-by: "Franky (Zhenhui) Lin"
    Signed-off-by: Arend van Spriel
    Signed-off-by: John W. Linville

    Arend van Spriel