Crypto Update for 4.1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Linus:

Here is the crypto update for 4.1:

* Added user-space interface for AEAD.
* Added user-space interface for RNG (i.e., pseudo RNG).
* Prevent internal helper algos from being exposed to user-space.
* Merged common code from assembly/C SHA implementations .
* Added ARMv8 SHA1/256.
* Added ARMv8 AES.
* Added ARMv8 GHASH.
* Added ARM assmelber and NEON SHA256.
* Added MIPS OCTEON SHA1/256/512.
* Added MIPS img-hash SHA1/256 and MD5.
* Added Power 8 VMX AES/CBC/CTR/GHASH.
* Added PPC assembler AES, SHA1/256 and MD5.
* Added Broadcom IPROC RNG driver.
* Misc fixes.


Please pull from

git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git


Aaro Koskinen (7):
      crypto: octeon - don't disable bottom half in octeon-md5
      crypto: octeon - always disable preemption when using crypto engine
      crypto: octeon - add instruction definitions for SHA1/256/512
      crypto: octeon - add SHA1 module
      crypto: octeon - add SHA256 module
      crypto: octeon - add SHA512 module
      crypto: octeon - enable OCTEON SHA1/256/512 module selection

Allan, Bruce W (10):
      crypto: qat - remove duplicate definition of Intel PCI vendor id
      crypto: qat - fix typo in string
      crypto: qat - make error and info log messages more descriptive
      crypto: qat - fix typo
      crypto: qat - fix checkpatch CHECK_SPACING issues
      crypto: qat - checkpatch PARENTHESIS_ALIGNMENT and LOGICAL_CONTINUATIONS
      crypto: qat - fix checkpatch CONCATENATED_STRING issues
      crypto: qat - fix checkpatch BIT_MACRO issues
      crypto: qat - fix checkpatch COMPARISON_TO_NULL issue
      crypto: qat - fix checkpatch CODE_INDENT issue

Ameen Ali (1):
      crypto: sha1-mb - Syntax error

Andre Wolokita (2):
      hwrng: omap - Change RNG_CONFIG_REG to RNG_CONTROL_REG when checking and disabling TRNG
      hwrng: omap - Change RNG_CONFIG_REG to RNG_CONTROL_REG in init

Ard Biesheuvel (23):
      crypto: arm - move ARM specific Kconfig definitions to a dedicated file
      crypto: arm - add support for SHA1 using ARMv8 Crypto Instructions
      crypto: arm - add support for SHA-224/256 using ARMv8 Crypto Extensions
      crypto: arm - AES in ECB/CBC/CTR/XTS modes using ARMv8 Crypto Extensions
      crypto: arm - add support for GHASH using ARMv8 Crypto Extensions
      crypto: arm/ghash - fix big-endian bug in ghash
      crypto: sha1 - implement base layer for SHA-1
      crypto: sha256 - implement base layer for SHA-256
      crypto: sha512 - implement base layer for SHA-512
      crypto: sha1-generic - move to generic glue implementation
      crypto: sha256-generic - move to generic glue implementation
      crypto: sha512-generic - move to generic glue implementation
      crypto: arm/sha1 - move SHA-1 ARM asm implementation to base layer
      crypto: arm/sha1_neon - move SHA-1 NEON implementation to base layer
      crypto: arm/sha1-ce - move SHA-1 ARMv8 implementation to base layer
      crypto: arm/sha256 - move SHA-224/256 ASM/NEON implementation to base layer
      crypto: arm/sha2-ce - move SHA-224/256 ARMv8 implementation to base layer
      crypto: arm64/sha1-ce - move SHA-1 ARMv8 implementation to base layer
      crypto: arm64/sha2-ce - move SHA-224/256 ARMv8 implementation to base layer
      crypto: x86/sha1_ssse3 - move SHA-1 SSSE3 implementation to base layer
      crypto: x86/sha256_ssse3 - move SHA-224/256 SSSE3 implementation to base layer
      crypto: x86/sha512_ssse3 - move SHA-384/512 SSSE3 implementation to base layer
      crypto: arm - workaround for building with old binutils

