From patchwork Mon Jul 17 20:08:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gary R Hook X-Patchwork-Id: 9846041 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 170D460392 for ; Mon, 17 Jul 2017 20:08:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 08AAC265B9 for ; Mon, 17 Jul 2017 20:08:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F13FD2844E; Mon, 17 Jul 2017 20:08:38 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D7848265B9 for ; Mon, 17 Jul 2017 20:08:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751318AbdGQUIg (ORCPT ); Mon, 17 Jul 2017 16:08:36 -0400 Received: from mail-co1nam03on0073.outbound.protection.outlook.com ([104.47.40.73]:9824 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751317AbdGQUIe (ORCPT ); Mon, 17 Jul 2017 16:08:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=me/vOe2nt8NB1jvY8Fs71UP8XfXXDUw6DRf9fSCkg/Q=; b=yOhwfFyJA/KLLNYHBDOXRbkEQ6pdh7NZq8b/MIIJb1alET3kL9vx5Fxvwa75hg3B4I1J7Ze0IRt4r7Tq60x2Cx/d27t1/rLZ9dOyUGcurRjCCiZftQ1kG8hNWmYgk49Tn5/gqCd6a/AyMV0NeFHXtnCJkrzu3BObHz/t/1GjMiE= Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; Received: from sosxen.amd.com (165.204.78.1) by CY4PR12MB1318.namprd12.prod.outlook.com (10.168.168.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.13; Mon, 17 Jul 2017 20:08:32 +0000 Subject: [PATCH] crypto: ccp - Fix XTS-AES support on a version 5 CCP From: Gary R Hook To: linux-crypto@vger.kernel.org Cc: thomas.lendacky@amd.com, herbert@gondor.apana.org.au, davem@davemloft.net Date: Mon, 17 Jul 2017 15:08:27 -0500 Message-ID: <150032210775.102848.1585950131204303137.stgit@sosxen.amd.com> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: BN6PR1701CA0002.namprd17.prod.outlook.com (10.172.26.140) To CY4PR12MB1318.namprd12.prod.outlook.com (10.168.168.143) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 747abe23-ddd5-4701-b754-08d4cd4f999e X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(48565401081)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:CY4PR12MB1318; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1318; 3:4Bnx0W3XvR3ip3vvMyJAWGBev5u4gsHtO6ZDnuHsJ923ZG8TcEbrbEvB68U2zmXx+acI6/puGy6+7X9eSwaF0n27ldDUq90hr+UyuBCfoJDU1omDvGILUWI+OQBaDVZXSuGSbgkE09fiFygWsyhUX2y4vLxRHYAbSozGN5nqDgj4NbkG73aHzp5Ky6vAVeJbeNH0lky+afcS9ZB63XEnOHsh2lBwyjtN4ilRq+c6zJDX3NRHipskgop3cf0p6Tfe0YVkyAaM63n9Ga37XrxUY98HywatDbiTMn4RxNFl2L8sUBnPJQx6gxmyj80ppVPvBiKMpWF0RCr4RjLD4yb8fb0ofPvgrs5mbu109E7nqG+awcISsym81RFLJ59P+Csnks+Hi9ZDFwW5EfblTGd9ml+Xb2hWMsd1v0gxckGZyLGaZldb44XZBxvq3Tqh7Xm59q86A6aBs6lTuKT/fAPuu+Xr3xOqUTuQDg9rdgu7WKmWSqEX+CdI22MzzbBp3aRMa/WLXxEDwA0FJblJ8J7O0ThCgpbgJRVkayQEafOt0dKcTUQd7aP599hnzRdaWRq+VKRjA/VpkL6Omc6ZAMowMer4vKf0m2sbCvvI1vm+rbCLdopTKEi45eA3ZnXpal6FnUxO1txzsIhS+3OGxdsd0k16CYuk59zu1YboHv8cbHNwvcNH7SP+jq2nk8vqexJm2Y9ZYxhk5unWB3rIKU2b/KV99Ni6r42TXpq6OdRH1MfEoAbSIulIGMA2Par/UWUfpA+0Ey0XS9Mi2clT1mqLaw== X-MS-TrafficTypeDiagnostic: CY4PR12MB1318: X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1318; 25:B8VvtjH80EwRSnniMhDp1ph2Us7FgLczFyIOCHY7jFxjoYIydnUvQBnzcPnom2QnTUQ2CMsgDB/Q2AZevaCE2wa6W97zT/ZpQ8eBCygieCEaVx6xFr+0A7FaprOJwBnNJbrchOXk+fXEPbOFr3fbZXX/qLAksjacfrbmSp6MKPZ51myyyHq88B9g3ZfS9Vt36fqhzsTC6WS43MqaSAR3g7J60qDVbkaVqFFvEXV/5jCbgbm4srubxUVSPSkhbp5b3gpKWDjC+4Crx5dwftzSHxob0owsnuyLrVlRkSbBqDi/g9TTnbbqRAheQjv5OoRaICEzA0yH/zKHLWw3xJ4fyyW23sQPGUfwAxc5oRkMPY66jKNJI/2k10oEIoaDJE6JqHyWtzORmvU7GTV0KSMPEqUBpJaacEUH+k1YeRoeYGlTQVMXK49+wxtZg3XOcM73oeq0mf6hPMAj5IRH+E11aCUDR3MFTvxjBf869Celyx3TMK5feAmAWts+eiU0k94bm9IV4vLGdUW1Qlf9ljAs2ZWgvoc7P7V7EKVVVRotK7ZzzHcABOIGGwSXTCjpFOFk5ZYsH/czmOKTj61Aq4+rFUFugrx1ph8hs/zxQsQWQaK8qaEYrAi/f+nZPY6JLROBWes5cgNR7Ln262QTYZbIvoi/lNfhS+83icHxpSydr/b+aqV36RUU2XpIKZpdLOeJkjHWjyCJlL/RRG36tktpKQ0sabyL05DjWFiSZ2FgWI+RkEbxi3TbRFHgtmumIDa8UwQCTlkwwe674yBwNy3IVeyLt+gu3pz269i8G9/8ff3XMtbN+1jzJJaQgHY3D7jkysNGft3+CMkIsDrH92YIkxqk/+wQ1uUsdfbiIrVfWDEixx9C+Oqm+qcWK87Xgz6XVQwuw9zIYpbA0ONnOkdndEKEoIo+6Zw5iRA31qBVz Ws= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1318; 31:xOjNalM+UiWHX5DMAud/qHnQ6LxGw2rQxEZsgruSO7TLZSl72IJyrBHp8Vt2zhLjgnYycs+29mX3dq4m/yzq31nOfN6D+e+XOeNTXFZmnNFScjSFfPaCw3mVAw+/dQvqLhAxtKjMM0VAhwc4yIbKjOExqNBMcvaVCvQHXpGhDHLUz74NIrYMhYVl7O5BDqSJLbVZUoe4fCbHLx8BamrjyoEWJYjFe29CtZ/yC7zYgYYV5tr2CehNbdnyeAWvcUEwq4rjQVNXC/ZA6F1xCSUhPUIPFzkzlMwMeZX15ORCs2LfI1iAS4erwMbvitmmFQThe32l2HtfLzHm8m1uov1XusvTECiTCCqjmlIDfVpytKaPE18/w9rvknK3TkK+hcmfMcNzmXa75OFFZ4sUM3mj+gXmmtKqzcBac85LjwvSAmn05zy4yffAqYhdkKQVVkOI7vUbQxwRybp/T0bXqLQMDe6ghjHFJyHWNDTIR/PgLTlQPdrbU8IDenQ0Vbmt6ptNTV5rdiGVBjGfANJx68KWeJiRrbuwseExH914wWJgMLhPjsnc2cSyGQm89fU9AOFniOEH/W1OHu68jzPxk7DF6cm+PiGUuhZNwvNhjo6p7Tvt0HJVwtOEMxnuwGq3aZqFKIIzaR/QrE5seyj8nOMuqN3bBa4DrqJ54n2KTH9I+gY= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1318; 20:hKKLV6EccaKF/SyNEUfIRpR+6NNhSOEuTPNxm10pX7FIf2MTde/+FIe/Is4ckDmHWsjKXXn7Mg+y1C9Lfyy9BPcBAI3NX/ewkBMbyVca7NVoVpg60BfH4kYhVvgIUBVKxsGpIDOjPbIXaAy1Kf0gqD4o4pc7Jkd1zA91ngydhpN66BzXY7kE0hegXvkB8WmSZzMtUZfODiVLuGoDyiNS1NkucsbwQsNKBP+DIIlU9q9m0rgRLVx3WMAqeD2h1nX/Rzo4U+4LPE5F9pAvRK54ayTbPU4oLmUL18i7v+N8lzODToyPVD8Axyit0SslwQdEz5hBRMx2g8p/Nb8v1epwb14FcIUyqZGYplsgkLFeUFR2N0YT9hPCVMIk5H3TkztSU5cQR3chW8Pz0K2SZmnbqJKhrSAg9Okfld4pXqXRciHHEWmrDH1VVRsXwRaqGPhYnPxspH4BA5NTb/sXd8nMpwEj27wu4lAhibSQoxmQqRB7lkMtaPIjFD98/8ar3ytn X-Exchange-Antispam-Report-Test: UriScan:(133145235818549)(236129657087228)(767451399110); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(2017060910075)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6055026)(6041248)(20161123564025)(20161123560025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY4PR12MB1318; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY4PR12MB1318; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxMzE4OzQ6d1BuSzhGZGY1SCtubnBSRlBxYk9ycGlycHNE?= =?utf-8?B?aVB5MzRpWXpQbWhRazhrQktGeUh0OEZSdTM1UVZSaXJGOXhaOG5qSlJPVU5y?= =?utf-8?B?cG0ybVdwa2crTUYvTkZiNkpGWDdDei8rc2kyVnlRZHRlcDI4Qk55UVh1UW41?= =?utf-8?B?V0hDNWYva3p5bGNzVHY4K0J5VlZzYUE0T2FpaTlyd3htOUVHamhjcTJvQVk1?= =?utf-8?B?K0VpVEFhK0lQbEVGWEpPcTRZdVNFTURRQkxDZDNHUXFkUmM2SURpOXMzcFNK?= =?utf-8?B?S2ZnT1B0eGNLZjYvMTBCT2tUWVNTcXovSVBleHk4THpsb3VoQm42ci8xc0JR?= =?utf-8?B?bG9RSEhKbDRORkU5bVcwQW5seFQ0SE1OZHdBTm03MThSam5JMkl1QnlrNGdM?= =?utf-8?B?NDFueERmUlFXZnlQTCtVVnM3d2NLWXM1ZllCc1ZBYUdhOUt1R3BLbjQwRjlz?= =?utf-8?B?bnMrYXFoWDVrazNQWWdZTldJMTRUQnNzL1RtZ2FONzhXV2Nvd0ZCQlVGcEJ6?= =?utf-8?B?K0pua0E2Sm0xU3ZvTU1HZy8xZEwwQWdKMXVpNi9uVi8rRU5HWEh0bys4c2xE?= =?utf-8?B?b2t0WmlLYzFESEU5aFFHUml4N2F1WGt1NmErTy9WUEwyWjNmcC9Ja3hJRDRI?= =?utf-8?B?OC8wNzVuWDUyakNwU0FSOThBbVVqWlorNkp3T3BmZENsVFh1THhQZ0hHWXBz?= =?utf-8?B?ai9BLzYwQ1JWam55YitOaXBaOTNoZXZBVGFQZUgyT25ONWlJWXEwb3VKUG94?= =?utf-8?B?NlBNZHBVbE9vbVd5QTlMWXJGVVMwZGVDNW9XV3dVVDk0SXNaa3BOVUdBZkRK?= =?utf-8?B?MCtGOHdKL1ZPS0lrUnY4YWk3T2IydnMxNFBaZWJWQXlrckpFT1d5Mk9rQklH?= =?utf-8?B?bUtxaXdEVWFaS2JrZHMwQkJ5WjBWSFAvM3dqVFFaU2NWR0dacngrcFJNTFlL?= =?utf-8?B?WkdMdk9lV2duREZrVFZsRUZOeUFySEhUeWJqempvQ3hVLzRWZUpNTjJJSW5t?= =?utf-8?B?eGhyUDJXMWxxdDNOa1FGTW5aVlF4Y2haeERDbHFoTnMveFRDZVg1YXIyQzEx?= =?utf-8?B?YUtKNEsvRFJFeERhL1hVUXVCT0E0Qm9QTTFvNlY0OG1ORHZnTXRZUEpyMjlX?= =?utf-8?B?cndmaHE4S0xrRmFXanlLbjh1YlpQdW1nVXlMZzVkbzZ3cGo0Q2FuUWJuS1VP?= =?utf-8?B?TE1ERE9WQ1NjZ3dlb1dyekNhTkxjejFwQjZhQ3ErNUZDQW9qWjhYTWJsNE1n?= =?utf-8?B?M2wySGMxVk5UeFBxUGtXZ2YxZCtwOFl0OXgxQWpSc1hPcEZVZFpNRTdUTk1E?= =?utf-8?B?NGdkenY2Q2ZvNkU2QUh1N0hxZ2ZLc2xJbVMva0Nha0pRdS9IdmQ0MW1EbTg1?= =?utf-8?B?YWVGc0ZFUmJKU2x6SkRZK1p0S3htaW5kM3RVQnpvZGRISzNCOXh6bnNrRG52?= =?utf-8?B?UzRON29PZ0RYL3pMQkhBMitXL3dkR29RSlV0cDVRY2VkMEVYb2tXNUNkL0ps?= =?utf-8?B?YjNQa0VGSDBFeEVDcTZFNTZ2TTJmY3IvL215Z0VENzdiaXAyRnExSFNPeEo0?= =?utf-8?B?RHB1bksyWVBvczBXTEZ2VFhZUTBabFRUNGxhZVFEODIvVlVsSHVSeUlURXB1?= =?utf-8?B?blRBdkRTM0kvV3IvcU5ENjFpY2FoUW94a2NTNDQzUThtVnQ5RzBjN3JKZ2xm?= =?utf-8?B?RGQ4dWpaOWlMem1jZzJKaHlZUUV6ZXRYS2sxV25QYXZMSU9vMDNPazlnblMr?= =?utf-8?Q?sBIHu4Qd55yOeTxzXX2ZrmEoRYLKAmEXOAyI=3D?= X-Forefront-PRVS: 0371762FE7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(7370300001)(6009001)(39410400002)(39450400003)(39840400002)(39860400002)(39400400002)(39850400002)(4326008)(55016002)(83506001)(50466002)(3846002)(6116002)(25786009)(47776003)(6666003)(72206003)(23676002)(6916009)(478600001)(66066001)(2351001)(189998001)(42186005)(86362001)(103116003)(50986999)(230700001)(7350300001)(110136004)(4001350100001)(2361001)(5660300001)(2906002)(54356999)(53936002)(38730400002)(53416004)(305945005)(81166006)(33646002)(8676002)(7736002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR12MB1318; H:sosxen.amd.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxMzE4OzIzOkltRENuR1ZYcDllK241UHo0dGlhYUYvTnFL?= =?utf-8?B?aEJqR25NOThVcWhod2lhTTlLT0xkUWs2WmJTVXNFK2tzRzdZcHB1TG9yTHdp?= =?utf-8?B?L0pWZlBBdnBNVEk3SVA5amYvWHNCci9HMUxMV3ExUnRWZUdoQW04RUVxUjFU?= =?utf-8?B?ekozeHdmc1lWcE9vemZQYmlHdTRvS1VEbm14K3ZRQXU0VGVXTXlGWXpoNDA3?= =?utf-8?B?MTdjd21UaXg2UlVwMjcyL2ViQ2FxeEFLMmpTdHljaDNnZWNKZzFZR245dmcx?= =?utf-8?B?RkRacjJaRENSZ1pIaTBEeFpRam9oYUVXaFRZdGU3SWkxT3U0VFlvbk5zdkgv?= =?utf-8?B?Ni9sZytrNHBXdGcyMStBQ1ZuekxtOEZ1dS9nMW1nalovRTh0TUJlUElDb0ho?= =?utf-8?B?VWhVYTJpd09aVExkQTRFYlovZjJnNzROcW5GdmdzbVQ5VjZla0JvY216M2kz?= =?utf-8?B?b2ErejZ0RUc1Y0s2RzhBQ3ZveEdnMmpqdlk4TWZ6ZHdpRWcwL2RkVSs3cy8w?= =?utf-8?B?RTJsMVE4K3Q2VG5qK0JoeG9ia2tuY0diVHRLZW9oSmpHU3Zqckp4cnVLVHdu?= =?utf-8?B?aVNDTGVNd0pneGRKbndDUFVHaGtweXl1STJhRnVzK0dWRHNPV2lmNDE2NXBp?= =?utf-8?B?YitpdUNIYnFCSEtPcHUvbS9qNFZTdU9TWTBBb3RYdzl0L1FHdldxeUpVbG85?= =?utf-8?B?dFlnR0JsbE9pNnZleGQ1WHJCR0Q3dVRJbTJtdEhIRzRnVVNMQUdlS3FZWHM3?= =?utf-8?B?YzVQaTRhQVRJdVhaWHkzajkwSDMycVJ4ZDhEWDBaaVFheTBmSUJkRnFCbGxK?= =?utf-8?B?SkFUQjZYK1BMU3I3bk5qVzlzRWZ5Q1p4UVRZYXd4S2E2b1MvVGMxeGJDTFMv?= =?utf-8?B?UUYzUTFjclVHenpJVkxkT2ZyaC9ZQjhNN0ZsZ3dCNzdoTjVnSjZmOFJaNUJn?= =?utf-8?B?WXJkbGt6QXViRWp4NHk1elA0bi9zVXVmNG9JbDVpSURvcXJmWC82N1I0YTdi?= =?utf-8?B?WWkxTlZmQ2k5bERrM3BXZDVPYjBJaVRWd3hFdVJPSi9Gc1M4TFd1RXVyMkJa?= =?utf-8?B?MnE0RXdPa0VFWTdCTVNBTTNBUlJ1Vi80NVlhWWxoQ1F5akZaZ0ZhWTdYRnA3?= =?utf-8?B?QmFaTWZqRURNNFpaNXl2UERmd2VPV3pFU0lCcFNXSlpxOGtUUkRadzBsczMr?= =?utf-8?B?aitKMXQwWm9sbWNmQXRSZmEvNGg1VGVNTVFWeSs3TVVVREZ2aVEzVWlBYjZO?= =?utf-8?B?VXVGSHd4NlF5TkI3WkE4aytVQ1EyTDRGeW11S3dGSnp3WWpJYzEvVXk4MkJT?= =?utf-8?B?VjZ4aUV5VEtaNkVkaGRNL2xMSzl6YWJCT05JL3pocnFCZWgrT0V2UzN4b1cz?= =?utf-8?B?elBqQjF6QkNCSjJQVkZ3eHJDWjRRdlFKSzhSREN0clJqUmxadnVBVG9zQ0xN?= =?utf-8?B?bklZcGFCMUxkMDJNejJWRHJ2S2c5S3gwZGpzM1o4MEhhMk1KVkI5MEt0VkIz?= =?utf-8?Q?JAZiQjQBQGC4Qhmm1gVebr7wAFr5RfotrkDMi1tJihFf20?= X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxMzE4OzY6L1dRdnlDb0l1dlN4ZWVqQU5uQ3FJdEU0RDlp?= =?utf-8?B?UWZJSnlMOEkvMUNLc3V6Vndzc3FwaWplekp3QkhscDhNT2xkQWxqaDZ4dm9X?= =?utf-8?B?d0lFVE1KU2lVS1pYNHgvYUxydzVURFhpNmVUSG9OOTdzcWJ0QStpRXRkQjBS?= =?utf-8?B?VS9HNUU0VmRLM2tvMUFUNC9OWGpzZTJ3alAyOEJDOUVxVG5NUXBHcitPdEdY?= =?utf-8?B?WWZVRUxmdkZ0bFBxMm1MRnJyTE5vazhNNnpOenZyZWlocWV2MjMxY28vaW5D?= =?utf-8?B?ZDMraUQ5YVRNUkg1NGZzbnBBM1BGc0N3Mk90WHBaZUxRb0Iwa0VSbmJremQ1?= =?utf-8?B?dSs5VTFUSjBoN3JuTkNHZzlKV21YRFk3b2xBbkd5Ylp6eE8wc2lBRnk0d3Rn?= =?utf-8?B?bS9EOFBuelJGdmNIOVdOTThrV01YRFBRVXVua3dDUjl4eDVxejd6RGQ5RWZo?= =?utf-8?B?TUZXNWlVYXlqMVJGT3gvOGQzeEZaSnJEZG1xL0JzWURFNW5ERktDUVNFUGJS?= =?utf-8?B?UFFkOW4yc3Axek90TXhmRzFCem95ZW9qUmdSSStpZWVrY3I2MUV0M0V1WUlY?= =?utf-8?B?VTJMV040R2hVVGFtOVU3OEhRVmZKK0Z5YzBTc2tEaXdhY1hDbGxoeFdtNzBH?= =?utf-8?B?NklPL2JmcEFnR0l1d2orQndJa2NJR2xka0pDLy9Ga2dld1phQkxyVWFKNTZr?= =?utf-8?B?NG1FM0hBUmZHc3ZmTXNPZTE4bUFHYjJQVzdOWE80SkRyT3dqbE1ILzJLQ0Vr?= =?utf-8?B?WVFRMGF5b0RrdGtKVFFhT1lSaVZKZThRNmpGcVJkeXZNNzBJRVhhT0JIU0Fw?= =?utf-8?B?R0VFdXRsSzdkVFh4Mi9OdlhXYjhNa3hud0dEMjFKSWg5OERDUE9ucXZZbVZ0?= =?utf-8?B?SUNza2oreUZ2Nld5SGEwMWlvbHVpU0c0RzlXdUF1clZWM3hLWStnMWZMWFNu?= =?utf-8?B?bkovMlJxYU1VSlRTbDRja2VFc3JyU1pGNDBxdkFCeFZGMS9FYWlYd3FNNGY5?= =?utf-8?B?REl0eFNhSWR3QnNpSUgrZ0VGTjFkelFzZHVwZ0ZUK1ZhK3RPWWpjaTltUVpZ?= =?utf-8?B?Vy9IRFo2OW9lc2x3c2FBWUtHMHlDWVRNQmpBckJMeElickVWZXdtMmJYV2xU?= =?utf-8?B?amxGanN6a1h5c1g4RWhpWk9na0ZibndNVkgvWDgvS0xSKzVHcWpGNEFzUlVU?= =?utf-8?B?cy90ZnlJM0pkRDYweHVseUNKRmhsRXYyemRLbklZUTRCZldPbVg5aDAxUGti?= =?utf-8?B?S042TWUzUlg1UUlNN1NEc0JFdXZialZPYStkYXg2RUE3WTd4akdoSGdXV29K?= =?utf-8?B?eUphUGFyZzV4ZFhEN2p0dEZ6L04xakdRdDBkcDgwekRNTXBzeS9WbzdQWlZO?= =?utf-8?Q?BX6LTyJ?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1318; 5:phcDeZA6mupL9Xzr2eZySDXumCtsjwsiCYKQOpE+/wDzQj1PfSqzqYAGkMawOwiNJ8NApGBXE7Qfu6JBta3nZqcdbMbgOkjTSZn22Ia/WYjfO9zFcolQ0WQ+8arVcxk4o56sBnV2h0sxY9G4v2untULBFhC32xpu/lybD2S8eiMtNbSh/kAU7CqtCvwgOx7ubQSRBGcz8QmFi7Pt8dltuWnHei0HdJHQSVTLF73Wy0ELbQ8IBKvrIGtmlrE33MaAaAQhq4ToQJa4/3T67R/MuYhjkXe5SsvENiHY1haC8dgbXvN/AqHSHsd4emThvIsrp8ko/9RTX2zWAacWdN7476/Xo1pSwBOFy2b0qnkrDAzYD/N0czIAF7CJgFwtDmPrMjiFzK41+7A6TXMKJcANaoGr+QB5xCOnhSe9MRyjR08SIxyqBkD8mey2GdLDBZOt2NroVn1uu6+NcaG0RBS+PHahKqTYGg3iiXUW+oNu+amI34d43hKEaWU0mPALOuqu; 24:2dFfk3tP+BBAtGsudi22d37YsTVuPOhYBHLeeyP8AoWeEYbHtCYDV4f+EdtmvPEmdg3EgeGAmX9L/su6wNZAC3u8//8jtd2rExVZm3HI1iA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1318; 7:tFaBh3mxyJlrBn0pcPclQ/kXJ0JqyBudDPlHPorewPS0mlLkp3SR6jxgolZQctutjmIGF0y8LTqFNuVtrTAEARsaPKIWjbtS9/nnb/IgnLHANxcNb/FdFTD+1B9KQPDyTeXAR/0gjvH5zlgigVOdVVP7GXhmBNPNoYc60Qae4rHsJBuvYbRD3dF6DO4VNfwou/Ba7TTT8tbiUQ4W/YMwa2DjsUMnE4stZy0i4LGWFaKtIpWjpEO+EPs8OGeI/Y7Z65FgVHMKt6OM4i9b4R+CfxHf28+Nbf+5Dnz5A01qFdTCshM/L1fnQdn9XlhULSZiPpE9SQ+MNhNGOUKQ1CEYHUkexAVPARIM+5DvsQKYAJjMiBDP89iF8G55IBrxr7G1HnEFUsOAFbcqi05nFGLrE7/U7ZVD9voyYLvQoV/epHjv59B/vTy+39dA37H3I1TxRIT6NV91u1cOx8FszoyDMieLJCNPFXHEF7LL3L3EPsHoTZev5mBW/Lf/2+rmI/b5BXtbdk5sy6OPbGqK2gzcx35ObOepoJ20puvbzHO5wCrPjGhbtlDJdK6mMd8pU/NZoFxrkSwdeyEFGLUVRtFXo9Zzt8/l50fbdVOPVlPKVHni9p9kEZ7B4W5G6gQjgl5aaa2mLP4drhzngS9iBZ4cJ3lTzFRLc2Ep0MACGC7lNGoJzFRk2egZHbaBQTNJWrl79C1UzUcNVGj9d9oETYqxU7ju6k4CHgaYhKE9/NHBqgpDpvMKjYF+5KOnMRYBJMmRAAumZ39zDmJ/ksjdoYygDRIUeMJL7fbl5hiHEIt+tqo= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1318; 20:Cj63rdDU0n41AkWlPzLFHyy+YoRAgAHJ+7n7RSLQDMiE66HbqIXApf17iHIq1eZUYT2kTrjzt7o2ynzRMVqfwi4CAQB9GR2tfejmV0QbTJL+zXpboWtpm6cmYNMTcb+UYL+6uX/7HSp3Q0lh1CKjMb6ACHF8uQbq2dygQYV2deAlbyZRnjMI3wvNeTRXgdEEscvHFXXpO5gSOdOXZ+UuT5q/6ebRfcaMGokpXKVpthfhQ69Qy80/AQ7Br73nOxMm X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2017 20:08:32.1071 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1318 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Version 5 CCPs have differing requirements for XTS-AES: key components are stored in a 512-bit vector. The context must be little-endian justified. AES-256 is supported now, so propagate the cipher size to the command descriptor. Signed-off-by: Gary R Hook --- drivers/crypto/ccp/ccp-crypto-aes-xts.c | 79 ++++++++++++++++--------------- drivers/crypto/ccp/ccp-dev-v5.c | 2 + drivers/crypto/ccp/ccp-dev.h | 2 + drivers/crypto/ccp/ccp-ops.c | 56 ++++++++++++++++++---- 4 files changed, 89 insertions(+), 50 deletions(-) diff --git a/drivers/crypto/ccp/ccp-crypto-aes-xts.c b/drivers/crypto/ccp/ccp-crypto-aes-xts.c index 58a4244b4752..8d248b198e22 100644 --- a/drivers/crypto/ccp/ccp-crypto-aes-xts.c +++ b/drivers/crypto/ccp/ccp-crypto-aes-xts.c @@ -1,7 +1,7 @@ /* * AMD Cryptographic Coprocessor (CCP) AES XTS crypto API support * - * Copyright (C) 2013 Advanced Micro Devices, Inc. + * Copyright (C) 2013,2017 Advanced Micro Devices, Inc. * * Author: Tom Lendacky * @@ -37,46 +37,26 @@ struct ccp_unit_size_map { u32 value; }; -static struct ccp_unit_size_map unit_size_map[] = { +static struct ccp_unit_size_map xts_unit_sizes[] = { { - .size = 4096, - .value = CCP_XTS_AES_UNIT_SIZE_4096, - }, - { - .size = 2048, - .value = CCP_XTS_AES_UNIT_SIZE_2048, - }, - { - .size = 1024, - .value = CCP_XTS_AES_UNIT_SIZE_1024, + .size = 16, + .value = CCP_XTS_AES_UNIT_SIZE_16, }, { - .size = 512, + .size = 512, .value = CCP_XTS_AES_UNIT_SIZE_512, }, { - .size = 256, - .value = CCP_XTS_AES_UNIT_SIZE__LAST, - }, - { - .size = 128, - .value = CCP_XTS_AES_UNIT_SIZE__LAST, - }, - { - .size = 64, - .value = CCP_XTS_AES_UNIT_SIZE__LAST, - }, - { - .size = 32, - .value = CCP_XTS_AES_UNIT_SIZE__LAST, + .size = 1024, + .value = CCP_XTS_AES_UNIT_SIZE_1024, }, { - .size = 16, - .value = CCP_XTS_AES_UNIT_SIZE_16, + .size = 2048, + .value = CCP_XTS_AES_UNIT_SIZE_2048, }, { - .size = 1, - .value = CCP_XTS_AES_UNIT_SIZE__LAST, + .size = 4096, + .value = CCP_XTS_AES_UNIT_SIZE_4096, }, }; @@ -97,14 +77,20 @@ static int ccp_aes_xts_setkey(struct crypto_ablkcipher *tfm, const u8 *key, unsigned int key_len) { struct ccp_ctx *ctx = crypto_tfm_ctx(crypto_ablkcipher_tfm(tfm)); + unsigned int ccpversion = ccp_version(); /* Only support 128-bit AES key with a 128-bit Tweak key, * otherwise use the fallback */ + switch (key_len) { case AES_KEYSIZE_128 * 2: memcpy(ctx->u.aes.key, key, key_len); break; + case AES_KEYSIZE_256 * 2: + if (ccpversion > CCP_VERSION(3, 0)) + memcpy(ctx->u.aes.key, key, key_len); + break; } ctx->u.aes.key_len = key_len / 2; sg_init_one(&ctx->u.aes.key_sg, ctx->u.aes.key, key_len); @@ -117,7 +103,10 @@ static int ccp_aes_xts_crypt(struct ablkcipher_request *req, { struct ccp_ctx *ctx = crypto_tfm_ctx(req->base.tfm); struct ccp_aes_req_ctx *rctx = ablkcipher_request_ctx(req); + unsigned int ccpversion = ccp_version(); + unsigned int fallback = 0; unsigned int unit; + u32 block_size = 0; u32 unit_size; int ret; @@ -131,17 +120,29 @@ static int ccp_aes_xts_crypt(struct ablkcipher_request *req, return -EINVAL; unit_size = CCP_XTS_AES_UNIT_SIZE__LAST; - if (req->nbytes <= unit_size_map[0].size) { - for (unit = 0; unit < ARRAY_SIZE(unit_size_map); unit++) { - if (!(req->nbytes & (unit_size_map[unit].size - 1))) { - unit_size = unit_size_map[unit].value; - break; - } + for (unit = ARRAY_SIZE(xts_unit_sizes); unit-- > 0; ) { + if (!(req->nbytes & (xts_unit_sizes[unit].size - 1))) { + unit_size = unit; + block_size = xts_unit_sizes[unit].size; + break; } } - if ((unit_size == CCP_XTS_AES_UNIT_SIZE__LAST) || - (ctx->u.aes.key_len != AES_KEYSIZE_128)) { + /* The CCP has restrictions on block sizes. Also, a version 3 device + * only supports AES-128 operations; version 5 CCPs support both + * AES-128 and -256 operations. + */ + if (unit_size == CCP_XTS_AES_UNIT_SIZE__LAST) + fallback = 1; + if ((ccpversion < CCP_VERSION(5, 0)) && + (ctx->u.aes.key_len != AES_KEYSIZE_128)) + fallback = 1; + if ((ctx->u.aes.key_len != AES_KEYSIZE_128) && + (ctx->u.aes.key_len != AES_KEYSIZE_256)) + fallback = 1; + if (req->nbytes != block_size) + fallback = 1; + if (fallback) { SKCIPHER_REQUEST_ON_STACK(subreq, ctx->u.aes.tfm_skcipher); /* Use the fallback to process the request for any diff --git a/drivers/crypto/ccp/ccp-dev-v5.c b/drivers/crypto/ccp/ccp-dev-v5.c index b3526336d608..11febe2bd07c 100644 --- a/drivers/crypto/ccp/ccp-dev-v5.c +++ b/drivers/crypto/ccp/ccp-dev-v5.c @@ -144,6 +144,7 @@ union ccp_function { #define CCP_AES_ENCRYPT(p) ((p)->aes.encrypt) #define CCP_AES_MODE(p) ((p)->aes.mode) #define CCP_AES_TYPE(p) ((p)->aes.type) +#define CCP_XTS_TYPE(p) ((p)->aes_xts.type) #define CCP_XTS_SIZE(p) ((p)->aes_xts.size) #define CCP_XTS_ENCRYPT(p) ((p)->aes_xts.encrypt) #define CCP_DES3_SIZE(p) ((p)->des3.size) @@ -344,6 +345,7 @@ static int ccp5_perform_xts_aes(struct ccp_op *op) CCP5_CMD_PROT(&desc) = 0; function.raw = 0; + CCP_XTS_TYPE(&function) = op->u.xts.type; CCP_XTS_ENCRYPT(&function) = op->u.xts.action; CCP_XTS_SIZE(&function) = op->u.xts.unit_size; CCP5_CMD_FUNCTION(&desc) = function.raw; diff --git a/drivers/crypto/ccp/ccp-dev.h b/drivers/crypto/ccp/ccp-dev.h index 9320931d89da..3d51180199ac 100644 --- a/drivers/crypto/ccp/ccp-dev.h +++ b/drivers/crypto/ccp/ccp-dev.h @@ -194,6 +194,7 @@ #define CCP_AES_CTX_SB_COUNT 1 #define CCP_XTS_AES_KEY_SB_COUNT 1 +#define CCP5_XTS_AES_KEY_SB_COUNT 2 #define CCP_XTS_AES_CTX_SB_COUNT 1 #define CCP_DES3_KEY_SB_COUNT 1 @@ -497,6 +498,7 @@ struct ccp_aes_op { }; struct ccp_xts_aes_op { + enum ccp_aes_type type; enum ccp_aes_action action; enum ccp_xts_aes_unit_size unit_size; }; diff --git a/drivers/crypto/ccp/ccp-ops.c b/drivers/crypto/ccp/ccp-ops.c index e23d138fc1ce..d1be07884a9b 100644 --- a/drivers/crypto/ccp/ccp-ops.c +++ b/drivers/crypto/ccp/ccp-ops.c @@ -1038,6 +1038,8 @@ static int ccp_run_xts_aes_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_op op; unsigned int unit_size, dm_offset; bool in_place = false; + unsigned int sb_count = 0; + enum ccp_aes_type aestype; int ret; switch (xts->unit_size) { @@ -1056,12 +1058,15 @@ static int ccp_run_xts_aes_cmd(struct ccp_cmd_queue *cmd_q, case CCP_XTS_AES_UNIT_SIZE_4096: unit_size = 4096; break; - default: return -EINVAL; } - if (xts->key_len != AES_KEYSIZE_128) + if (xts->key_len == AES_KEYSIZE_128) + aestype = CCP_AES_TYPE_128; + else if (xts->key_len == AES_KEYSIZE_256) + aestype = CCP_AES_TYPE_256; + else return -EINVAL; if (!xts->final && (xts->src_len & (AES_BLOCK_SIZE - 1))) @@ -1084,22 +1089,50 @@ static int ccp_run_xts_aes_cmd(struct ccp_cmd_queue *cmd_q, op.sb_ctx = cmd_q->sb_ctx; op.init = 1; op.u.xts.action = xts->action; + op.u.xts.type = aestype; op.u.xts.unit_size = xts->unit_size; - /* All supported key sizes fit in a single (32-byte) SB entry - * and must be in little endian format. Use the 256-bit byte - * swap passthru option to convert from big endian to little - * endian. + /* A version 3 device only supports 128-bit keys, which fits into a + * single SB entry. A version 5 device uses a 512-bit vector, so two + * SB entries. */ + if (cmd_q->ccp->vdata->version == CCP_VERSION(3, 0)) + sb_count = CCP_XTS_AES_KEY_SB_COUNT; + else + sb_count = CCP5_XTS_AES_KEY_SB_COUNT; ret = ccp_init_dm_workarea(&key, cmd_q, - CCP_XTS_AES_KEY_SB_COUNT * CCP_SB_BYTES, + sb_count * CCP_SB_BYTES, DMA_TO_DEVICE); if (ret) return ret; - dm_offset = CCP_SB_BYTES - AES_KEYSIZE_128; - ccp_set_dm_area(&key, dm_offset, xts->key, 0, xts->key_len); - ccp_set_dm_area(&key, 0, xts->key, dm_offset, xts->key_len); + if (cmd_q->ccp->vdata->version == CCP_VERSION(3, 0)) { + /* All supported key sizes * must be in little endian format. + * Use the 256-bit byte swap passthru option to convert from + * big endian to little endian. + */ + dm_offset = CCP_SB_BYTES - AES_KEYSIZE_128; + ccp_set_dm_area(&key, dm_offset, xts->key, 0, xts->key_len); + ccp_set_dm_area(&key, 0, xts->key, xts->key_len, xts->key_len); + } else { + /* The AES key is at the little end and the tweak key is + * at the big end. Since the byteswap operation is only + * 256-bit, load the buffer according to the way things + * will end up. + */ + unsigned int pad; + + op.sb_key = cmd_q->ccp->vdata->perform->sballoc(cmd_q, + sb_count); + if (!op.sb_key) + return -EIO; + + dm_offset = CCP_SB_BYTES; + pad = dm_offset - xts->key_len; + ccp_set_dm_area(&key, pad, xts->key, 0, xts->key_len); + ccp_set_dm_area(&key, dm_offset + pad, xts->key, xts->key_len, + xts->key_len); + } ret = ccp_copy_to_sb(cmd_q, &key, op.jobid, op.sb_key, CCP_PASSTHRU_BYTESWAP_256BIT); if (ret) { @@ -1179,7 +1212,6 @@ static int ccp_run_xts_aes_cmd(struct ccp_cmd_queue *cmd_q, e_dst: if (!in_place) ccp_free_data(&dst, cmd_q); - e_src: ccp_free_data(&src, cmd_q); @@ -1188,6 +1220,8 @@ static int ccp_run_xts_aes_cmd(struct ccp_cmd_queue *cmd_q, e_key: ccp_dm_free(&key); + if (cmd_q->ccp->vdata->version > CCP_VERSION(3, 0)) + cmd_q->ccp->vdata->perform->sbfree(cmd_q, op.sb_key, sb_count); return ret; }