23 Jun, 2016

10 commits

  • Now that crypto requests are chained together at the DMA level, we
    increase the size of the crypto queue for each engine. The result is
    that as the backlog list is reached later, it does not stop the crypto
    stack from sending asychronous requests, so more cryptographic tasks
    are processed by the engines.

    Signed-off-by: Romain Perier
    Acked-by: Boris Brezillon
    Signed-off-by: Herbert Xu

    Romain Perier
     
  • The Cryptographic Engines and Security Accelerators (CESA) supports the
    Multi-Packet Chain Mode. With this mode enabled, multiple tdma requests
    can be chained and processed by the hardware without software
    intervention. This mode was already activated, however the crypto
    requests were not chained together. By doing so, we reduce significantly
    the number of IRQs. Instead of being interrupted at the end of each
    crypto request, we are interrupted at the end of the last cryptographic
    request processed by the engine.

    This commits re-factorizes the code, changes the code architecture and
    adds the required data structures to chain cryptographic requests
    together before sending them to an engine (stopped or possibly already
    running).

    Signed-off-by: Romain Perier
    Acked-by: Boris Brezillon
    Signed-off-by: Herbert Xu

    Romain Perier
     
  • This commits adds support for fine grained load balancing on
    multi-engine IPs. The engine is pre-selected based on its current load
    and on the weight of the crypto request that is about to be processed.
    The global crypto queue is also moved to each engine. These changes are
    required to allow chaining crypto requests at the DMA level. By using
    a crypto queue per engine, we make sure that we keep the state of the
    tdma chain synchronized with the crypto queue. We also reduce contention
    on 'cesa_dev->lock' and improve parallelism.

    Signed-off-by: Romain Perier
    Acked-by: Boris Brezillon
    Signed-off-by: Herbert Xu

    Romain Perier
     
  • Currently the crypto requests were sent to engines sequentially.
    This commit moves the SRAM I/O operations from the prepare to the step
    functions. It provides flexibility for future works and allow to prepare
    a request while the engine is running.

    Signed-off-by: Romain Perier
    Acked-by: Boris Brezillon
    Signed-off-by: Herbert Xu

    Romain Perier
     
  • So far, the 'process' operation was used to check if the current request
    was correctly handled by the engine, if it was the case it copied
    information from the SRAM to the main memory. Now, we split this
    operation. We keep the 'process' operation, which still checks if the
    request was correctly handled by the engine or not, then we add a new
    operation for completion. The 'complete' method copies the content of
    the SRAM to memory. This will soon become useful if we want to call
    the process and the complete operations from different locations
    depending on the type of the request (different cleanup logic).

    Signed-off-by: Romain Perier
    Acked-by: Boris Brezillon
    Signed-off-by: Herbert Xu

    Romain Perier
     
  • Currently, the only way to access the tdma chain is to use the 'req'
    union from a mv_cesa_{ablkcipher,ahash}. This will soon become a problem
    if we want to handle the TDMA chaining vs standard/non-DMA processing in
    a generic way (with generic functions at the cesa.c level detecting
    whether the request should be queued at the DMA level or not). Hence the
    decision to move the chain field a the mv_cesa_req level at the expense
    of adding 2 void * fields to all request contexts (including non-DMA
    ones) and to remove the type completly. To limit the overhead, we get
    rid of the type field, which can now be deduced from the req->chain.first
    value. Once these changes are done the union is no longer needed, so
    remove it and move mv_cesa_ablkcipher_std_req and mv_cesa_req
    to mv_cesa_ablkcipher_req directly. There are also no needs to keep the
    'base' field into the union of mv_cesa_ahash_req, so move it into the
    upper structure.

    Signed-off-by: Romain Perier
    Acked-by: Boris Brezillon
    Signed-off-by: Herbert Xu

    Romain Perier
     
  • Add a TDMA descriptor at the end of the request for copying the
    output IV vector via a DMA transfer. This is a good way for offloading
    as much as processing as possible to the DMA and the crypto engine.
    This is also required for processing multiple cipher requests
    in chained mode, otherwise the content of the IV vector would be
    overwritten by the last processed request.

    Signed-off-by: Romain Perier
    Acked-by: Boris Brezillon
    Signed-off-by: Herbert Xu

    Romain Perier
     
  • So far, the way that the type of a TDMA operation was checked was wrong.
    We have to use the type mask in order to get the right part of the flag
    containing the type of the operation.

    Signed-off-by: Romain Perier
    Acked-by: Boris Brezillon
    Signed-off-by: Herbert Xu

    Romain Perier
     
  • Add a BUG_ON() call when the driver tries to launch a crypto request
    while the engine is still processing the previous one. This replaces
    a silent system hang by a verbose kernel panic with the associated
    backtrace to let the user know that something went wrong in the CESA
    driver.

    Signed-off-by: Romain Perier
    Acked-by: Boris Brezillon
    Signed-off-by: Herbert Xu

    Romain Perier
     
  • Adding a macro constant to be used for the size of the crypto queue,
    instead of using a numeric value directly. It will be easier to
    maintain in case we add more than one crypto queue of the same size.

    Signed-off-by: Romain Perier
    Acked-by: Boris Brezillon
    Signed-off-by: Herbert Xu

    Romain Perier
     