Arnd Bergmann (1):
      crypto: arm/sha256 - avoid sha256 code on ARMv7-M

Colin Ian King (1):
      crypto: atmel - fix typo in dev_err error message

Dan Carpenter (2):
      crypto: img-hash - fix some compile warnings
      crypto: img-hash - shift wrapping bug in img_hash_hw_init()

Dmitry Torokhov (12):
      hwrng: omap - remove incorrect __exit markups
      hwrng: octeon - remove incorrect __exit markups
      hwrng: pseries - remove incorrect __init/__exit markups
      crypto: qat - remove incorrect __exit markup
      crypto: amcc - remove incorrect __init/__exit markups
      hwrng: omap - remove #ifdefery around PM methods
      hwrng: add devm_* interfaces
      hwrng: bcm63xx - make use of devm_hwrng_register
      hwrng: exynos - make use of devm_hwrng_register
      hwrng: msm - make use of devm_hwrng_register
      hwrng: iproc-rng200 - do not use static structure
      hwrng: iproc-rng200 - make use of devm_hwrng_register

Feng Kan (1):
      hwrng: xgene - add ACPI support for APM X-Gene RNG unit

Florian Fainelli (4):
      hwrng: bcm63xx - drop bcm_{readl,writel} macros
      hwrng: bcm63xx - move register definitions to driver
      MIPS: BCM63xx: remove RSET_RNG register definitions
      hwrng: bcm63xx - use devm_* helpers

Geert Uytterhoeven (1):
      crypto: ux500 - Update error message for dmaengine_prep_slave_sg() API

Herbert Xu (6):
      linux-next: Tree for Mar 11 (powerpc build failure due to vmx crypto code)
      linux-next: build failure after merge of the crypto tree
      crypto: api - Fix races in crypto_unregister_instance
      crypto: api - Change crypto_unregister_instance argument type
      crypto: user - Fix crypto_alg_match race
      crypto: api - Move alg ref count init to crypto_check_alg

Horia Geant? (1):
      crypto: tcrypt - fix uninit sg entries in test_acipher_speed

James Hartley (3):
      crypto: img-hash - Add Imagination Technologies hw hash accelerator
      Documentation: crypto: Add DT binding info for the img hw hash accelerator
      crypto: img-hash - Fix Kconfig selections

Julia Lawall (1):
      crypto: don't export static symbol

Keith Packard (1):
      hwrng: core - allow perfect entropy from hardware devices

Kim Phillips (1):
      crypto: powerpc - move files to fix build error

Lad, Prabhakar (1):
      crypto: sha-mb - Fix big integer constant sparse warning

Leilei Zhao (9):
      crypto: atmel-aes - add new version
      crypto: atmel-sha - add new version
      crypto: atmel-sha - fix sg list management
      crypto: atmel-sha - initialize spinlock in probe
      crypto: atmel-sha - correct the max burst size
      crypto: atmel-tdes - initialize spinlock in probe
      crypto: atmel-aes - initialize spinlock in probe
      crypto: atmel-aes - sync the buf used in DMA or CPU
      crypto: atmel-aes - correct usage of dma_sync_* API

Leonidas S. Barbosa (2):
      crypto: vmx - Add support for VMS instructions by ASM
      crypto: vmx - Enabling VMX module for PPC64

Ludovic Desroches (1):
      crypto: atmel-sha - correct the way data are split

Marcelo H. Cerri (5):
      crypto: vmx - Adding VMX module for Power 8
      crypto: vmx - Adding AES routines for VMX module
      crypto: vmx - Adding CBC routines for VMX module
      crypto: vmx - Adding CTR routines for VMX module
      crypto: vmx - Adding GHASH routines for VMX module

Markus Stockhausen (16):
      crypto: ppc/sha256 - assembler
      crypto: ppc/sha256 - glue
      crypto: ppc/sha256 - kernel config
      crypto: powerpc/aes - register defines
      crypto: powerpc/aes - aes tables
      crypto: powerpc/aes - assembler core
      crypto: powerpc/aes - key handling
      crypto: powerpc/aes - ECB/CBC/CTR/XTS modes
      cyprot: powerpc/aes - glue code
      crypto: powerpc/aes - kernel config
      crypto: powerpc/sha1 - assembler
      crypto: powerpc/sha1 - glue
      crypto: powerpc/sha1 - kernel config
      crypto: powerpc/md5 - assembler
      crypto: powerpc/md5 - glue
      crypto: powerpc/md5 - kernel config

