RE: [PATCH 3/3] crypto: ccree: add SM3 support

From: yael.chemla
Date: Thu Oct 18 2018 - 16:46:57 EST


this patch set should be applies after:
"crypto: ccree: add CryptoCell 713 baseline support"
patch set by Gilad Ben-Yossef


> -----Original Message-----
> From: kbuild test robot <lkp@xxxxxxxxx>
> Sent: Thursday, 18 October 2018 22:58
> To: Yael Chemla <yael.chemla@xxxxxxxxxxxx>
> Cc: kbuild-all@xxxxxx; Yael CHEmla <yael.chemla@xxxxxxx>; linux-
> kernel@xxxxxxxxxxxxxxx; Yael Chemla <yael.chemla@xxxxxxxxxxxx>
> Subject: Re: [PATCH 3/3] crypto: ccree: add SM3 support
>
> Hi Yael,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on cryptodev/master] [also build test ERROR on v4.19-
> rc8 next-20181018] [if your patch is applied to the wrong git tree, please drop us
> a note to help improve the system]
>
> url: https://github.com/0day-ci/linux/commits/Yael-Chemla/crypto-ccree-add-
> SM3-support/20181019-033131
> base: https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-
> 2.6.git master
> config: i386-randconfig-x004-201841 (attached as .config)
> compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
> reproduce:
> # save the attached .config to linux build tree
> make ARCH=i386
>
> All error/warnings (new ones prefixed by >>):
>
> >> drivers/crypto/ccree/cc_hash.c:1729:17: error: 'CC_HW_REV_713'
> undeclared here (not in a function); did you mean 'CC_HW_REV_712'?
> .min_hw_rev = CC_HW_REV_713,
> ^~~~~~~~~~~~~
> CC_HW_REV_712
> drivers/crypto/ccree/cc_hash.c: In function 'cc_init_hash_sram':
> >> drivers/crypto/ccree/cc_hash.c:1832:40: warning: comparison between
> >> pointer and integer
> bool sm3_supported = (drvdata->hw_rev >= CC_HW_REV_713);
> ^~
> drivers/crypto/ccree/cc_hash.c: In function 'cc_hash_alloc':
> drivers/crypto/ccree/cc_hash.c:1975:22: warning: comparison between
> pointer and integer
> if (drvdata->hw_rev >= CC_HW_REV_713)
> ^~
> drivers/crypto/ccree/cc_hash.c: In function 'cc_larval_digest_addr':
> drivers/crypto/ccree/cc_hash.c:2252:41: warning: comparison between
> pointer and integer
> bool sm3_supported = (_drvdata->hw_rev >= CC_HW_REV_713);
> ^~
>
> vim +1729 drivers/crypto/ccree/cc_hash.c
>
> 1543
> 1544 #define CC_STATE_SIZE(_x) \
> 1545 ((_x) + HASH_MAX_LEN_SIZE + CC_MAX_HASH_BLCK_SIZE + (2 *
> sizeof(u32)))
> 1546
> 1547 /* hash descriptors */
> 1548 static struct cc_hash_template driver_hash[] = {
> 1549 //Asynchronize hash template
> 1550 {
> 1551 .name = "sha1",
> 1552 .driver_name = "sha1-ccree",
> 1553 .mac_name = "hmac(sha1)",
> 1554 .mac_driver_name = "hmac-sha1-ccree",
> 1555 .blocksize = SHA1_BLOCK_SIZE,
> 1556 .is_mac = true,
> 1557 .synchronize = false,
> 1558 .template_ahash = {
> 1559 .init = cc_hash_init,
> 1560 .update = cc_hash_update,
> 1561 .final = cc_hash_final,
> 1562 .finup = cc_hash_finup,
> 1563 .digest = cc_hash_digest,
> 1564 .export = cc_hash_export,
> 1565 .import = cc_hash_import,
> 1566 .setkey = cc_hash_setkey,
> 1567 .halg = {
> 1568 .digestsize = SHA1_DIGEST_SIZE,
> 1569 .statesize =
> CC_STATE_SIZE(SHA1_DIGEST_SIZE),
> 1570 },
> 1571 },
> 1572 .hash_mode = DRV_HASH_SHA1,
> 1573 .hw_mode = DRV_HASH_HW_SHA1,
> 1574 .inter_digestsize = SHA1_DIGEST_SIZE,
> 1575 .min_hw_rev = CC_HW_REV_630,
> 1576 },
> 1577 {
> 1578 .name = "sha256",
> 1579 .driver_name = "sha256-ccree",
> 1580 .mac_name = "hmac(sha256)",
> 1581 .mac_driver_name = "hmac-sha256-ccree",
> 1582 .blocksize = SHA256_BLOCK_SIZE,
> 1583 .is_mac = true,
> 1584 .template_ahash = {
> 1585 .init = cc_hash_init,
> 1586 .update = cc_hash_update,
> 1587 .final = cc_hash_final,
> 1588 .finup = cc_hash_finup,
> 1589 .digest = cc_hash_digest,
> 1590 .export = cc_hash_export,
> 1591 .import = cc_hash_import,
> 1592 .setkey = cc_hash_setkey,
> 1593 .halg = {
> 1594 .digestsize = SHA256_DIGEST_SIZE,
> 1595 .statesize =
> CC_STATE_SIZE(SHA256_DIGEST_SIZE)
> 1596 },
> 1597 },
> 1598 .hash_mode = DRV_HASH_SHA256,
> 1599 .hw_mode = DRV_HASH_HW_SHA256,
> 1600 .inter_digestsize = SHA256_DIGEST_SIZE,
> 1601 .min_hw_rev = CC_HW_REV_630,
> 1602 },
> 1603 {
> 1604 .name = "sha224",
> 1605 .driver_name = "sha224-ccree",
> 1606 .mac_name = "hmac(sha224)",
> 1607 .mac_driver_name = "hmac-sha224-ccree",
> 1608 .blocksize = SHA224_BLOCK_SIZE,
> 1609 .is_mac = true,
> 1610 .template_ahash = {
> 1611 .init = cc_hash_init,
> 1612 .update = cc_hash_update,
> 1613 .final = cc_hash_final,
> 1614 .finup = cc_hash_finup,
> 1615 .digest = cc_hash_digest,
> 1616 .export = cc_hash_export,
> 1617 .import = cc_hash_import,
> 1618 .setkey = cc_hash_setkey,
> 1619 .halg = {
> 1620 .digestsize = SHA224_DIGEST_SIZE,
> 1621 .statesize =
> CC_STATE_SIZE(SHA224_DIGEST_SIZE),
> 1622 },
> 1623 },
> 1624 .hash_mode = DRV_HASH_SHA224,
> 1625 .hw_mode = DRV_HASH_HW_SHA256,
> 1626 .inter_digestsize = SHA256_DIGEST_SIZE,
> 1627 .min_hw_rev = CC_HW_REV_630,
> 1628 },
> 1629 {
> 1630 .name = "sha384",
> 1631 .driver_name = "sha384-ccree",
> 1632 .mac_name = "hmac(sha384)",
> 1633 .mac_driver_name = "hmac-sha384-ccree",
> 1634 .blocksize = SHA384_BLOCK_SIZE,
> 1635 .is_mac = true,
> 1636 .template_ahash = {
> 1637 .init = cc_hash_init,
> 1638 .update = cc_hash_update,
> 1639 .final = cc_hash_final,
> 1640 .finup = cc_hash_finup,
> 1641 .digest = cc_hash_digest,
> 1642 .export = cc_hash_export,
> 1643 .import = cc_hash_import,
> 1644 .setkey = cc_hash_setkey,
> 1645 .halg = {
> 1646 .digestsize = SHA384_DIGEST_SIZE,
> 1647 .statesize =
> CC_STATE_SIZE(SHA384_DIGEST_SIZE),
> 1648 },
> 1649 },
> 1650 .hash_mode = DRV_HASH_SHA384,
> 1651 .hw_mode = DRV_HASH_HW_SHA512,
> 1652 .inter_digestsize = SHA512_DIGEST_SIZE,
> 1653 .min_hw_rev = CC_HW_REV_712,
> 1654 },
> 1655 {
> 1656 .name = "sha512",
> 1657 .driver_name = "sha512-ccree",
> 1658 .mac_name = "hmac(sha512)",
> 1659 .mac_driver_name = "hmac-sha512-ccree",
> 1660 .blocksize = SHA512_BLOCK_SIZE,
> 1661 .is_mac = true,
> 1662 .template_ahash = {
> 1663 .init = cc_hash_init,
> 1664 .update = cc_hash_update,
> 1665 .final = cc_hash_final,
> 1666 .finup = cc_hash_finup,
> 1667 .digest = cc_hash_digest,
> 1668 .export = cc_hash_export,
> 1669 .import = cc_hash_import,
> 1670 .setkey = cc_hash_setkey,
> 1671 .halg = {
> 1672 .digestsize = SHA512_DIGEST_SIZE,
> 1673 .statesize =
> CC_STATE_SIZE(SHA512_DIGEST_SIZE),
> 1674 },
> 1675 },
> 1676 .hash_mode = DRV_HASH_SHA512,
> 1677 .hw_mode = DRV_HASH_HW_SHA512,
> 1678 .inter_digestsize = SHA512_DIGEST_SIZE,
> 1679 .min_hw_rev = CC_HW_REV_712,
> 1680 },
> 1681 {
> 1682 .name = "md5",
> 1683 .driver_name = "md5-ccree",
> 1684 .mac_name = "hmac(md5)",
> 1685 .mac_driver_name = "hmac-md5-ccree",
> 1686 .blocksize = MD5_HMAC_BLOCK_SIZE,
> 1687 .is_mac = true,
> 1688 .template_ahash = {
> 1689 .init = cc_hash_init,
> 1690 .update = cc_hash_update,
> 1691 .final = cc_hash_final,
> 1692 .finup = cc_hash_finup,
> 1693 .digest = cc_hash_digest,
> 1694 .export = cc_hash_export,
> 1695 .import = cc_hash_import,
> 1696 .setkey = cc_hash_setkey,
> 1697 .halg = {
> 1698 .digestsize = MD5_DIGEST_SIZE,
> 1699 .statesize =
> CC_STATE_SIZE(MD5_DIGEST_SIZE),
> 1700 },
> 1701 },
> 1702 .hash_mode = DRV_HASH_MD5,
> 1703 .hw_mode = DRV_HASH_HW_MD5,
> 1704 .inter_digestsize = MD5_DIGEST_SIZE,
> 1705 .min_hw_rev = CC_HW_REV_630,
> 1706 },
> 1707 {
> 1708 .name = "sm3",
> 1709 .driver_name = "sm3-ccree",
> 1710 .blocksize = SM3_BLOCK_SIZE,
> 1711 .is_mac = false,
> 1712 .template_ahash = {
> 1713 .init = cc_hash_init,
> 1714 .update = cc_hash_update,
> 1715 .final = cc_hash_final,
> 1716 .finup = cc_hash_finup,
> 1717 .digest = cc_hash_digest,
> 1718 .export = cc_hash_export,
> 1719 .import = cc_hash_import,
> 1720 .setkey = cc_hash_setkey,
> 1721 .halg = {
> 1722 .digestsize = SM3_DIGEST_SIZE,
> 1723 .statesize =
> CC_STATE_SIZE(SM3_DIGEST_SIZE),
> 1724 },
> 1725 },
> 1726 .hash_mode = DRV_HASH_SM3,
> 1727 .hw_mode = DRV_HASH_HW_SM3,
> 1728 .inter_digestsize = SM3_DIGEST_SIZE,
> > 1729 .min_hw_rev = CC_HW_REV_713,
> 1730 },
> 1731 {
> 1732 .mac_name = "xcbc(aes)",
> 1733 .mac_driver_name = "xcbc-aes-ccree",
> 1734 .blocksize = AES_BLOCK_SIZE,
> 1735 .is_mac = true,
> 1736 .template_ahash = {
> 1737 .init = cc_hash_init,
> 1738 .update = cc_mac_update,
> 1739 .final = cc_mac_final,
> 1740 .finup = cc_mac_finup,
> 1741 .digest = cc_mac_digest,
> 1742 .setkey = cc_xcbc_setkey,
> 1743 .export = cc_hash_export,
> 1744 .import = cc_hash_import,
> 1745 .halg = {
> 1746 .digestsize = AES_BLOCK_SIZE,
> 1747 .statesize =
> CC_STATE_SIZE(AES_BLOCK_SIZE),
> 1748 },
> 1749 },
> 1750 .hash_mode = DRV_HASH_NULL,
> 1751 .hw_mode = DRV_CIPHER_XCBC_MAC,
> 1752 .inter_digestsize = AES_BLOCK_SIZE,
> 1753 .min_hw_rev = CC_HW_REV_630,
> 1754 },
> 1755 {
> 1756 .mac_name = "cmac(aes)",
> 1757 .mac_driver_name = "cmac-aes-ccree",
> 1758 .blocksize = AES_BLOCK_SIZE,
> 1759 .is_mac = true,
> 1760 .template_ahash = {
> 1761 .init = cc_hash_init,
> 1762 .update = cc_mac_update,
> 1763 .final = cc_mac_final,
> 1764 .finup = cc_mac_finup,
> 1765 .digest = cc_mac_digest,
> 1766 .setkey = cc_cmac_setkey,
> 1767 .export = cc_hash_export,
> 1768 .import = cc_hash_import,
> 1769 .halg = {
> 1770 .digestsize = AES_BLOCK_SIZE,
> 1771 .statesize =
> CC_STATE_SIZE(AES_BLOCK_SIZE),
> 1772 },
> 1773 },
> 1774 .hash_mode = DRV_HASH_NULL,
> 1775 .hw_mode = DRV_CIPHER_CMAC,
> 1776 .inter_digestsize = AES_BLOCK_SIZE,
> 1777 .min_hw_rev = CC_HW_REV_630,
> 1778 },
> 1779 };
> 1780
> 1781 static struct cc_hash_alg *cc_alloc_hash_alg(struct cc_hash_template
> *template,
> 1782 struct device *dev, bool
> keyed)
> 1783 {
> 1784 struct cc_hash_alg *t_crypto_alg;
> 1785 struct crypto_alg *alg;
> 1786 struct ahash_alg *halg;
> 1787
> 1788 t_crypto_alg = kzalloc(sizeof(*t_crypto_alg), GFP_KERNEL);
> 1789 if (!t_crypto_alg)
> 1790 return ERR_PTR(-ENOMEM);
> 1791
> 1792 t_crypto_alg->ahash_alg = template->template_ahash;
> 1793 halg = &t_crypto_alg->ahash_alg;
> 1794 alg = &halg->halg.base;
> 1795
> 1796 if (keyed) {
> 1797 snprintf(alg->cra_name, CRYPTO_MAX_ALG_NAME,
> "%s",
> 1798 template->mac_name);
> 1799 snprintf(alg->cra_driver_name,
> CRYPTO_MAX_ALG_NAME, "%s",
> 1800 template->mac_driver_name);
> 1801 } else {
> 1802 halg->setkey = NULL;
> 1803 snprintf(alg->cra_name, CRYPTO_MAX_ALG_NAME,
> "%s",
> 1804 template->name);
> 1805 snprintf(alg->cra_driver_name,
> CRYPTO_MAX_ALG_NAME, "%s",
> 1806 template->driver_name);
> 1807 }
> 1808 alg->cra_module = THIS_MODULE;
> 1809 alg->cra_ctxsize = sizeof(struct cc_hash_ctx);
> 1810 alg->cra_priority = CC_CRA_PRIO;
> 1811 alg->cra_blocksize = template->blocksize;
> 1812 alg->cra_alignmask = 0;
> 1813 alg->cra_exit = cc_cra_exit;
> 1814
> 1815 alg->cra_init = cc_cra_init;
> 1816 alg->cra_flags = CRYPTO_ALG_ASYNC |
> CRYPTO_ALG_KERN_DRIVER_ONLY;
> 1817
> 1818 t_crypto_alg->hash_mode = template->hash_mode;
> 1819 t_crypto_alg->hw_mode = template->hw_mode;
> 1820 t_crypto_alg->inter_digestsize = template->inter_digestsize;
> 1821
> 1822 return t_crypto_alg;
> 1823 }
> 1824
> 1825 int cc_init_hash_sram(struct cc_drvdata *drvdata)
> 1826 {
> 1827 struct cc_hash_handle *hash_handle = drvdata->hash_handle;
> 1828 cc_sram_addr_t sram_buff_ofs = hash_handle-
> >digest_len_sram_addr;
> 1829 unsigned int larval_seq_len = 0;
> 1830 struct cc_hw_desc larval_seq[CC_DIGEST_SIZE_MAX /
> sizeof(u32)];
> 1831 bool large_sha_supported = (drvdata->hw_rev >=
> CC_HW_REV_712);
> > 1832 bool sm3_supported = (drvdata->hw_rev >= CC_HW_REV_713);
> 1833 int rc = 0;
> 1834
> 1835 /* Copy-to-sram digest-len */
> 1836 cc_set_sram_desc(digest_len_init, sram_buff_ofs,
> 1837 ARRAY_SIZE(digest_len_init), larval_seq,
> 1838 &larval_seq_len);
> 1839 rc = send_request_init(drvdata, larval_seq, larval_seq_len);
> 1840 if (rc)
> 1841 goto init_digest_const_err;
> 1842
> 1843 sram_buff_ofs += sizeof(digest_len_init);
> 1844 larval_seq_len = 0;
> 1845
> 1846 if (large_sha_supported) {
> 1847 /* Copy-to-sram digest-len for sha384/512 */
> 1848 cc_set_sram_desc(digest_len_sha512_init,
> sram_buff_ofs,
> 1849 ARRAY_SIZE(digest_len_sha512_init),
> 1850 larval_seq, &larval_seq_len);
> 1851 rc = send_request_init(drvdata, larval_seq,
> larval_seq_len);
> 1852 if (rc)
> 1853 goto init_digest_const_err;
> 1854
> 1855 sram_buff_ofs += sizeof(digest_len_sha512_init);
> 1856 larval_seq_len = 0;
> 1857 }
> 1858
> 1859 /* The initial digests offset */
> 1860 hash_handle->larval_digest_sram_addr = sram_buff_ofs;
> 1861
> 1862 /* Copy-to-sram initial SHA* digests */
> 1863 cc_set_sram_desc(md5_init, sram_buff_ofs,
> ARRAY_SIZE(md5_init),
> 1864 larval_seq, &larval_seq_len);
> 1865 rc = send_request_init(drvdata, larval_seq, larval_seq_len);
> 1866 if (rc)
> 1867 goto init_digest_const_err;
> 1868 sram_buff_ofs += sizeof(md5_init);
> 1869 larval_seq_len = 0;
> 1870
> 1871 cc_set_sram_desc(sha1_init, sram_buff_ofs,
> 1872 ARRAY_SIZE(sha1_init), larval_seq,
> 1873 &larval_seq_len);
> 1874 rc = send_request_init(drvdata, larval_seq, larval_seq_len);
> 1875 if (rc)
> 1876 goto init_digest_const_err;
> 1877 sram_buff_ofs += sizeof(sha1_init);
> 1878 larval_seq_len = 0;
> 1879
> 1880 cc_set_sram_desc(sha224_init, sram_buff_ofs,
> 1881 ARRAY_SIZE(sha224_init), larval_seq,
> 1882 &larval_seq_len);
> 1883 rc = send_request_init(drvdata, larval_seq, larval_seq_len);
> 1884 if (rc)
> 1885 goto init_digest_const_err;
> 1886 sram_buff_ofs += sizeof(sha224_init);
> 1887 larval_seq_len = 0;
> 1888
> 1889 cc_set_sram_desc(sha256_init, sram_buff_ofs,
> 1890 ARRAY_SIZE(sha256_init), larval_seq,
> 1891 &larval_seq_len);
> 1892 rc = send_request_init(drvdata, larval_seq, larval_seq_len);
> 1893 if (rc)
> 1894 goto init_digest_const_err;
> 1895 sram_buff_ofs += sizeof(sha256_init);
> 1896 larval_seq_len = 0;
> 1897
> 1898 if (sm3_supported) {
> 1899 cc_set_sram_desc(sm3_init, sram_buff_ofs,
> 1900 ARRAY_SIZE(sm3_init), larval_seq,
> 1901 &larval_seq_len);
> 1902 rc = send_request_init(drvdata, larval_seq,
> larval_seq_len);
> 1903 if (rc)
> 1904 goto init_digest_const_err;
> 1905 sram_buff_ofs += sizeof(sm3_init);
> 1906 larval_seq_len = 0;
> 1907 }
> 1908
> 1909 if (large_sha_supported) {
> 1910 cc_set_sram_desc((u32 *)sha384_init, sram_buff_ofs,
> 1911 (ARRAY_SIZE(sha384_init) * 2),
> larval_seq,
> 1912 &larval_seq_len);
> 1913 rc = send_request_init(drvdata, larval_seq,
> larval_seq_len);
> 1914 if (rc)
> 1915 goto init_digest_const_err;
> 1916 sram_buff_ofs += sizeof(sha384_init);
> 1917 larval_seq_len = 0;
> 1918
> 1919 cc_set_sram_desc((u32 *)sha512_init, sram_buff_ofs,
> 1920 (ARRAY_SIZE(sha512_init) * 2),
> larval_seq,
> 1921 &larval_seq_len);
> 1922 rc = send_request_init(drvdata, larval_seq,
> larval_seq_len);
> 1923 if (rc)
> 1924 goto init_digest_const_err;
> 1925 }
> 1926
> 1927 init_digest_const_err:
> 1928 return rc;
> 1929 }
> 1930
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation