From patchwork Thu Mar 2 15:14:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 9600813 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 DEBAE60429 for ; Thu, 2 Mar 2017 16:05:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CDC49285BE for ; Thu, 2 Mar 2017 16:05:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C2295285C3; Thu, 2 Mar 2017 16:05:46 +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=unavailable 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 44E4A285BE for ; Thu, 2 Mar 2017 16:05:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753447AbdCBPf4 (ORCPT ); Thu, 2 Mar 2017 10:35:56 -0500 Received: from mail-by2nam03on0049.outbound.protection.outlook.com ([104.47.42.49]:28249 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752544AbdCBPfI (ORCPT ); Thu, 2 Mar 2017 10:35:08 -0500 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=brLOhMaX715FaglMzYyZnBYEFU3u9F1iAJ00eWKkcC0=; b=fmVywK5nydXs5pSOp3Xo48vR6I4o9VmW52vkLH6FhNAmXo8RMX7kyqObP1dL0ev16vwxXYqR+k8c4p1t7x5Z7x2Lya/6yVZU8ToYlVtKmPH6g/xJPAHCOXuVSfqZdXp73Yg0LQ7NRYKoDdXrg5Yv5IVI7OkBwftYl8ubsINEKOk= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=amd.com; Received: from [127.0.1.1] (165.204.77.1) by CY4PR12MB1608.namprd12.prod.outlook.com (10.172.72.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.933.12; Thu, 2 Mar 2017 15:14:39 +0000 Subject: [RFC PATCH v2 11/32] x86: Unroll string I/O when SEV is active From: Brijesh Singh To: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Date: Thu, 2 Mar 2017 10:14:35 -0500 Message-ID: <148846767530.2349.3396612151893482609.stgit@brijesh-build-machine> In-Reply-To: <148846752022.2349.13667498174822419498.stgit@brijesh-build-machine> References: <148846752022.2349.13667498174822419498.stgit@brijesh-build-machine> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR10CA0020.namprd10.prod.outlook.com (10.172.48.30) To CY4PR12MB1608.namprd12.prod.outlook.com (10.172.72.17) X-MS-Office365-Filtering-Correlation-Id: ac31d88c-c126-4802-93ed-08d4617edb01 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:CY4PR12MB1608; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 3:o9V2TnQeMDoAfVYryVZFcTbEpz1CeZCG7vfLg8CgqkYzLxCq3I5YeA1T6ZcFLlHePBA1HBgEv9OLBu6I8Gfu2i9qtLM9YHbrg4wRt1nSwCwf7len41eB2jiqJOLHBp4oOPp53xm7xSxQ+zbvoH0eQoPtLSFo7A8L6CZAMZQWMKS62OW/Jwmcj9CG7Uc0TzfK3vaT4gM0MPXyvaQ7xyJ1scuXg7GihRMKKoIz2Uyb3oQk8v/ZrM+AnV2NYzWYRCrAgJlVFrBlPh1CK51EwTtFZx/OXZFSkOEMHktFCfk2eRc=; 25:TyggFgcSkkivfftojMbirlyFcOC3L0xg5cWt53l6KIM7NBE2xHJNmp9Dbny5sfq1QaWzrLhf3mEFTSrgiI/25QWbaf0EHjylsUA/Bara63iBNb90AA2eCwWlTGP8dqMobh1+ktTWToeB2uhh5cZ6ygqxElr6M67dUWCgyrhO0CK3aaU+P9hvRT5wJdp3ol5PaZkIhfAfnpBhX/dQk/kfqBveU6vb3ThTgw9ti8gNOV1zrA0358fONc6pJB9VTDSvCpjACq6lv8ZjytIVcKHeKnOC7fRyb64Y+Kd/OKNS2VgqW1wjDQccw4jEeVS9kLNz2iqTePqtnhxTai/5HfxvhNfH9tkqg1aE+Xki+M+/9DQrlmaTBXS3FmeyYJ3YjSszvr1+XtaZz3YnSjBPTRrwmPm/QmKfF//QkbV7X4mr54u1vBPGi4uYe5bCkDu56000 X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 31:uTPdoHJokjKv/csrSq5gjX+hsm/uK10v9Sl3SgcWTxRbfXMA+yBF3ZxD6TBvRJrV75qaGARkgYO8rVkOtrzWsKdYyRA+mE4j2/0WJDXvBekBACBTm/gTjTXhd2OUk7nZenddVpO7TBcUu9rKU8r4T0zsXf4ihcEzbWgfjEtwzQRe09Vo2cv6GW+wvZESDDYw9EEJavRUpS1oZB78V++sGzeFSrIimwTGfIS3F7Apt9C4sipTrxBg6ZINx76BYiYH; 20:sw3/on9UZc3ULjs0wZ8b+VdRaxZDWLWIpR9zlL9H9eM0kGcxUhRVcpFUJJDkUYABxGntyuXyQ0WVbisZi/bLZt/dNxnmD3u4pceSgJTjIDzkzu4fbVbIjDTFhuV4G2RlnuIONUvRMSR4+wTecIWkUPuQWogfxGmQ8xwMH/wMocL+Wcp48gtYnn8Hg4PG/Yw1Yon06J+4ZSUMslnqWOfJpsh+BE/OInZwXpm8zDxUvdjv9zcS7vaofkeNVX0bvWuD8tQ/nAaVaOk6gD0rUliuKAV6aNPK2TuXxLh9pdG+ugbE3xYpStxirLCfsck4VnDoKWlS86u4aOL7sNeE+lZU77tpudLpVNEc+pxmD8pvRRijFVLYCoyXWNgoJgdo+Paj7y5J6SpWYN6wkJtWju3lRePdFE50wEbYrr3/UBQHBFMqSMlkmyQBjOxll/WD0potZZE5lwon3PjzpIluTXLbueg3/HiSkNwiiMGvkYLyqY3keejBvxoHTpql3QZu/f/U X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(20161123558025)(6072148); SRVR:CY4PR12MB1608; BCL:0; PCL:0; RULEID:; SRVR:CY4PR12MB1608; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 4:iZKxHDb8sGQSzXaj6u4PoPYaAD6K+cW2BlcLWYoSxpqu/LQ/7ETqBfooeIAT1MUGcVbHNSNLZ8IsNhTcVu1yHZ+oPJZM9WpQC5jUkxlpAlh00JE90gQPgUpT1lpIfI0wIIfw+pyoiEELynAiVSsMEzepwdAhjDagodboI7S2fVOhLwaavYg4VVOPtwJJscfXqjWUUsg3Vw02myIHEwOZsJG8ppa62fAeMiE9RXLLgz2zLd7y1YACi3bg10AVMTNYc6pNfUPELKu2pTA6vAXFchSMb2rpTUu3jCiU02FDWKIKOTJF5WV8s/8TrxjdEsFQPnLk8sNHDxhrZq7NSgGbpSsmA09Rd6h/UmfUvBOiN1rCDPfEywFvUHYGxsDBHqa4Wwt5KpjQrXqxkYZuVL2clTOkSx464f6YPKdM9r0Bvnl9SWVQgd7zug2NZp+Nx3/ZBVWo38WU42b7baKlMIsFtiCGk2HakuIsaSwwx0VPnR3/j/TQspO0UsoeFixx6OSTCB2Xm1JQWztoS3pV+SD6Rw0ZuonDCE+iKJ/9whp0AKO+QIn1oV7UowX8Hqn7jqmIGqyCnWQD6aODzsBf+yTF1ByTWavTPt1FkPkI6uWqqGlH6iFm1itYCFmYwWgXf6uUwKVNhtVb3YTJ30g0NNJ2Yf8BuB5BMXMDMllNaHCLjdk= X-Forefront-PRVS: 023495660C X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(7916002)(39410400002)(39450400003)(39860400002)(39840400002)(39850400002)(7406005)(5660300001)(9686003)(83506001)(8676002)(92566002)(33646002)(7366002)(2906002)(42186005)(33716001)(103116003)(66066001)(7416002)(50466002)(81166006)(23676002)(1191002)(7736002)(47776003)(189998001)(53936002)(2201001)(38730400002)(25786008)(305945005)(50986999)(6116002)(3846002)(54356999)(86362001)(230700001)(76176999)(77096006)(6486002)(6666003)(2950100002)(90366009)(921003)(1121003)(84006005)(217873001)(2101003)(83996005); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR12MB1608; H:[127.0.1.1]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxNjA4OzIzOndsbkNOb0pNUEZDamlvc3gzK0pGa2pBZFNC?= =?utf-8?B?TTRQVUYydFRDY3BwTzU5TnZEL1V1d2VzaXN4MmpncnNMdG92OGowMUd3UzFT?= =?utf-8?B?K2NnRC9KNUtCY0g0dkp4YWg4R3pyMk5nb25IMWZIcDR5N2ZYTmgvNS9rVjZl?= =?utf-8?B?ZjdONGt3OTUrQmhvc3A3dS9tSTdBRFM3N091UGxlOVh6NVlBSG1NTzlQRmVR?= =?utf-8?B?YTBLa2c2RGk5eXhaU3ByVmNLbjM3VDA0aitJUVhQTXAzbUpvd0pUWTBnVXJP?= =?utf-8?B?Q3o0ZE9DVllNM2xDTlJkSGxiV1E1Znhwd3pFU2dONCtYdE5FeXMwejJaZG8z?= =?utf-8?B?Tyt6RGFiVEw3YnRPVzZPZGhEeGR2WXVaUVIwc2VlamxzaGF3SmJtSG1OYVlO?= =?utf-8?B?aHlLYTZ3N0FqLzh5YzdiK1NjTTdEQ1h4aWRDZXpFQUNvcEFtaXU1UDN1Szht?= =?utf-8?B?RitGSG9QRG1IUnlqQkFjMFNFTTdnMVdJNDg1NDlZOWFTQU5kTWM2aUZ5Nldv?= =?utf-8?B?dUFUendlREQrbEtsNURhUDZoZGliNnN3OXQzajd1ZzVpNC9IUm5GSCtoQ0sw?= =?utf-8?B?Wk0wdHpUcnFyZytGM253cHhLV3pwdTZXd2JwWmYzTUdQMGR6cHJYQjBEYjBE?= =?utf-8?B?MWhCdlVDTktHcHpkWlVheC9JdXdnTHZjUm1KVWZCSVRSd2VxN1dQK0lSeTI1?= =?utf-8?B?RVoyaGt4YzBmL0xmdXdsSFBVRkhvNytnY1dKK0dOZG0vWXYybUdnTU1rRUFy?= =?utf-8?B?STYwTjZPYU9GRUQ5Rkwwam1VRHUrVkw3ZmZLc1N1dGxVWkFTcjQ0RVkvdDI1?= =?utf-8?B?anMzMGg0UlRuZFZ6RVM5c0o1RS9NQjE5d25SM3VZajZKaTBIV0pjU1RTR1RC?= =?utf-8?B?bGg1d2Y4cTB0aTQyTlQ4SFFqUG5YVDZMMC9UemNqdW9NL1M3Rm8vNnYwSUow?= =?utf-8?B?SWdlUVVpL2JaYzhyUEdoeTdXa285dVh0azl4RzVESmttSzNrcXBvSkkxRVp5?= =?utf-8?B?T1IrQ3JUU01PSU50WEJrRDFxUTF1TlNiMk9qZHhLRFh3VnVOeDJPUmNubHJo?= =?utf-8?B?WmVGL3JjWENyTVlGV0QxR0ZOZ0xqaTcrdGptbjQ2M0orYU96UlJxeE5oZG5W?= =?utf-8?B?dnp1eWhBMHo1U295d3MwaDFyOTdvb1N3dGtSK1lyVEgxdU85aXMzMDFjdm04?= =?utf-8?B?T0s5ZmV4b205WlIrMFpHQ0k1dFlnZWpkUmpnVGI0K0dqMkErQk5DaGo3WVFI?= =?utf-8?B?MWRuSURMbE9qZXRHVXpMY1ROK0tpRFdmNjF1ZFo2eTd0azhxUVB4NC9OYXAv?= =?utf-8?B?NDc3VTA1aFlxVmdJWDV2VGdrMERQd2kyNWJXeHR6U0crNXNKUnJGUHhCaklI?= =?utf-8?B?Y1NJVkx1R01wMisrZCtXdFpGVVpjZS9PK01Ecm90VWNKem9JU2k2NFdHbGFV?= =?utf-8?B?dUYwcW5FZGtLdjV5Snk2TFBsNDFkYXJFVmRzbmZkYk5KTFl4UWIyOExZL2xO?= =?utf-8?B?SDJTMGE5ajlCY0RNcDJBSEtIOThSZFFxWTAzQnJ1blpXUStMWTF5TTJOZld5?= =?utf-8?B?NzVHWmlvU1BpSTJnM3ZPRElUdDVtWEFsMWhwdlEzVGV6cVV6dmRIRTd6SU9a?= =?utf-8?B?ajc4ckxiUFo2Um1LQXZuUDM1SVQ1Z0o4ZGFFb0p1dFBQeHl6eFk0WklpVFZN?= =?utf-8?Q?BzUwUsii7Pz0Ao1+0SIFIxXkvTy4n7P4G9Lig/M?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 6:2Pdc3Ue9knlkT37BIMjteuj+22d8qHKhjnHouiiUUkRxZ1aP57YhHAqCxsQ0OM9XCRPIPDevKWEhFrP4vXOKhI5UXp7PCCvk9/8J4sfjYkaJYS1+cvUNM9nILmAk9pcDTas2QP2mDwgr04bnS+XZOoJiMFfvAIGqEnQKNWEmCf15uiRS4OpnHBFDdv6ckKufTCwLVHuBTHoNDQy/D3x/+KNFoamYDJ59qmOWUmxvr4Bdnf7gNNdpuetpxSEyqQ/USX2kuJkOaN0lAit8xerlEyCz0gD3I9ku7WGaYv+KrOU2Rwxks9XKvXhq7FEsYXDXYLJkmffhBloV0ZicU0D90yYWHcfY9q9aFe+FPFzr1BpW0ajuaw7tegeaS54F7TFHvt+3eBKzt11PCRhBhdKLZxE7SHMSDc45sGA4aiola1M=; 5:wvHDsLCd3hIOVj2EEV3A1hy80LHGjP0caicgbNcqv2p45rSiCrSiLSVAjhZ69+gC0+1Adyo23jBCsLynvu//VbJMWxJanBGoMSnNGfrtXXU9u4VBwJYDiYMVAaIuz1lxoRdyYs2pAvMeYP8SNgBW4g==; 24:B81FftGIbzoBDvW2/12RwIvWiXq12ICkczjyeGCh4dlDEL1yCINR1IGC3lUOUONKv8bGDnXom6/lGY+fCJyPPcfszfK60eFX1WXay3S1pDA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1608; 7:jdTr9YBW2IbMt1bHCs7NGZtza2/2f+MGJ15rejeYbmFMdegTXnU9OJcuY6d1jwqqQNJOwqf2yyYD/M0U47AZGn5BVhb9dbBPDjp4fhasU0BXrxSOW12Y3yguETEIl+xFNTRMgkhde7ZEegWoamwK4doG70Yj1kYg0N6BOLF9g8SW/CY8SWYjWSsH75fb5lD/dxZbR5C95Mii5L2XzVwRtD+t3goR9jSo7xb6Pw2P226a/CHf9nAF0XJFmeOpwX94r2vShfZOR8za6PchbzvqulvRC2mfg9LlhS/KEv2+AfHX1VxJ3RT10RFESS70fyxC8qBYGRFR60e9nr5PKl2KFA==; 20:+SI5PP8VBcHxuGgih8cJFbm4I7I7rSnR1jypRtiAcF5QuAU/G1aMnStwREZzseZbKsYNa7zapA7pHNnbRGQM8LXIYx086QAeVOsEiNjcdiWN5awH8PYc/XqcbLEcvD0Tth2u8GzCkkjvF8RxwJUSD1xVHpINNfc5ENfXbIcwnnJT0BHeKyTc8UyKkRU6RcJwa2xYxlvK8QFC9dSX56gRze3NRcfFv3OT3QOckFY1qI+sfMtckN+jVwyGbNpKZhAY X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Mar 2017 15:14:39.0263 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1608 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Tom Lendacky Secure Encrypted Virtualization (SEV) does not support string I/O, so unroll the string I/O operation into a loop operating on one element at a time. Signed-off-by: Tom Lendacky --- arch/x86/include/asm/io.h | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h index 833f7cc..b596114 100644 --- a/arch/x86/include/asm/io.h +++ b/arch/x86/include/asm/io.h @@ -327,14 +327,32 @@ static inline unsigned type in##bwl##_p(int port) \ \ static inline void outs##bwl(int port, const void *addr, unsigned long count) \ { \ - asm volatile("rep; outs" #bwl \ - : "+S"(addr), "+c"(count) : "d"(port)); \ + if (sev_active()) { \ + unsigned type *value = (unsigned type *)addr; \ + while (count) { \ + out##bwl(*value, port); \ + value++; \ + count--; \ + } \ + } else { \ + asm volatile("rep; outs" #bwl \ + : "+S"(addr), "+c"(count) : "d"(port)); \ + } \ } \ \ static inline void ins##bwl(int port, void *addr, unsigned long count) \ { \ - asm volatile("rep; ins" #bwl \ - : "+D"(addr), "+c"(count) : "d"(port)); \ + if (sev_active()) { \ + unsigned type *value = (unsigned type *)addr; \ + while (count) { \ + *value = in##bwl(port); \ + value++; \ + count--; \ + } \ + } else { \ + asm volatile("rep; ins" #bwl \ + : "+D"(addr), "+c"(count) : "d"(port)); \ + } \ } BUILDIO(b, b, char)