From patchwork Mon Feb 12 15:36:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 10213419 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 6AE5360236 for ; Mon, 12 Feb 2018 15:49:48 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5944F288DA for ; Mon, 12 Feb 2018 15:49:48 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4967E28B5A; Mon, 12 Feb 2018 15:49:48 +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.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 33B39288DA for ; Mon, 12 Feb 2018 15:49:47 +0000 (UTC) Received: from localhost ([::1]:45613 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elGMU-0004bD-EQ for patchwork-qemu-devel@patchwork.kernel.org; Mon, 12 Feb 2018 10:49:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55881) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1elGBW-0003T0-RF for qemu-devel@nongnu.org; Mon, 12 Feb 2018 10:38:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1elGBT-0004AQ-Bm for qemu-devel@nongnu.org; Mon, 12 Feb 2018 10:38:26 -0500 Received: from mail-by2nam01on0051.outbound.protection.outlook.com ([104.47.34.51]:31472 helo=NAM01-BY2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1elGBT-000483-3Y for qemu-devel@nongnu.org; Mon, 12 Feb 2018 10:38:23 -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=TzTVW4+/8h5h0SjdWqT1dyqnHUbpA4aARVtfG41Ab7I=; b=hg11emFuXayCiUK/OCq+73Em+UBImG7R/P4JL4m1skSr56iUsKKdp7NzgEPd5+IfOig9g5l78lCogaOFqAVQN9/7mHPh/1sXE9s75T1KjMG0GZhDbfp8A6ELANKrje18KRlgaNV47kXXnDbYVwTi9LWqm20QC79q+uq4VIq9jOU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by BY2PR12MB0146.namprd12.prod.outlook.com (10.162.82.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.485.10; Mon, 12 Feb 2018 15:38:18 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Mon, 12 Feb 2018 09:36:58 -0600 Message-Id: <20180212153715.87555-12-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180212153715.87555-1-brijesh.singh@amd.com> References: <20180212153715.87555-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0801CA0004.namprd08.prod.outlook.com (10.161.215.142) To BY2PR12MB0146.namprd12.prod.outlook.com (10.162.82.19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: d486afa9-e026-4a1a-546f-08d5722ea4c2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:BY2PR12MB0146; X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0146; 3:xmLfZoX2GPTuMSuAuDL9p5/qQvvUnVKDERk/TdJwUpKTmeZYeHmOjoQkg+Amtj6DjXnxkia1a1dbsf4AhIqmdfEx7g+l5BhhCdOQYLWVnpqtHoPcxIUcybjxwfjWXEn3b2rWzP6q9fcTHPnGPa3euyAG6y4mfksWBS/1FozWo5VepuckSdpXMCaxduEdI4BUspDWNXLgN1fYfxfNVST0jap9yKSK3einBXqIXbcauso7LJXA2FQtSK3/pIRN5sAz; 25:SjB7ka0Rlj3Ky9sTYWf1Iy5n8eUyCsMafx01Qcf+/c1DjCGt3/Au2yaYDpynf/RNedwBmPEpPTbpWU2jcwZGDCEyvrO0GQf/FXZBtnLG0SjeEjhnWEqYUHu8ON/MGg22QnRg2kN9Y9aCvZmrjXkmmG/mYXv6FbuTg/OgSC7SO3CVGgYZCtqHnIFS2PbkyeDbThMqp5axfzoET1iRkIiaeMAVIWTWE+p/HOeB0XgBb+mKdDg4EXrvbN9JWCegX8sz0SdtFGnDwHHlnXmFhY67WHDQPmVbYMgtwK7pPPbUX0utHT17yFQqGMnKS6xkpaxsuxL2kEbOkFznJQa5Ohv/2g==; 31:fgDQW8eWa94xmM8TszVwOLD+OQffx26MUZpg7049DR+y0JLVypzmDg3qGwxRCOqTYeVCNbclAjT44ePnns15lanSxhqGPz4LtFFsJo5uBUH0TTfnvPcYBFngq4Oio0JruWLe3EBMbdTwqm21sqFGzeH53FmJkQh89CC0Jo+sbxdYb08Cv+N1chMlAEZZttib/Sa/5ne84D3YKHX0yMORXK5Fb0FUIaz0HMF73fkN7rU= X-MS-TrafficTypeDiagnostic: BY2PR12MB0146: X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0146; 20:HsRmGlXOqMxif7EbTLQ+irftUCcqsqOCdQdgUjQAA+ZVKRA8aU9brffetoZAAc4LhEx7Tuspqv0JCwo+KXC122fUX1eXf1yyaAvmA4igKeRhnzbk+TetiRmw+e/VcuALcQ1lqUacalcNOzKwGQra6BkBCrbfNR991fDlfFerzKqrhuEbaMp/84eLPlP4rSumA8NHHlepN8ZQoJTgzpkzaGcEVeeE1lOzAJRNGGBg7DVNazciLzYuQnuw0tejRiadumwmFyzplYJaPlq7ym5z7xlpqGaaOgz7hPC6DlrsPrLbWEc8MsN+2tet6cSiIOvIpaGTEIUKBkugd1GAc7BpYCBMlDiS23t3JZTtGedy2mLH596n0Y2rpuw5KaI5Np4415YvDhw212HR5QzIf0Rs/CVyCpuiiVCJNaMR5IZ2U9Ewawuubrc2kXMgRdKRbzp3kk69SSpLG8ELSWoJZkDz/LFxlPlkD36dH5T/Z4k6/fGtjEfVL8bkdNYgbQCcWniT; 4:Rx/S/JxmQLj1dlx51PolRbt+hlkDtzO0jH1C3sDroXxcPdfhLGWfJhq9rzKROdSiuuDpFCU3//V7HSQZD8pbJooY0XLm3CqEUQPWa2qGMD/bgdMRgXuz89ue4hcxwJj0lqoU+gLeyDwtfi+WysW4fqcrQxMwKvmyFTFOPNY/EQ9MRwtIjYRD5tKAPiT8mGYKhG966lSRgfPtYDYkcdjq7Ul1Xz5Whs77MC6gQgsLOX37xfCqwRVOse4JUGBdqd/4pCU4hy3UVrOuW6KU37aV2LYHLPNmXlYfT5vIiXmAw07+qfkF9xKZ+p7vUyykkOI/ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231101)(2400082)(944501161)(6055026)(6041288)(20161123564045)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(6072148)(201708071742011); SRVR:BY2PR12MB0146; BCL:0; PCL:0; RULEID:; SRVR:BY2PR12MB0146; X-Forefront-PRVS: 0581B5AB35 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39380400002)(39860400002)(346002)(396003)(366004)(376002)(199004)(189003)(25786009)(53416004)(66066001)(8676002)(7416002)(105586002)(59450400001)(81156014)(76176011)(81166006)(5660300001)(97736004)(186003)(16526019)(8936002)(106356001)(50226002)(2361001)(6116002)(3846002)(47776003)(305945005)(1076002)(86362001)(26005)(2351001)(7736002)(478600001)(51416003)(36756003)(4326008)(2906002)(53936002)(6666003)(2950100002)(8656006)(52116002)(6486002)(48376002)(39060400002)(68736007)(54906003)(16586007)(7696005)(386003)(316002)(6916009)(50466002)(8666007); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR12MB0146; H:wsp141597wss.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR12MB0146; 23:xQPJlnlwWw+ej8G9Mvv+aLwPCXhpOieWOXH4a9OT/?= =?us-ascii?Q?i+LBU6WgFaJv4BcPOGpEiaq02FfZpK1+R2N2JdEL3Xj92AEHULyVZj+O1M65?= =?us-ascii?Q?QrdwBzCe5Bpy3APpM4cOyv/2rsE3c9O+F8xDgUFTnamB1xFnFu4YEOZe4BvJ?= =?us-ascii?Q?MSl6Bav9qqSMWSBvl8WY/BSpR3JFD0x2PHqsNbbm61D3rqEq7fGOsxMl10QZ?= =?us-ascii?Q?EBiP/jpCeeDWH4hFzSVCcW2Wg7jSnKMskWu719hx3juR7WgzVCIDL0ApFStB?= =?us-ascii?Q?d4Sm/Odb9TnSdgzCFbxYBMhZoeZW7oHft0ukNDVgjyUuxP7Te79nrlGYWd10?= =?us-ascii?Q?g826Uv6NuWMJE45MUC+WsQ33fl/M5aYJ0CivhvIz3rzhf/8vOGWFNalt9sXu?= =?us-ascii?Q?P/6zlfx7NAdjtuIgm9CwFH441+pg8+ID7zJdZH8617F4ICa+Ess9Iv5E+Esz?= =?us-ascii?Q?iQqz/VEEMiKWEkAkajDRg5QbDlQVXbaU9CBsd6WxWaZ4Mv6zIdU1i1+grNDD?= =?us-ascii?Q?4Ku6UpQVrDzH+7XF/zNwJM1J/bgl/WOwpodpb70upN9U++IGFD3t4pSclSUw?= =?us-ascii?Q?APGSUlKjmc8wLOEHD4VrSR5kCBCJDG+nHXJxPy4zp3+/3KxfTa7q4GfV7XcG?= =?us-ascii?Q?kltsymT8EusPnyGdleW1T0DGUoKohbWRPoxBCije9tovFTEtMSuIv7/UjlNc?= =?us-ascii?Q?gAQGCwBMrigESMDN9F9mwRGGAnr6MVKOgMW5/S0XiOTcdnqjgqPNSuB9KRiF?= =?us-ascii?Q?cg0rNSAg0J1U0ZYDPS6uKxlwISZvpzhK+502qiV8EPuJaEaNCgFjKjCMkR3+?= =?us-ascii?Q?YaVYd8jFIwFuVJOz82QQG6y68lJ2tEV8B+K0zJztCr8n1kjWJV908eIgHn29?= =?us-ascii?Q?TB7qQK90tM91Omm1LYlV5Xde6/6quOMKW8/Nd8XvB+XZOaWQtt34xa1Iv+Qn?= =?us-ascii?Q?cWyS5Del+be64UkRbeEbyiYi80FL4idMxMkf4mUi7r+csM3wXz9EHEyVUjjX?= =?us-ascii?Q?aENzB3GAhW9Y/PnkHzG9sFVmPZZLCr2AQurwUvQMDyKUNSlX5iDNqxIy4f9p?= =?us-ascii?Q?bRjjEhGLQIrRe431FS0xOm2SCSmZfIbBlxl9+3kA2znC7v2OtAxgysrz54dt?= =?us-ascii?Q?ZbN0VJyPZlwyJlhNC3d3VHK5bHnq+afta+tI0ALpD3WBmaUSQupVb+m1NIDu?= =?us-ascii?Q?9nRzf0R4vOxxpUWXSBEv46/vi2SKDR+3L7PnS8loj/VNWIH+luQ1A8rCMmHO?= =?us-ascii?Q?cni3MOKb4fenU4MwTNSSCDbTuc1QXDyUePZsR6NIbhSWnYkfJI3CZNWyuU1n?= =?us-ascii?Q?ucoJbfei5XVrb/gvNdVAvU=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0146; 6:fit3Wi4j/G99eGwKGoxj9ekCmRh1/2ba/fZkFspM3+CKHLm5auWe8oo6uxjUjf78MbnFB76mzoEtnruD0+vcpbSQyrJh1InWUdQf/cMlY4jd8ft7RKOauDGHiMvugHExKAG5SIVuvrZg2RruQ6G0XSii4UKsQuvdW+LRvP1jhRXcFXyiOqE7qLeMqMW/j8ib0kw8pFbVFiJD5UPndWoU5IZQUfZvCZxWkPzZ7QB1MicrUljJtxt5ao9YICCuq3ynfqq7Xz5qFGLNTNwab0GUV0lcHeCZvdoVb/UJBT0mPYp9xy1PQMEop+ojzKeRaFVE5uyWVHtT0ZV2kujdyhgkpbg1uzSOdH3LBl3goYvD/HE=; 5:J/0HPJfntaEb8kFh8JoMWRlcePKYVjXFYeyA86ELB2zfDJ71xQ+NmR7LC6cuZ1pxS8CGP8GWDaWDwVEWWstKJ+QtYmG9Uf+4u971OFfOI83/S80IKaa7dEt5FLXfEEkX0zFkczX1KB0EamfW9JPsl7Te9Dol4gp3o1RmLgwt3qQ=; 24:lB5kn+/d2SOKpWGIf7o2ZYgAA3ICGsh3M3vHZsfTKD6fpn+7ePc2IqDTU4jmIvIJ6s5huBH2/rssTo46oCu5iGyI5v29iyn+51bjV5ND0Jk=; 7:Ti4Ur4iztw4hrlLxzpP5AuPbvTeIwum+JMZdyo29bdkejOwO1KJemboJgYmYvSBT1MGoAQ+hgpWQ0woCvms7iCSCDzTOYC6OF3aSwOEPAx4td69igA8pgrY2airvWQku7XG0qIxyBC5CAI1iiY/+1DCpXkqXB9u3n1cWW+y+R0n+STERR3vEHvEpFK1+pfRba4zVC4fQWijMxJWJ1z8utmq/rc96sGENe6F7xi9p4rkCxu9OmDtxmCtySXbVjGow SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0146; 20:ZcEZiBqHiemV2nmeBVMXZQ99wbnO4KyrqCQSgxoIevEW3c4yav6wGxK2WYlpHoT2EEA2439U8DJImUxvy4aOBifdmxvgGtEupAiCRdKl4yxlELWkhsWXuiZs9JkvxMbaiA756IQuzlJwMWv2GwQe0EbzrRi+3H6AU0HQfWzUtSMClJkcVni8TIPrK+m3uNlzkemxm5hUPGzeSqa7yJ5IwsNwMrJhk3WHhy5epnSH0hjeDaU/ngFNLdUYWRMYrmfb X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2018 15:38:18.5431 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d486afa9-e026-4a1a-546f-08d5722ea4c2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR12MB0146 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.34.51 Subject: [Qemu-devel] [PATCH v8 11/28] sev/i386: register the guest memory range which may contain encrypted data X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Brijesh Singh , kvm@vger.kernel.org, "Michael S. Tsirkin" , Stefan Hajnoczi , Alexander Graf , "Edgar E. Iglesias" , Markus Armbruster , Bruce Rogers , Christian Borntraeger , Marcel Apfelbaum , Borislav Petkov , Thomas Lendacky , Eduardo Habkost , Richard Henderson , "Dr. David Alan Gilbert" , Alistair Francis , Cornelia Huck , Richard Henderson , Peter Crosthwaite , Paolo Bonzini Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP When SEV is enabled, the hardware encryption engine uses a tweak such that the two identical plaintext at different location will have a different ciphertexts. So swapping or moving a ciphertexts of two guest pages will not result in plaintexts being swapped. Hence relocating a physical backing pages of the SEV guest will require some additional steps in KVM driver. The KVM_MEMORY_ENCRYPT_{UN,}REG_REGION ioctl can be used to register/unregister the guest memory region which may contain the encrypted data. KVM driver will internally handle the relocating physical backing pages of registered memory regions. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- target/i386/sev.c | 41 +++++++++++++++++++++++++++++++++++++++++ target/i386/trace-events | 2 ++ 2 files changed, 43 insertions(+) diff --git a/target/i386/sev.c b/target/i386/sev.c index d5fd975792b8..2c4bbba3c367 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -86,6 +86,45 @@ fw_error_to_str(int code) return sev_fw_errlist[code]; } +static void +sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t size) +{ + int r; + struct kvm_enc_region range; + + range.addr = (__u64)host; + range.size = size; + + trace_kvm_memcrypt_register_region(host, size); + r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_REG_REGION, &range); + if (r) { + error_report("%s: failed to register region (%p+%#lx)", + __func__, host, size); + } +} + +static void +sev_ram_block_removed(RAMBlockNotifier *n, void *host, size_t size) +{ + int r; + struct kvm_enc_region range; + + range.addr = (__u64)host; + range.size = size; + + trace_kvm_memcrypt_unregister_region(host, size); + r = kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_UNREG_REGION, &range); + if (r) { + error_report("%s: failed to unregister region (%p+%#lx)", + __func__, host, size); + } +} + +static struct RAMBlockNotifier sev_ram_notifier = { + .ram_block_added = sev_ram_block_added, + .ram_block_removed = sev_ram_block_removed, +}; + static void qsev_guest_finalize(Object *obj) { @@ -360,6 +399,8 @@ sev_guest_init(const char *id) } sev_active = true; + ram_block_notifier_add(&sev_ram_notifier); + return s; err: g_free(s); diff --git a/target/i386/trace-events b/target/i386/trace-events index 797b716751b7..ffa3d2250425 100644 --- a/target/i386/trace-events +++ b/target/i386/trace-events @@ -8,3 +8,5 @@ kvm_x86_update_msi_routes(int num) "Updated %d MSI routes" # target/i386/sev.c kvm_sev_init(void) "" +kvm_memcrypt_register_region(void *addr, size_t len) "addr %p len 0x%lu" +kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%lu"