20 Jun, 2016

2 commits

  • EXTRA_CFLAGS is still supported but its usage is deprecated.

    Signed-off-by: Tudor Ambarus
    Reviewed-by: Horia Geantă
    Signed-off-by: Herbert Xu

    Tudor Ambarus
     
  • An endianess fix mistakenly used higher_32_bits() instead of
    upper_32_bits(), and that doesn't exist:

    drivers/crypto/caam/desc_constr.h: In function 'append_ptr':
    drivers/crypto/caam/desc_constr.h:84:75: error: implicit declaration of function 'higher_32_bits' [-Werror=implicit-function-declaration]
    *offset = cpu_to_caam_dma(ptr);

    Signed-off-by: Arnd Bergmann
    Fixes: 261ea058f016 ("crypto: caam - handle core endianness != caam endianness")
    Reviewed-by: Horia Geantă
    Signed-off-by: Herbert Xu

    Arnd Bergmann
     

13 Jun, 2016

3 commits

  • Add support for the Amlogic Meson SoCs hardware random generator.

    Signed-off-by: Neil Armstrong
    Signed-off-by: Herbert Xu

    Neil Armstrong
     
  • The __raw IO functions are not endian safe, so use the readl_relaxed
    and writel_relaxed versions of these.

    Signed-off-by: Ben Dooks
    Signed-off-by: Herbert Xu

    Ben Dooks
     
  • alloc_workqueue replaces deprecated create_workqueue().

    The workqueue device_reset_wq has workitem &reset_data->reset_work per
    adf_reset_dev_data. The workqueue pf2vf_resp_wq is a workqueue for
    PF2VF responses has workitem &pf2vf_resp->pf2vf_resp_work per pf2vf_resp.
    The workqueue adf_vf_stop_wq is used to call adf_dev_stop()
    asynchronously.

    Dedicated workqueues have been used in all cases since the workitems
    on the workqueues are involved in operation of crypto which can be used in
    the IO path which is depended upon during memory reclaim. Hence,
    WQ_MEM_RECLAIM has been set to gurantee forward progress under memory
    pressure.
    Since there are only a fixed number of work items, explicit concurrency
    limit is unnecessary.

    Signed-off-by: Bhaktipriya Shridhar
    Acked-by: Tejun Heo
    Signed-off-by: Herbert Xu

    Bhaktipriya Shridhar
     

08 Jun, 2016

7 commits

  • This will allow IPSEC on SEC1

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • SEC1 doesn't have IPSEC_ESP descriptor type but it is able to perform
    IPSEC using HMAC_SNOOP_NO_AFEU, which is also existing on SEC2
    In order to be able to define descriptors templates for SEC1 without
    breaking SEC2+, we have to give lower priority to HMAC_SNOOP_NO_AFEU
    so that SEC2+ selects IPSEC_ESP and not HMAC_SNOOP_NO_AFEU which is
    less performant.

    This is done by adding a priority field in the template. If the field
    is 0, we use the default priority, otherwise we used the one in the
    field.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • This patchs enhances the IPSEC_ESP related functions for them to
    also supports the same operations with descriptor type
    HMAC_SNOOP_NO_AFEU.

    The differences between the two descriptor types are:
    * pointeurs 2 and 3 are swaped (Confidentiality key and
    Primary EU Context IN)
    * HMAC_SNOOP_NO_AFEU has CICV out in pointer 6
    * HMAC_SNOOP_NO_AFEU has no primary EU context out so we get it
    from the end of data out

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • In preparation of IPSEC for SEC1, first step is to make the mapping
    helpers more generic so that they can also be used by AEAD functions.

    First, the functions are moved before IPSEC functions in talitos.c

    talitos_sg_unmap() and unmap_sg_talitos_ptr() are merged as they
    are quite similar, the second one handling the SEC1 case an calling
    the first one for SEC2

    map_sg_in_talitos_ptr() and map_sg_out_talitos_ptr() are merged
    into talitos_sg_map() and enhenced to support offseted zones
    as used for AEAD. The actual mapping is now performed outside that
    helper. The DMA sync is also done outside to not make it several
    times.

    talitos_edesc_alloc() size calculation are fixed to also take into
    account AEAD specific parts also for SEC1

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • In order to be able to use the mapping/unmapping helpers for IPSEC
    it needs to be move upper in the file

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     
  • Use helper for all modifications to talitos_ptr in preparation to
    the implementation of AEAD for SEC1

    to_talitos_ptr_extent_clear() has been removed in favor of
    to_talitos_ptr_ext_set() to set any value and
    to_talitos_ptr_ext_or() to or the extent field with a value
    name has been shorten to help keeping single lines of 80 chars

    Signed-off-by: Christophe Leroy
    Signed-off-by: Herbert Xu

    LEROY Christophe
     

07 Jun, 2016

3 commits

  • The first read on an Alea takes about 1.8 seconds, more than the
    timeout value waiting for the read. As a consequence, later URB reuse
    causes the warning given below. To avoid this, we increase the wait
    time for the first read on the Alea.

    [ 78.293247] WARNING: CPU: 3 PID: 1892 at drivers/usb/core/urb.c:338 usb_submit_urb+0x2b4/0x580 [usbcore]
    [ 78.293250] URB ffff8802135be3c0 submitted while active
    [ 78.293252] Modules linked in: chaoskey(+) rng_core rfcomm binfmt_misc bnep cfg80211 nfsd auth_rpcgss oid_registry nfs_acl nfs lockd grace fscache sunrpc bridge stp llc tun snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic iTCO_wdt iTCO_vendor_support nls_utf8 nls_cp437 vfat fat intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel efi_pstore kvm irqbypass pcspkr btusb btrtl btbcm btintel uvcvideo joydev bluetooth videobuf2_vmalloc videobuf2_memops efivars videobuf2_v4l2 serio_raw i2c_i801 videobuf2_core videodev cdc_mbim media lpc_ich shpchp mfd_core cdc_ncm usbnet mii cdc_wdm cdc_acm evdev snd_hda_intel snd_hda_codec snd_hwdep snd_hda_core i915 snd_pcm snd_timer i2c_algo_bit drm_kms_helper wmi thinkpad_acpi drm nvram mei_me mei snd soundcore rfkill ac battery i2c_core
    [ 78.293335] video button tpm_tis tpm fuse parport_pc ppdev lp parport autofs4 ext4 crc16 jbd2 mbcache algif_skcipher af_alg hid_generic usbhid hid dm_crypt dm_mod sg sr_mod cdrom sd_mod crct10dif_pclmul crc32_pclmul crc32c_intel jitterentropy_rng sha256_generic hmac drbg aesni_intel xhci_pci aes_x86_64 ahci glue_helper xhci_hcd ehci_pci lrw libahci gf128mul ablk_helper cryptd libata sdhci_pci psmouse sdhci scsi_mod ehci_hcd mmc_core usbcore usb_common thermal
    [ 78.293402] CPU: 3 PID: 1892 Comm: hwrng Not tainted 4.7.0-rc1-linux-14+ #16
    [ 78.293405] Hardware name: LENOVO 232577G/232577G, BIOS G2ET92WW (2.52 ) 02/22/2013
    [ 78.293408] 0000000000000000 ffffffff812dfa0f ffff8801fa5b3d68 0000000000000000
    [ 78.293413] ffffffff81072224 ffff8802135be3c0 ffff8801fa5b3db8 ffff880212e44210
    [ 78.293418] 0000000000000040 ffff880209fb32c0 ffff880212e44200 ffffffff8107228f
    [ 78.293422] Call Trace:
    [ 78.293432] [] ? dump_stack+0x5c/0x7d
    [ 78.293437] [] ? __warn+0xc4/0xe0
    [ 78.293441] [] ? warn_slowpath_fmt+0x4f/0x60
    [ 78.293451] [] ? enqueue_task_fair+0xcd2/0x1260
    [ 78.293463] [] ? usb_submit_urb+0x2b4/0x580 [usbcore]
    [ 78.293474] [] ? __pm_runtime_resume+0x55/0x70
    [ 78.293484] [] ? _chaoskey_fill+0x132/0x250 [chaoskey]
    [ 78.293485] usbcore: registered new interface driver chaoskey
    [ 78.293493] [] ? wait_woken+0x90/0x90
    [ 78.293500] [] ? devm_hwrng_register+0x80/0x80 [rng_core]
    [ 78.293505] [] ? chaoskey_rng_read+0x127/0x140 [chaoskey]
    [ 78.293511] [] ? devm_hwrng_register+0x80/0x80 [rng_core]
    [ 78.293515] [] ? hwrng_fillfn+0x6e/0x120 [rng_core]
    [ 78.293520] [] ? kthread+0xcf/0xf0
    [ 78.293529] [] ? ret_from_fork+0x1f/0x40
    [ 78.293535] [] ? kthread_park+0x50/0x50

    Signed-off-by: Bob Ham
    Signed-off-by: Herbert Xu

    Bob Ham
     
  • Adds support for the Araneus Alea I USB hardware Random Number
    Generator which is interfaced with in exactly the same way as the
    Altus Metrum ChaosKey. We just add the appropriate device ID and
    modify the config help text.

    Signed-off-by: Bob Ham
    Signed-off-by: Herbert Xu

    Bob Ham
     
  • Algorithms can be registered only once. So skip registration of
    algorithms if already registered (i.e. in case we have two AES cores
    in the system.)

    Signed-off-by: Lokesh Vutla
    Signed-off-by: Tero Kristo
    Signed-off-by: Herbert Xu

    Lokesh Vutla
     

31 May, 2016

