1. 17 Aug, 2015 2 commits
  2. 14 Jul, 2015 1 commit
  3. 07 Jul, 2015 1 commit
  4. 02 Jun, 2015 2 commits
  5. 21 May, 2015 1 commit
    • Herbert Xu's avatar
      crypto: cryptd - Use crypto_grab_aead · 9b8c456e
      Herbert Xu authored
      As AEAD has switched over to using frontend types, the function
      crypto_init_spawn must not be used since it does not specify a
      frontend type.  Otherwise it leads to a crash when the spawn is
      This patch fixes it by switching over to crypto_grab_aead instead.
      Fixes: 5d1d65f8 ("crypto: aead - Convert top level interface to new style")
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
  6. 12 May, 2015 1 commit
  7. 31 Mar, 2015 1 commit
  8. 26 Nov, 2014 1 commit
  9. 01 Aug, 2014 1 commit
  10. 24 Oct, 2012 1 commit
  11. 20 Aug, 2011 1 commit
  12. 20 Sep, 2010 1 commit
  13. 16 Feb, 2010 1 commit
    • Tejun Heo's avatar
      percpu: add __percpu sparse annotations to what's left · a29d8b8e
      Tejun Heo authored
      Add __percpu sparse annotations to places which didn't make it in one
      of the previous patches.  All converions are trivial.
      These annotations are to make sparse consider percpu variables to be
      in a different address space and warn if accessed without going
      through percpu accessors.  This patch doesn't affect normal builds.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Huang Ying <ying.huang@intel.com>
      Cc: Len Brown <lenb@kernel.org>
      Cc: Neil Brown <neilb@suse.de>
  14. 18 Oct, 2009 1 commit
  15. 03 Oct, 2009 1 commit
  16. 05 Aug, 2009 1 commit
  17. 21 Jul, 2009 1 commit
  18. 15 Jul, 2009 1 commit
  19. 14 Jul, 2009 2 commits
  20. 13 Jul, 2009 2 commits
  21. 01 Jun, 2009 1 commit
  22. 18 Feb, 2009 2 commits
    • Huang Ying's avatar
      crypto: cryptd - Per-CPU thread implementation based on kcrypto_wq · 254eff77
      Huang Ying authored
      Original cryptd thread implementation has scalability issue, this
      patch solve the issue with a per-CPU thread implementation.
      struct cryptd_queue is defined to be a per-CPU queue, which holds one
      struct cryptd_cpu_queue for each CPU. In struct cryptd_cpu_queue, a
      struct crypto_queue holds all requests for the CPU, a struct
      work_struct is used to run all requests for the CPU.
      Testing based on dm-crypt on an Intel Core 2 E6400 (two cores) machine
      shows 19.2% performance gain. The testing script is as follow:
      -------------------- script begin ---------------------------
              # Create a crypt device using dmsetup
              dmsetup create $2 --table "0 `blockdev --getsize $1` crypt cbc(aes-asm)?cryptd?plain:plain babebabebabebabebabebabebabebabe 0 $1 0"
      dmsetup remove crypt0
      dmsetup remove crypt1
      dd if=/dev/zero of=/dev/ram0 bs=1M count=4 >& /dev/null
      dd if=/dev/zero of=/dev/ram1 bs=1M count=4 >& /dev/null
      dmc_create /dev/ram0 crypt0
      dmc_create /dev/ram1 crypt1
      cat >tr.sh <<EOF
      for n in \$(seq 10); do
              dd if=/dev/dm-0 of=/dev/null >& /dev/null &
              dd if=/dev/dm-1 of=/dev/null >& /dev/null &
      for n in $(seq 10); do
              /usr/bin/time sh tr.sh
      rm tr.sh
      -------------------- script end   ---------------------------
      The separator of dm-crypt parameter is changed from "-" to "?", because
      "-" is used in some cipher driver name too, and cryptds need to specify
      cipher driver name instead of cipher name.
      The test result on an Intel Core2 E6400 (two cores) is as follow:
      without patch:
      -----------------wo begin --------------------------
      0.04user 0.38system 0:00.39elapsed 107%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6566minor)pagefaults 0swaps
      0.07user 0.35system 0:00.35elapsed 121%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6567minor)pagefaults 0swaps
      0.06user 0.34system 0:00.30elapsed 135%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6562minor)pagefaults 0swaps
      0.05user 0.37system 0:00.36elapsed 119%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6607minor)pagefaults 0swaps
      0.06user 0.36system 0:00.35elapsed 120%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6562minor)pagefaults 0swaps
      0.05user 0.37system 0:00.31elapsed 136%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6594minor)pagefaults 0swaps
      0.04user 0.34system 0:00.30elapsed 126%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6597minor)pagefaults 0swaps
      0.06user 0.32system 0:00.31elapsed 125%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6571minor)pagefaults 0swaps
      0.06user 0.34system 0:00.31elapsed 134%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6581minor)pagefaults 0swaps
      0.05user 0.38system 0:00.31elapsed 138%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6600minor)pagefaults 0swaps
      -----------------wo end   --------------------------
      with patch:
      ------------------w begin --------------------------
      0.02user 0.31system 0:00.24elapsed 141%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6554minor)pagefaults 0swaps
      0.05user 0.34system 0:00.31elapsed 127%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6606minor)pagefaults 0swaps
      0.07user 0.33system 0:00.26elapsed 155%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6559minor)pagefaults 0swaps
      0.07user 0.32system 0:00.26elapsed 151%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6562minor)pagefaults 0swaps
      0.05user 0.34system 0:00.26elapsed 150%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6603minor)pagefaults 0swaps
      0.03user 0.36system 0:00.31elapsed 124%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6562minor)pagefaults 0swaps
      0.04user 0.35system 0:00.26elapsed 147%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6586minor)pagefaults 0swaps
      0.03user 0.37system 0:00.27elapsed 146%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6562minor)pagefaults 0swaps
      0.04user 0.36system 0:00.26elapsed 154%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6594minor)pagefaults 0swaps
      0.04user 0.35system 0:00.26elapsed 154%CPU (0avgtext+0avgdata 0maxresident)k
      0inputs+0outputs (0major+6557minor)pagefaults 0swaps
      ------------------w end   --------------------------
      The middle value of elapsed time is:
      wo cryptwq: 0.31
      w  cryptwq: 0.26
      The performance gain is about (0.31-0.26)/0.26 = 0.192.
      Signed-off-by: default avatarHuang Ying <ying.huang@intel.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    • Huang Ying's avatar
      crypto: cryptd - Add support to access underlying blkcipher · 1cac2cbc
      Huang Ying authored
      cryptd_alloc_ablkcipher() will allocate a cryptd-ed ablkcipher for
      specified algorithm name. The new allocated one is guaranteed to be
      cryptd-ed ablkcipher, so the blkcipher underlying can be gotten via
      Signed-off-by: default avatarHuang Ying <ying.huang@intel.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
  23. 10 Jul, 2008 3 commits
  24. 01 May, 2008 1 commit
  25. 07 Feb, 2008 1 commit
  26. 10 Jan, 2008 2 commits
    • Herbert Xu's avatar
      [CRYPTO] cryptd: Use geniv of the underlying algorithm · 927eead5
      Herbert Xu authored
      If the underlying algorithm specifies a specific geniv algorithm then
      we should use it for the cryptd version as well.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    • Herbert Xu's avatar
      [CRYPTO] ablkcipher: Add distinct ABLKCIPHER type · 332f8840
      Herbert Xu authored
      Up until now we have ablkcipher algorithms have been identified as
      type BLKCIPHER with the ASYNC bit set.  This is suboptimal because
      ablkcipher refers to two things.  On the one hand it refers to the
      top-level ablkcipher interface with requests.  On the other hand it
      refers to and algorithm type underneath.
      As it is you cannot request a synchronous block cipher algorithm
      with the ablkcipher interface on top.  This is a problem because
      we want to be able to eventually phase out the blkcipher top-level
      This patch fixes this by making ABLKCIPHER its own type, just as
      we have distinct types for HASH and DIGEST.  The type it associated
      with the algorithm implementation only.
      Which top-level interface is used for synchronous block ciphers is
      then determined by the mask that's used.  If it's a specific mask
      then the old blkcipher interface is given, otherwise we go with the
      new ablkcipher interface.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
  27. 10 Oct, 2007 1 commit
  28. 31 May, 2007 1 commit
  29. 01 May, 2007 1 commit