From patchwork Thu Mar 8 12:48:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 883106 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="qPVFh1va"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zxrJM309Qz9sgk for ; Fri, 9 Mar 2018 00:02:11 +1100 (AEDT) Received: from localhost ([::1]:38528 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1etvBP-0007Ku-B3 for incoming@patchwork.ozlabs.org; Thu, 08 Mar 2018 08:02:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59045) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1etv01-0005ak-Q2 for qemu-devel@nongnu.org; Thu, 08 Mar 2018 07:50:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1etuzx-0004GJ-Lv for qemu-devel@nongnu.org; Thu, 08 Mar 2018 07:50:21 -0500 Received: from mail-cys01nam02on0053.outbound.protection.outlook.com ([104.47.37.53]:44877 helo=NAM02-CY1-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 1etuzx-0004EQ-8Y for qemu-devel@nongnu.org; Thu, 08 Mar 2018 07:50:17 -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=APtFSfmfQbRUvav+PgJ/V/oQLME46VKmdYbsWGac5Eg=; b=qPVFh1vaoNEXXqXf3BefU3Er4/KAd5YfoItZGKpbY3wKWKPhG/3kHIpGhA7e8KUM5x/SlFccg0mhE943YYFzRZXSDrZpUchwNxbFDl4RRg9iTU2IGCi8oBiXN+Fb70lh8DGV56ti2CBoiGERe2X+CBsVLBzGsS0VwqoGeVZFVDg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from wsp141597wss.amd.com (165.204.78.1) by DM2PR12MB0156.namprd12.prod.outlook.com (2a01:111:e400:50ce::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.548.13; Thu, 8 Mar 2018 12:50:10 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Thu, 8 Mar 2018 06:48:52 -0600 Message-Id: <20180308124901.83533-20-brijesh.singh@amd.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180308124901.83533-1-brijesh.singh@amd.com> References: <20180308124901.83533-1-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: BN6PR14CA0031.namprd14.prod.outlook.com (2603:10b6:404:13f::17) To DM2PR12MB0156.namprd12.prod.outlook.com (2a01:111:e400:50ce::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 15ea17c2-b2d0-4c38-fda5-08d584f321fb X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DM2PR12MB0156; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0156; 3:ORfIyAfrh0z8cVDJlBqtcB5BnCvauDVCnx0192FkkXQ1ogrNVEBvigZP4rJ5VW8j8FkT8qJ+gmOv2yWy5FsRRmZxjtzXyJD+mocYBKOKnEvNCDd29h6GP0M6hPKOj+5cDJSAz3awWYp9kfVvwG23wc0tA8BHPW/yKBQ04N/wmi+TbuG6eJMMAyCGg2n1fB2J6O5UrZf/TmhGAaugva+zj3LfiT0YFrddE9je1De/1BE31ZZ6HZIt3JKPNo1YT1H/; 25:3hUaIbEk24OrBNw29b2KvKv4MK3B+YK3+hHicN8BpFnRcJfWHxPBsOldnClss3cCJGEpX2qv8naIN4hsi1VZrAifE3B+nNDAOw+/DsqMAZDUWLHGsPFI1uyK+5m+SCGJeVJM+bclIel/L1I8xe9mao2CcKMbEtwm8dGUCQtAwGVnW8/Hp81vXfSqBfBsakmB6NokScDXavJ9hHxRpYMFnpXqDfU915e+BrNVrHh3ZPcJskK1HYoT5OfWOiMSPlPat0fL8HP76ZopxFePhTwB7qhn8HQNQwKVRKiESU46vXXoo39k0nVp1Eml8mUOc4D1OtzHS9sFEEPn+8jNR8d61Q==; 31:Xfq6wtWIJe3XDxIYiR8t2tVcT0JCEwnHNB2DE/vY3b/FfWyKt8SSrBWEf5jS6Qo7SJbPPiT7WjTd+NLF+QUQvu0rOiNIQlb74CARuK4l6s9fW05PQ2ml/X4fRQvOTc8RpObKUnBe3l8ZFjOL/j5PebYCXjK/0q/4twZrwNRNQsWOo0XpMXMxa90iUrrX7DDxRH3BVWcXEaKf50YVJ8rD1SagDe6bl1IBZQSzbEefU8E= X-MS-TrafficTypeDiagnostic: DM2PR12MB0156: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0156; 20:tfBOboT8vGB9jQn2RaSaz3EKhzgkaVN/S91k18B2iQxt8Z38xcJNvY0ioByDd0tTf2q5OcQupVS2z7GjCWUYUSQ4z5CJmF2Sg3AF+FnFkT7P6aXuFpRy0UfQaHj1ZfLEIJSNzCrv7muCFRnIEv6Jd/Nz3QxdWgAXrWQA6htO+WXQ7wYByARVs/ZCKfKrNMKm1nmg68o5HxVjtATz46+/c62u2VLXhwPgTifcsbs/OOooH2UcdCi4QGkVHP5FwVtDWCGR7Hm7ZGzHTFYNLzt8tyfvv3Ynv3BXEB6Gm8KA6MYOGGE5GPKuiLW/SHTlzHmkjdthYdtNnxgcHNYUNKBxkhHP+xwyburGLMd+HRPvKOIpl7TuJ02zyL4fN76gOOPBpvkhd1Mehj8hSJEzfgKjS4stDdtPFI48AN5xtsO6XVVdgqAaBsgvgx3c4O/WDAiphEhcJg374Mne7lwDu8+QI67/5tBiG5b/nr9audTnIJNBVYNmYHmVJsFBDCgQHSkr; 4:pcYkULqoOKoOTlxJHSgbUXYzFjsYY2fSVe0PyZIrq4ZGB8VxqtKImouBotedGhpTy+WKkdi1qdB/6oFih58q5VMbUU2s1Rbpt2BHvsPdFGXqdpeXwKozh+bmAzeC5heSoBV3DFpuF9a1vH3iowuf744rg/quzUBzfvUp1vez7/Jcibr6PTr/Qakebq/i4ZVvLJsC1bAJGlN9jAqF7E/e8YKznRGxopAopsULCGrCfwBDiwz35SXTfGRYepmQPbhwFLjhUFhURwO+hgy00uJ0jB+gXOqzYsyhQPeip3GXF8X31fkA1iWix+C2AB3/En7x X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3231220)(944501244)(52105095)(3002001)(6055026)(6041288)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123558120)(20161123562045)(6072148)(201708071742011); SRVR:DM2PR12MB0156; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0156; X-Forefront-PRVS: 060503E79B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39380400002)(39860400002)(376002)(396003)(346002)(366004)(199004)(189003)(50226002)(53936002)(2950100002)(6916009)(2906002)(2361001)(6666003)(2351001)(106356001)(81156014)(53416004)(8676002)(81166006)(7736002)(36756003)(305945005)(8936002)(105586002)(48376002)(50466002)(68736007)(97736004)(47776003)(66066001)(25786009)(4326008)(39060400002)(6486002)(7416002)(5660300001)(3846002)(478600001)(76176011)(51416003)(7696005)(52116002)(6116002)(16586007)(16526019)(186003)(26005)(1076002)(8656006)(386003)(54906003)(86362001)(316002)(59450400001)(8666007); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0156; 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; DM2PR12MB0156; 23:4GxRtY1GURom7prm1L1xvqAHKPwFoIO9b8/ekPvqh?= d7aWW019FVVqvksoJmhurpHai8JQjr/vK5e9wuH4gGu00USovKCmGu5089gx1R3uyxtB5t83XlXdVKbOBApqVOD1b6QSvOyoGjz86N+v5Jy52aRpiMyEFHgPLl1njXejyA0AjI7Nl2jaiXv+W73yn1mLZVD2uGwvp01Kfm3YfAxETj9iZukSfkQz2VAXA/erXuHwEZX2jGnu+Grcaf2URYeyKvipF4c8og7oZgsvvzIy71cJL7Cr0zH/vTITwvI55TWIoh7ETZA9JtB27kiGu7wJ8FALZlKXz05joe83ONRPyQTphjkBHdIBpzLDqXS22yhdVRhsvWzn4HPVFNEKnQ0bG73/RBoUFuFHOL7SOCjBe4oy584aCpyIGM8i2YZvMYJ5ZG2X9XVmW+OAIwBXfU/PI6/YWKVi1/tG4hT6YEIZwrxqk15047p5qssuewzoWvPTeDL5qcL3OSAlhGVW5yrfeKLkC23zUNH/OcHbdggCvomt5dFcBwgUTq7PG2P5uUPZRX0yo2ei4EMQsVBMaXdpyuBmB5bAeJ4pEx8UQ7ZBqEwsP1E0B75bV+EM/jJ5PfmAOKmCEK/YLbmYeQ1FIxbuhh1nAtQ5fcsb6YA2Hfugohe7XKLc15RcFNIuw+OZctB5BmX7YbUW4TGByn78gVrQNHMZADcXLQsEEWJ9sBUY5zie5gUQz/KjTI/6srqaNBC673B/BK8Hy4AbYNBD8P9XuYovzZ5oMzZbGtRqkk6frOgw/z13e1KzKxCBWcgXfsyYRcvS1BYE6P3A0yEOvh8FCOLZMihx0JU8ToAVKL1QUX3z0vUEZDzicPtpvn54M9sl5CPCHbLpgyNjHAgAWAqJbdgUEGVU6umpaTqaNwA1QBB02ax/qSBN9xfknQcgtJ57KUK4bEcpQI/pU7V6FyRQXJiHexTkeOK5Q4q8eLqjh/tS8U8X0uv18NDyOQ6Ohyeg5r/YiC2EyB3wRGpoEdpmfBtEPIzQe4vP8ITxxQFjO+aktJdNK8OL2jHM1HCHOD19VlY3X9kpNpwE2z8uGT5i3i77vSoF4E3a7lDUKYtYaMMsTmLOW69d2KIohM9R455Lrr+/nuG//Q9DDuWIiLeNiy+tounNqh67FeT3UsuKwWvqFEXVot2jhD5kIopTKkXayEyTANlEbzIdfGFOprxQbMjjeB20pciZK/QCWYensYD7g5J3H9gDsMWPl+wI6gKRrU7ZnuVXtjrCPPOe/XcQIN1DAT+cqPTThrS9OzlTOhQgi8hzT+bXDkqzlFhftQ= X-Microsoft-Antispam-Message-Info: hzHOsgIr49STsAVjdSbW+t7D4QW+QVysbJJ8kunT+IJ6tlzjV0X/FTkk80EtVLaFT/AkIyySGpRuNlKj5SVqpbhy9Jr9G1LLFKIJ5CJ7APuFHhlUCxL/ReqPYQMbQ7wBy19/05gMNU4PN0zxCIT+UxfyzwgYSobklaU2f3xWM3dUCiD8K6MWE6ZoQy/0r+Hp X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0156; 6:B0X3WgFWQ1f9QGxM1dCopFgKl/fyrR6S1zCT/zFgKiI/eIhZqYnToZ3i+aqcTuigMWfd2LdPe4wcQaBOEyUETZ5K+7JBQjl/nU4K059CVKmAm8sw2KLEFH58geuZnTBFcYV//kuzv1B/bLv+af+AysaLEACzIz1RoFCVu00EaAgxKk3UUKQn98lh0gOlcjYWuSzxztVO9lQ19ukWl3VE69SXeUe+fYeCx5yGde1taWjrux9asK4k0XQ9Dt7F0D+BWCka9Vh4QgPAwPZKM2KUcLS95lY9lpENCzUckm5xsJAYo+57woIOZeYgDTjLVRE8TIDJS530f+QlVF696iyvXkCf8GJgWG2yRAACMx3heWg=; 5:8KDAN/NeiA8Lq3cGhVwRbenQvA2dSSacowO0lkPbFZTWKs4QsrqVzZi9Xn0s5/eq4hamMkRILHVn8QuqHHi9XNHUHkpwDFre1bw5DP5wCBXPHezwMId4OIqsqyRj9IO7Exe2ZiaRC3F16p71sI1Jn7FphQwpC3g/K/szlUiDfI4=; 24:68YIjyr7ybVdKXf9JO1ArrnljKQQ2ObivuoFEfn8fK3AMCdgN6gr79zrIgeLD3EwoNt5lK1tX4NgnEXGMPONLaq7R6EaGndz3abO0EguU4A=; 7:jo9gZEhk2UmGZqicSIqwq7tuR/IZki5pmTAcKgyawbHmFndWKkTzjsTqhptk2VUJjeNCHPCvhw2b/GfmCiqvNPz93pR9WXCYSwNp1iuU0wed9OBFTua1vN6CfqvM19OFtz/XZA8GMscIDneSHv0l3UdUARKchUDwaznFt2/BdFX24NfdsScKI6JE/ycogt+7Aurh0vGfcDS9RCh1fTD7Q+ut6o4dTzTwrgHOAb69uhjTsj5IO0X8xLHqHHnbwF2R SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0156; 20:hS7xRBsLSyUJEA+Fw6BQ+6uSAUx+LGQhdXUlyd18bvEUwjQgYjMFeA48ICtahXauHS6uuUhersIrm99UKe3u82Ky45RcxZo+cylokf2kv62XLPAvPBvyPwo5o9iylGzibGvjgCxiuHahbbfbvHHJWBQ1O9Z5to4vdGaBjswVHSJKiOgABDvLaa+2QJILLTf1DF5XnSbLqtMjknJN+YFGb8OwxpEElFbcjrRNcsPd9tFA6SaxISOEw7wXRVc4Ur5w X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2018 12:50:10.4406 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 15ea17c2-b2d0-4c38-fda5-08d584f321fb X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR12MB0156 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.37.53 Subject: [Qemu-devel] [PATCH v12 19/28] sev/i386: finalize the SEV guest launch flow 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" SEV launch flow requires us to issue LAUNCH_FINISH command before guest is ready to run. Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Signed-off-by: Brijesh Singh --- target/i386/sev.c | 29 +++++++++++++++++++++++++++++ target/i386/trace-events | 1 + 2 files changed, 30 insertions(+) diff --git a/target/i386/sev.c b/target/i386/sev.c index 7ad7eaf600a7..ce199d259f7a 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -578,6 +578,34 @@ static Notifier sev_machine_done_notify = { .notify = sev_launch_get_measure, }; +static void +sev_launch_finish(SEVState *s) +{ + int ret, error; + + trace_kvm_sev_launch_finish(); + ret = sev_ioctl(sev_state->sev_fd, KVM_SEV_LAUNCH_FINISH, 0, &error); + if (ret) { + error_report("%s: LAUNCH_FINISH ret=%d fw_error=%d '%s'", + __func__, ret, error, fw_error_to_str(error)); + exit(1); + } + + sev_set_guest_state(SEV_STATE_RUNNING); +} + +static void +sev_vm_state_change(void *opaque, int running, RunState state) +{ + SEVState *s = opaque; + + if (running) { + if (!sev_check_state(SEV_STATE_RUNNING)) { + sev_launch_finish(s); + } + } +} + void * sev_guest_init(const char *id) { @@ -656,6 +684,7 @@ sev_guest_init(const char *id) ram_block_notifier_add(&sev_ram_notifier); qemu_add_machine_init_done_notifier(&sev_machine_done_notify); + qemu_add_vm_change_state_handler(sev_vm_state_change, s); return s; err: diff --git a/target/i386/trace-events b/target/i386/trace-events index f7a1a1e6b85c..b1fbde6e40fe 100644 --- a/target/i386/trace-events +++ b/target/i386/trace-events @@ -14,3 +14,4 @@ kvm_sev_change_state(const char *old, const char *new) "%s -> %s" kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p" kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64 kvm_sev_launch_measurement(const char *value) "data %s" +kvm_sev_launch_finish(void) ""