9 commits

  • Bring some consistency by:
    1. Replacing fixed-space indentation of structure members with just
    tabs.
    2. Remove indentation in declaration of local variable between type and
    name. Driver was mixing usage of such indentation and lack of it.
    When removing indentation, reorder variables in
    reversed-christmas-tree order with first variables being initialized
    ones.

    Signed-off-by: Krzysztof Kozlowski
    Acked-by: Vladimir Zapolskiy
    Signed-off-by: Herbert Xu

    Krzysztof Kozlowski
     
  • Read the requested number of data from the fifo

    Signed-off-by: Yendapally Reddy Dhananjaya Reddy
    Reviewed-by: Eric Anholt
    Signed-off-by: Herbert Xu

    Yendapally Reddy Dhananjaya Reddy
     
  • This supports the random number generator available in NSP SoC.
    Masks the rng interrupt for NSP.

    Signed-off-by: Yendapally Reddy Dhananjaya Reddy
    Acked-by: Eric Anholt
    Signed-off-by: Herbert Xu

    Yendapally Reddy Dhananjaya Reddy
     
  • This patch fixes the following warning:
    drivers/char/hw_random/stm32-rng.c: In function 'stm32_rng_read':
    drivers/char/hw_random/stm32-rng.c:82:19: warning: 'sr' may be used
    uninitialized in this function

    Reported-by: Sudip Mukherjee
    Suggested-by: Arnd Bergmann
    Cc: Daniel Thompson
    Signed-off-by: Maxime Coquelin
    Reviewed-by: Daniel Thompson
    Signed-off-by: Herbert Xu

    Maxime Coquelin
     
  • This basically adds support for ls1043a platform.

    Signed-off-by: Horia Geantă
    Signed-off-by: Herbert Xu

    Horia Geantă
     
  • There are SoCs like LS1043A where CAAM endianness (BE) does not match
    the default endianness of the core (LE).
    Moreover, there are requirements for the driver to handle cases like
    CPU_BIG_ENDIAN=y on ARM-based SoCs.
    This requires for a complete rewrite of the I/O accessors.

    PPC-specific accessors - {in,out}_{le,be}XX - are replaced with
    generic ones - io{read,write}[be]XX.

    Endianness is detected dynamically (at runtime) to allow for
    multiplatform kernels, for e.g. running the same kernel image
    on LS1043A (BE CAAM) and LS2080A (LE CAAM) armv8-based SoCs.

    While here: debugfs entries need to take into consideration the
    endianness of the core when displaying data. Add the necessary
    glue code so the entries remain the same, but they are properly
    read, regardless of the core and/or SEC endianness.

    Note: pdb.h fixes only what is currently being used (IPsec).

    Reviewed-by: Tudor Ambarus
    Signed-off-by: Horia Geantă
    Signed-off-by: Alex Porosanu
    Signed-off-by: Herbert Xu

    Horia Geantă
     
  • The offset field is 13 bits wide; make sure we don't overwrite more than
    that in the caam hardware scatter gather structure.

    Signed-off-by: Cristian Stoica
    Signed-off-by: Horia Geantă
    Signed-off-by: Herbert Xu

    Cristian Stoica
     
  • The sizeof(*ctx->dec_cd) and sizeof(*ctx->enc_cd) are equal,
    but we should use the correct one for freeing memory anyway.

    Signed-off-by: Tadeusz Struk
    Signed-off-by: Herbert Xu

    Tadeusz Struk
     
  • Pull crypto fixes from Herbert Xu:
    "This fixes the following issues:

    - missing selection in public_key that may result in a build failure

    - Potential crash in error path in omap-sham

    - ccp AES XTS bug that affects requests larger than 4096"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: ccp - Fix AES XTS error for request sizes above 4096
    crypto: public_key: select CRYPTO_AKCIPHER
    crypto: omap-sham - potential Oops on error in probe

    Linus Torvalds
     

30 May, 2016

1 commit

  • Pull SCSI fixes from James Bottomley:
    "This is a set of four fixes noticed in the merge window. The aacraid
    one is an optimisation, the mp3sas one fixes a spurious printk, the
    sd_check_events one fixes a theoretical race and the failed zero
    length commands fixes a bug in our completion/retry routines that has
    been causing problems in the field"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    aacraid: do not activate events on non-SRC adapters
    mpt3sas: add missing curly braces
    sd: get disk reference in sd_check_events()
    scsi_lib: correctly retry failed zero length REQ_TYPE_FS commands

    Linus Torvalds
     

29 May, 2016