Martin Hicks (2):
      crypto: talitos - Simplify per-channel initialization
      crypto: talitos - Remove MD5_BLOCK_SIZE

Masanari Iida (1):
      crypto: serpent_sse2 - Fix a typo in Kconfig

Nicholas Mc Guire (4):
      crypto: mxs-dcp - fix type of ret for wait_for_completion_timeout
      crypto: sahara - fix type of ret for wait_for_completion_timeout
      crypto: sahara - pass on error condition
      crypto: sahara - drop unnecessary default assignment

Sami Tolvanen (1):
      crypto: arm/sha256 - Add optimized SHA-256/224

Scott Branden (2):
      hwrng: iproc-rng200 - Add device tree bindings
      hwrng: iproc-rng200 - Add Broadcom IPROC RNG driver

Steffen Trumtrar (2):
      crypto: sahara - use the backlog
      crypto: sahara - fix AES descriptor create

Stephan Mueller (31):
      crypto: doc - describe internal structure
      crypto: algif - add AEAD support
      crypto: algif - enable AEAD interface compilation
      crypto: drbg - use single block cipher API
      crypto: drbg - remove superflowous memsets
      crypto: rng - RNGs must return 0 in success case
      crypto: doc - AEAD / RNG AF_ALG interface
      MAINTAINERS: add crypto-API.tmpl
      crypto: testmgr - fix RNG return code enforcement
      crypto: algif_rng - zeroize buffer with random data
      crypto: api - prevent helper ciphers from being used
      crypto: testmgr - use CRYPTO_ALG_INTERNAL
      crypto: cryptd - process CRYPTO_ALG_INTERNAL
      crypto: proc - identify internal ciphers
      crypto: aesni - mark AES-NI helper ciphers
      crypto: clmulni - mark ghash clmulni helper ciphers
      crypto: ghash-ce - mark GHASH ARMv8 vmull.p64 helper ciphers
      crypto: camellia_aesni_avx2 - mark AES-NI Camellia helper ciphers
      crypto: cast5_avx - mark CAST5 helper ciphers
      crypto: camellia_aesni_avx - mark AVX Camellia helper ciphers
      crypto: cast6_avx - mark CAST6 helper ciphers
      crypto: serpent_avx2 - mark Serpent AVX2 helper ciphers
      crypto: serpent_avx - mark Serpent AVX helper ciphers
      crypto: serpent_sse2 - mark Serpent SSE2 helper ciphers
      crypto: twofish_avx - mark Twofish AVX helper ciphers
      crypto: aesbs - mark NEON bit sliced AES helper ciphers
      crypto: aes-ce - mark ARMv8 AES helper ciphers
      crypto: arm64/aes - mark 64 bit ARMv8 AES helper ciphers
      crypto: mcryptd - process CRYPTO_ALG_INTERNAL
      crypto: sha-mb - mark Multi buffer SHA1 helper cipher
      crypto: api - remove instance when test failed

Tadeusz Struk (3):
      crypto: aesni - make driver-gcm-aes-aesni helper a proper aead alg
      crypto: qat - print ring name in debug output
      crypto: qat - fix double release_firmware on error path

Tom Lendacky (5):
      crypto: ccp - Updates for checkpatch warnings/errors
      crypto: ccp - Update CCP build support
      crypto: ccp - Use dma_set_mask_and_coherent to set DMA mask
      crypto: ccp - Convert calls to their devm_ counterparts
      crypto: ccp - Add ACPI support

Vutla, Lokesh (3):
      crypto: omap-sham - Use pm_runtime_irq_safe()
      crypto: omap-aes - Fix support for unequal lengths
      crypto: omap-sham - Add the offset of sg page to vaddr

Yanjiang Jin (2):
      crypto: caam - fix uninitialized edesc->sec4_sg_bytes field
      hwrng: caam - fix rng_unmap_ctx's DMA_UNMAP size problem