5 commits

  • Pull more MIPS updates from Ralf Baechle:
    "This is the secondnd batch of MIPS patches for 4.7. Summary:

    CPS:
    - Copy EVA configuration when starting secondary VPs.

    EIC:
    - Clear Status IPL.

    Lasat:
    - Fix a few off by one bugs.

    lib:
    - Mark intrinsics notrace. Not only are the intrinsics
    uninteresting, it would cause infinite recursion.

    MAINTAINERS:
    - Add file patterns for MIPS BRCM device tree bindings.
    - Add file patterns for mips device tree bindings.

    MT7628:
    - Fix MT7628 pinmux typos.
    - wled_an pinmux gpio.
    - EPHY LEDs pinmux support.

    Pistachio:
    - Enable KASLR

    VDSO:
    - Build microMIPS VDSO for microMIPS kernels.
    - Fix aliasing warning by building with `-fno-strict-aliasing' for
    debugging but also tracing them might result in recursion.

    Misc:
    - Add missing FROZEN hotplug notifier transitions.
    - Fix clk binding example for varioius PIC32 devices.
    - Fix cpu interrupt controller node-names in the DT files.
    - Fix XPA CPU feature separation.
    - Fix write_gc0_* macros when writing zero.
    - Add inline asm encoding helpers.
    - Add missing VZ accessor microMIPS encodings.
    - Fix little endian microMIPS MSA encodings.
    - Add 64-bit HTW fields and fix its configuration.
    - Fix sigreturn via VDSO on microMIPS kernel.
    - Lots of typo fixes.
    - Add definitions of SegCtl registers and use them"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (49 commits)
    MIPS: Add missing FROZEN hotplug notifier transitions
    MIPS: Build microMIPS VDSO for microMIPS kernels
    MIPS: Fix sigreturn via VDSO on microMIPS kernel
    MIPS: devicetree: fix cpu interrupt controller node-names
    MIPS: VDSO: Build with `-fno-strict-aliasing'
    MIPS: Pistachio: Enable KASLR
    MIPS: lib: Mark intrinsics notrace
    MIPS: Fix 64-bit HTW configuration
    MIPS: Add 64-bit HTW fields
    MAINTAINERS: Add file patterns for mips device tree bindings
    MAINTAINERS: Add file patterns for mips brcm device tree bindings
    MIPS: Simplify DSP instruction encoding macros
    MIPS: Add missing tlbinvf/XPA microMIPS encodings
    MIPS: Fix little endian microMIPS MSA encodings
    MIPS: Add missing VZ accessor microMIPS encodings
    MIPS: Add inline asm encoding helpers
    MIPS: Spelling fix lets -> let's
    MIPS: VR41xx: Fix typo
    MIPS: oprofile: Fix typo
    MIPS: math-emu: Fix typo
    ...

    Linus Torvalds
     
  • Pull string hash improvements from George Spelvin:
    "This series does several related things:

    - Makes the dcache hash (fs/namei.c) useful for general kernel use.

    (Thanks to Bruce for noticing the zero-length corner case)

    - Converts the string hashes in to use the
    above.

    - Avoids 64-bit multiplies in hash_64() on 32-bit platforms. Two
    32-bit multiplies will do well enough.

    - Rids the world of the bad hash multipliers in hash_32.

    This finishes the job started in commit 689de1d6ca95 ("Minimal
    fix-up of bad hashing behavior of hash_64()")

    The vast majority of Linux architectures have hardware support for
    32x32-bit multiply and so derive no benefit from "simplified"
    multipliers.

    The few processors that do not (68000, h8/300 and some models of
    Microblaze) have arch-specific implementations added. Those
    patches are last in the series.

    - Overhauls the dcache hash mixing.

    The patch in commit 0fed3ac866ea ("namei: Improve hash mixing if
    CONFIG_DCACHE_WORD_ACCESS") was an off-the-cuff suggestion.
    Replaced with a much more careful design that's simultaneously
    faster and better. (My own invention, as there was noting suitable
    in the literature I could find. Comments welcome!)

    - Modify the hash_name() loop to skip the initial HASH_MIX(). This
    would let us salt the hash if we ever wanted to.

    - Sort out partial_name_hash().

    The hash function is declared as using a long state, even though
    it's truncated to 32 bits at the end and the extra internal state
    contributes nothing to the result. And some callers do odd things:

    - fs/hfs/string.c only allocates 32 bits of state
    - fs/hfsplus/unicode.c uses it to hash 16-bit unicode symbols not bytes

    - Modify bytemask_from_count to handle inputs of 1..sizeof(long)
    rather than 0..sizeof(long)-1. This would simplify users other
    than full_name_hash"

    Special thanks to Bruce Fields for testing and finding bugs in v1. (I
    learned some humbling lessons about "obviously correct" code.)

    On the arch-specific front, the m68k assembly has been tested in a
    standalone test harness, I've been in contact with the Microblaze
    maintainers who mostly don't care, as the hardware multiplier is never
    omitted in real-world applications, and I haven't heard anything from
    the H8/300 world"

    * 'hash' of git://ftp.sciencehorizons.net/linux:
    h8300: Add
    microblaze: Add
    m68k: Add
    : Add support for architecture-specific functions
    fs/namei.c: Improve dcache hash function
    Eliminate bad hash multipliers from hash_32() and hash_64()
    Change hash_64() return value to 32 bits
    : Define hash_str() in terms of hashlen_string()
    fs/namei.c: Add hashlen_string() function
    Pull out string hash to

    Linus Torvalds
     
  • The "simplified" prime multipliers made very bad hash functions, so get rid
    of them. This completes the work of 689de1d6ca.

    To avoid the inefficiency which was the motivation for the "simplified"
    multipliers, hash_64() on 32-bit systems is changed to use a different
    algorithm. It makes two calls to hash_32() instead.

    drivers/media/usb/dvb-usb-v2/af9015.c uses the old GOLDEN_RATIO_PRIME_32
    for some horrible reason, so it inherits a copy of the old definition.

    Signed-off-by: George Spelvin
    Cc: Antti Palosaari
    Cc: Mauro Carvalho Chehab

    George Spelvin
     
  • Pull i2c fix from Wolfram Sang:
    "A fix for a regression introduced yesterday.

    The regression didn't show up here locally because I did not have
    PAGE_POISONING enabled. And buildbots discovered this only after it
    hit your tree. Thanks to Dan for the quick response"

    * 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
    i2c: dev: use after free in detach

    Linus Torvalds
     
  • Pull chrome platform updates from Olof Johansson
    "A handful of Chrome driver and binding changes this merge window:

    - a few patches to fix probing and configuration of pstore

    - a few patches adding Elan touchpad registration on a few devices

    - EC changes: a security fix dealing with max message sizes and
    addition of compat_ioctl support.

    - keyboard backlight control support

    There was also an accidential duplicate registration of trackpads on
    'Leon', which was reverted just recently"

    * tag 'chrome-platform' of git://git.kernel.org/pub/scm/linux/kernel/git/olof/chrome-platform:
    Revert "platform/chrome: chromeos_laptop: Add Leon Touch"
    platform/chrome: chromeos_laptop - Add Elan touchpad for Wolf
    platform/chrome: chromeos_laptop - Add elan trackpad option for C720
    platform/chrome: cros_ec_dev - Populate compat_ioctl
    platform/chrome: cros_ec_lightbar - use name instead of ID to hide lightbar attributes
    platform/chrome: cros_ec_dev - Fix security issue
    platform/chrome: Add Chrome OS keyboard backlight LEDs support
    platform/chrome: use to_platform_device()
    platform/chrome: pstore: Move to larger record size.
    platform/chrome: pstore: probe for ramoops buffer using acpi
    platform/chrome: chromeos_laptop: Add Leon Touch

    Linus Torvalds