mancha security (1):
      lib: memzero_explicit: use barrier instead of OPTIMIZER_HIDE_VAR

 Documentation/DocBook/crypto-API.tmpl              |  860 ++++++
 Documentation/crypto/crypto-API-userspace.txt      |  205 --
 .../devicetree/bindings/crypto/img-hash.txt        |   27 +
 .../bindings/hwrng/brcm,iproc-rng200.txt           |   12 +
 MAINTAINERS                                        |    1 +
 arch/arm/Kconfig                                   |    3 +
 arch/arm/crypto/Kconfig                            |  130 +
 arch/arm/crypto/Makefile                           |   27 +-
 arch/arm/crypto/aes-ce-core.S                      |  518 ++++
 arch/arm/crypto/aes-ce-glue.c                      |  524 ++++
 arch/arm/crypto/aesbs-glue.c                       |    9 +-
 arch/arm/crypto/ghash-ce-core.S                    |   94 +
 arch/arm/crypto/ghash-ce-glue.c                    |  320 +++
 arch/arm/crypto/sha1-ce-core.S                     |  125 +
 arch/arm/crypto/sha1-ce-glue.c                     |   96 +
 arch/arm/{include/asm => }/crypto/sha1.h           |    3 +
 arch/arm/crypto/sha1_glue.c                        |  112 +-
 arch/arm/crypto/sha1_neon_glue.c                   |  137 +-
 arch/arm/crypto/sha2-ce-core.S                     |  125 +
 arch/arm/crypto/sha2-ce-glue.c                     |  114 +
 arch/arm/crypto/sha256-armv4.pl                    |  716 +++++
 arch/arm/crypto/sha256-core.S_shipped              | 2808 ++++++++++++++++++++
 arch/arm/crypto/sha256_glue.c                      |  128 +
 arch/arm/crypto/sha256_glue.h                      |   14 +
 arch/arm/crypto/sha256_neon_glue.c                 |  101 +
 arch/arm64/crypto/aes-glue.c                       |   12 +-
 arch/arm64/crypto/sha1-ce-core.S                   |   33 +-
 arch/arm64/crypto/sha1-ce-glue.c                   |  151 +-
 arch/arm64/crypto/sha2-ce-core.S                   |   29 +-
 arch/arm64/crypto/sha2-ce-glue.c                   |  227 +-
 arch/mips/cavium-octeon/crypto/Makefile            |    5 +-
 arch/mips/cavium-octeon/crypto/octeon-crypto.c     |    4 +-
 arch/mips/cavium-octeon/crypto/octeon-crypto.h     |   83 +-
 arch/mips/cavium-octeon/crypto/octeon-md5.c        |    8 -
 arch/mips/cavium-octeon/crypto/octeon-sha1.c       |  241 ++
 arch/mips/cavium-octeon/crypto/octeon-sha256.c     |  280 ++
 arch/mips/cavium-octeon/crypto/octeon-sha512.c     |  277 ++
 arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h  |   14 -
 arch/powerpc/crypto/Makefile                       |    8 +
 arch/powerpc/crypto/aes-spe-core.S                 |  351 +++
 arch/powerpc/crypto/aes-spe-glue.c                 |  512 ++++
 arch/powerpc/crypto/aes-spe-keys.S                 |  283 ++
 arch/powerpc/crypto/aes-spe-modes.S                |  630 +++++
 arch/powerpc/crypto/aes-spe-regs.h                 |   42 +
 arch/powerpc/crypto/aes-tab-4k.S                   |  331 +++
 arch/powerpc/crypto/md5-asm.S                      |  243 ++
 arch/powerpc/crypto/md5-glue.c                     |  165 ++
 arch/powerpc/crypto/sha1-spe-asm.S                 |  299 +++
 arch/powerpc/crypto/sha1-spe-glue.c                |  210 ++
 arch/powerpc/crypto/sha256-spe-asm.S               |  323 +++
 arch/powerpc/crypto/sha256-spe-glue.c              |  275 ++
 arch/x86/crypto/aesni-intel_glue.c                 |  187 +-
 arch/x86/crypto/camellia_aesni_avx2_glue.c         |   15 +-
 arch/x86/crypto/camellia_aesni_avx_glue.c          |   15 +-
 arch/x86/crypto/cast5_avx_glue.c                   |    9 +-
 arch/x86/crypto/cast6_avx_glue.c                   |   15 +-
 arch/x86/crypto/ghash-clmulni-intel_glue.c         |    7 +-
 arch/x86/crypto/glue_helper.c                      |    1 -
 arch/x86/crypto/serpent_avx2_glue.c                |   15 +-
 arch/x86/crypto/serpent_avx_glue.c                 |   15 +-
 arch/x86/crypto/serpent_sse2_glue.c                |   15 +-
 arch/x86/crypto/sha-mb/sha1_mb.c                   |    9 +-
 arch/x86/crypto/sha-mb/sha1_mb_mgr_init_avx2.c     |    2 +-
 arch/x86/crypto/sha1_ssse3_glue.c                  |  139 +-
 arch/x86/crypto/sha256-avx-asm.S                   |   10 +-
 arch/x86/crypto/sha256-avx2-asm.S                  |   10 +-
 arch/x86/crypto/sha256-ssse3-asm.S                 |   10 +-
 arch/x86/crypto/sha256_ssse3_glue.c                |  193 +-
 arch/x86/crypto/sha512-avx-asm.S                   |    6 +-
 arch/x86/crypto/sha512-avx2-asm.S                  |    6 +-
 arch/x86/crypto/sha512-ssse3-asm.S                 |    6 +-
 arch/x86/crypto/sha512_ssse3_glue.c                |  202 +-
 arch/x86/crypto/twofish_avx_glue.c                 |   15 +-
 crypto/Kconfig                                     |  142 +-
 crypto/Makefile                                    |    1 +
 crypto/ablk_helper.c                               |    3 +-
 crypto/algapi.c                                    |   42 +-
 crypto/algif_aead.c                                |  666 +++++
 crypto/algif_rng.c                                 |    2 +-
 crypto/ansi_cprng.c                                |    6 +-
 crypto/api.c                                       |   10 +
 crypto/cryptd.c                                    |   49 +-
 crypto/crypto_user.c                               |   39 +-
 crypto/drbg.c                                      |   64 +-
 crypto/mcryptd.c                                   |   25 +-
 crypto/proc.c                                      |    3 +
 crypto/sha1_generic.c                              |  102 +-
 crypto/sha256_generic.c                            |  133 +-
 crypto/sha512_generic.c                            |  123 +-
 crypto/tcrypt.c                                    |    4 +-
 crypto/testmgr.c                                   |   24 +-
 drivers/char/hw_random/Kconfig                     |   13 +
 drivers/char/hw_random/Makefile                    |    1 +
 drivers/char/hw_random/bcm63xx-rng.c               |  120 +-
 drivers/char/hw_random/core.c                      |   45 +-
 drivers/char/hw_random/exynos-rng.c                |   12 +-
 drivers/char/hw_random/iproc-rng200.c              |  239 ++
 drivers/char/hw_random/msm-rng.c                   |   11 +-
 drivers/char/hw_random/octeon-rng.c                |    4 +-
 drivers/char/hw_random/omap-rng.c                  |   23 +-
 drivers/char/hw_random/pseries-rng.c               |    4 +-
 drivers/char/hw_random/xgene-rng.c                 |   10 +
 drivers/crypto/Kconfig                             |   24 +-
 drivers/crypto/Makefile                            |    2 +
 drivers/crypto/amcc/crypto4xx_core.c               |    6 +-
 drivers/crypto/atmel-aes.c                         |   26 +-
 drivers/crypto/atmel-sha.c                         |   37 +-
 drivers/crypto/atmel-tdes.c                        |    3 +-
 drivers/crypto/caam/caamhash.c                     |    1 +
 drivers/crypto/caam/caamrng.c                      |    6 +-
 drivers/crypto/ccp/Makefile                        |    9 +-
 drivers/crypto/ccp/ccp-crypto-aes-cmac.c           |   12 +-
 drivers/crypto/ccp/ccp-crypto-aes-xts.c            |    4 +-
 drivers/crypto/ccp/ccp-crypto-aes.c                |    3 +-
 drivers/crypto/ccp/ccp-crypto-main.c               |    5 +-
 drivers/crypto/ccp/ccp-crypto-sha.c                |   12 +-
 drivers/crypto/ccp/ccp-crypto.h                    |    3 -
 drivers/crypto/ccp/ccp-dev.c                       |    7 +-
 drivers/crypto/ccp/ccp-dev.h                       |   12 +-
 drivers/crypto/ccp/ccp-ops.c                       |   24 +-
 drivers/crypto/ccp/ccp-pci.c                       |   21 +-
 drivers/crypto/ccp/ccp-platform.c                  |  111 +-
 drivers/crypto/img-hash.c                          | 1029 +++++++
 drivers/crypto/mxs-dcp.c                           |    2 +-
 drivers/crypto/omap-aes.c                          |   14 +-
 drivers/crypto/omap-sham.c                         |    2 +
 drivers/crypto/qat/qat_common/adf_accel_devices.h  |    1 -
 drivers/crypto/qat/qat_common/adf_accel_engine.c   |   35 +-
 drivers/crypto/qat/qat_common/adf_aer.c            |   21 +-
 drivers/crypto/qat/qat_common/adf_cfg.c            |    5 +-
 drivers/crypto/qat/qat_common/adf_cfg_strings.h    |   10 +-
 drivers/crypto/qat/qat_common/adf_common_drv.h     |    2 +-
 drivers/crypto/qat/qat_common/adf_ctl_drv.c        |   66 +-
 drivers/crypto/qat/qat_common/adf_dev_mgr.c        |    3 +-
 drivers/crypto/qat/qat_common/adf_init.c           |   88 +-
 drivers/crypto/qat/qat_common/adf_transport.c      |   31 +-
 .../crypto/qat/qat_common/adf_transport_debug.c    |    2 +
 drivers/crypto/qat/qat_common/icp_qat_hw.h         |    2 +-
 drivers/crypto/qat/qat_common/qat_crypto.c         |    9 +-
 drivers/crypto/qat/qat_common/qat_hal.c            |    6 +-
 drivers/crypto/qat/qat_dh895xcc/adf_admin.c        |    3 +-
 .../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c |    3 +-
 .../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h |    6 +-
 drivers/crypto/qat/qat_dh895xcc/adf_drv.c          |    4 +-
 drivers/crypto/qat/qat_dh895xcc/adf_isr.c          |   15 +-
 drivers/crypto/sahara.c                            |   51 +-
 drivers/crypto/talitos.c                           |   17 +-
 drivers/crypto/ux500/hash/hash_core.c              |    2 +-
 drivers/crypto/vmx/Kconfig                         |    8 +
 drivers/crypto/vmx/Makefile                        |   19 +
 drivers/crypto/vmx/aes.c                           |  139 +
 drivers/crypto/vmx/aes_cbc.c                       |  184 ++
 drivers/crypto/vmx/aes_ctr.c                       |  167 ++
 drivers/crypto/vmx/aesp8-ppc.h                     |   20 +
 drivers/crypto/vmx/aesp8-ppc.pl                    | 1930 ++++++++++++++
 drivers/crypto/vmx/ghash.c                         |  214 ++
 drivers/crypto/vmx/ghashp8-ppc.pl                  |  228 ++
 drivers/crypto/vmx/ppc-xlate.pl                    |  207 ++
 drivers/crypto/vmx/vmx.c                           |   88 +
 include/crypto/algapi.h                            |    2 +-
 include/crypto/rng.h                               |    3 +-
 include/crypto/sha.h                               |   15 +-
 include/crypto/sha1_base.h                         |  106 +
 include/crypto/sha256_base.h                       |  128 +
 include/crypto/sha512_base.h                       |  131 +
 include/linux/crypto.h                             |    6 +
 include/linux/hw_random.h                          |    4 +
 lib/string.c                                       |    2 +-
 168 files changed, 18223 insertions(+), 2202 deletions(-)

Thanks,
-- 
Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux