From patchwork Fri Jan 12 20:22:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cameron Esfahani via X-Patchwork-Id: 860206 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; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=microsoft.com header.i=@microsoft.com header.b="UEbqo4qy"; 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 3zJG5H74Gvz9s81 for ; Sat, 13 Jan 2018 08:26:10 +1100 (AEDT) Received: from localhost ([::1]:39984 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ea6py-0007qJ-Te for incoming@patchwork.ozlabs.org; Fri, 12 Jan 2018 16:26:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50311) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ea5qx-00034S-CA for qemu-devel@nongnu.org; Fri, 12 Jan 2018 15:23:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ea5qv-0001jW-S6 for qemu-devel@nongnu.org; Fri, 12 Jan 2018 15:23:03 -0500 Received: from mail-dm3nam03on0726.outbound.protection.outlook.com ([2a01:111:f400:fe49::726]:3340 helo=NAM03-DM3-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 1ea5qv-0001gV-LP for qemu-devel@nongnu.org; Fri, 12 Jan 2018 15:23:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=WAwHRoAoM7cg95y2B3/We043HO/z7UxmqXCnSKrAHtE=; b=UEbqo4qyhyv/asKYDOtkQkTpHHj15b8trENky0P7s4wJCd+dcl2atGg3Wn5ybjZDuiaQ4HVdV8zTz5JVrgXzomG2RSmYeSRIjM8sLDcxSaqg6Tpj2EyU/QIu2PWd27j7u0MNQr37U8mUtEd+HfArkwW4PoraUzyI+5h7UguS3VU= Received: from JUTERRY-DEV2.corp.microsoft.com (2001:4898:80e8:f::4b) by SN4PR2101MB0879.namprd21.prod.outlook.com (2603:10b6:803:51::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.428.4; Fri, 12 Jan 2018 20:22:58 +0000 To: qemu-devel@nongnu.org Date: Fri, 12 Jan 2018 12:22:25 -0800 Message-Id: <1515788548-3570-2-git-send-email-juterry@microsoft.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515788548-3570-1-git-send-email-juterry@microsoft.com> References: <1515788548-3570-1-git-send-email-juterry@microsoft.com> MIME-Version: 1.0 X-Originating-IP: [2001:4898:80e8:f::4b] X-ClientProxiedBy: DM5PR1401CA0003.namprd14.prod.outlook.com (2603:10b6:4:4a::13) To SN4PR2101MB0879.namprd21.prod.outlook.com (2603:10b6:803:51::32) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: aec59edf-25e2-4134-61b2-08d559fa45b5 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020086)(4652020)(5600026)(4604075)(4534117)(4602075)(4627213)(201703031133081)(201702281549075)(48565401081)(2017052603307)(7193020); SRVR:SN4PR2101MB0879; X-Microsoft-Exchange-Diagnostics: 1; SN4PR2101MB0879; 3:WsYO1Yh/FdWbATovCr0OrGLuAWosD6qtepQVH4zbUPbBY0QJ7+GKMegWbzOo+8+GPXBh3dGHdeZY5jHyK3rTAkrm192iNSIblsJ4Mv3JWAJUwBazT4BTBDn/oNC7E7b5DOT/GN+1YEYxRvfC8Qxq+JzAPq9AKG5x5L+debLYBe3WBaRnbAYdE0ZFUp8wyXVdBPofTUValB2hUJBsKkWy3pm4+gdkf4chW61yUOspUoXI/QZA8McDQr5Kms/0ahvU; 25:N/yooaLBYaQ+F/NQ9eNmTwcHQRVHHNkCQdUwFSTsyxi0J6l9Ij1EVBCBqvVby6avlpWLGl62eEXkbHHll44QoQ5E7oDv9vM2cHrVfk9X5cQKvyRX47XTOwjgwqCHWvcT2PhA8eZVcdHYdEWn1pte9/n92D0jmgI729a3NQj1+BoGpitnW9xcs+0bQLzzNxR+3hB154MrHkn2aFszOZYu1Lb/SJ9zx/GHz6L8MrDSrIoY4PqCQYCrRItrzJ/OfTLBmaZtYQA2Ql12gqkadwuseilYT7WEzJbPbzs0fkMZM4my8JWeSorvSp4xxHz/XUZkZFws4WL8BIe3vuQdSqnjhA==; 31:ukVQOsKNoJZqtcqFEwzGwWK3OFskJqHd5OeoB04jDky0Ftp5s4ZpXeWw3qKGnG7/tEu6qWllEDlYSG9ByDQ7cwvw9Ix8Knwwu0dO5Tv33frMlrgJQk4kvn4rxjk8faW1vV3JgQmPtjPqedzMhxgMxig6Naj6VJa/lP3PMhlbfB2S0rRNb2LCrfYLYoeBZ+36SVrmtdp1hFVBBH8c0/9yV8xvazYq3tYQXEXoCVPJNkU= X-MS-TrafficTypeDiagnostic: SN4PR2101MB0879: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=juterry@microsoft.com; X-Microsoft-Exchange-Diagnostics: 1; SN4PR2101MB0879; 20:FY7uVCbtShM2Ws4CzVv95dKDQUbALrA4v1dpvitG7hZ3xqyGtR+9Hf0PBS2cgHm3TRAC64epybxFbX+k9hlVMdhjfZunv5nb5QbwAWIKyOCM8mYj8/SzGCsGCqT42jkiJV8G+flvE5O/Gho8BcxsW9X+DLT3rerhX0lYHe8WNR/ztu0X63XMEIpQEaD4DNrzXb/4yOwRipU4RteNlxXJX1Fp0JAOQMbWh0vIxCjkU8dPU9U+OAbyijT6JZW05Y38Koz4cL76kbN4t2+9CFpj1ONsJM1IQZEanmJ0Brhn2hVgGyI+kHhhWLMnqb6sVT62zqJmGgLjFWlFuDXb10lN/s9bEKl38GcrJNcTCyOuEnHJY4phLJ4HE4UQY8JPOXy9qffamrGg8uJ0K98vZBcL7MM9es8uHew2QpusYy0i3kwUbtQfOKkKXSQdw7ej1Ng1edZ2/97ZVd+QA7fcmGmgmptQUr9l06trYM4qPyWHHHHRFlOwy/7Wmpe9XTuTGJo2; 4:GU8Zp9K4sqp3vJiLBqsmndS8H4DE1UL1za5y2QgQ5Vvx4gMkle735JJdPrdDqzGcphkovgu888MY5STPWId/1rgpdEusgX9nveQrCmN/Z5voyswFxoSc2PsTPXmdMqkCcyxF5s6/N6tn2+I9hi7L9t7+FyubEO/YLE04tx3zIXMK8WEFFmtUG1BtV5Rmh/taZ9ZZdmO0YdkTH4atqsQYTq3JJxmKKYxprRg5iFKH7SmgY5hulkU96CST9lY0ciQjwJHn2ZMhDvOg9Wsrze9I2cLwWXSymhGgePpFLbt8lx2lwU66KxERaFu5nOmWtK+mM0lf1jH8fFKZTNkRwrqnZaooTmmvltt494H+6p98V2M= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(28532068793085)(89211679590171); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(61425038)(6040470)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231023)(944501147)(6055026)(61426038)(61427038)(6041268)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123562045)(20161123558120)(20161123560045)(6072148)(201708071742011); SRVR:SN4PR2101MB0879; BCL:0; PCL:0; RULEID:(100000803126)(100110400120); SRVR:SN4PR2101MB0879; X-Forefront-PRVS: 0550778858 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(39380400002)(39860400002)(366004)(346002)(376002)(199004)(189003)(39060400002)(106356001)(6116002)(316002)(105586002)(22452003)(2351001)(97736004)(25786009)(16586007)(86362001)(5660300001)(53936002)(6916009)(2361001)(6486002)(2950100002)(6666003)(86612001)(51416003)(7696005)(52116002)(52396003)(10290500003)(50466002)(478600001)(305945005)(10090500001)(48376002)(47776003)(386003)(68736007)(81166006)(8676002)(107886003)(81156014)(59450400001)(2906002)(4326008)(8936002)(50226002)(7736002)(36756003)(76176011); DIR:OUT; SFP:1102; SCL:1; SRVR:SN4PR2101MB0879; H:JUTERRY-DEV2.corp.microsoft.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN4PR2101MB0879; 23:m9OgzZNu+h12hgI+uuputUa3JKrbRq/E23J7nGy?= +ZvZRo5cL+osHjRHA8OmWsie6UQwnH8GLD1hsLMi8PmIQl2AQBGba2Seh89EunYUzTzi8RsuyjNo/yFmdJE6OU24jKWf2Wz3fDPSYYI5s7BkyaTDiSR+8vNt9jmUlXozqxWf0jQzlwMHLI5xXMuzGe1Jr20ved8MXA+uTIeCQBoXIJRuSeyBnUtOr3il2l4sdzElIz5Bxsttu81A1yec10HKT5QuGm/jGeHkMU0FO8FQqbmAEjSY1Ke1KpdztFad+bfVj2TXHVTbuzreKqMZPlzojiextwoirpGiv1oYdhXWVF2q9wkVF41ld9mtIaTLDKJxiPlKrMmWBKVdvt/H8LCt5vevnUXY096+nHZZwZpchrrtx89fjMCu6HNIlXrWRQXnEoMvwTjvTI20TSbLXppq6KOdIZQK/NpIgxwrJZH1jkAi1KQWNJ7KnqV5siOC84NHKhAi0tFtctMg7vnfoLtqMdueZPe55sxbAJG6/Gshur/ixO3Ie8mRGIoN7abMfYaa4OA+41yX+US8kQ8EwW4AClt+3NO9IjU+cqATd84xV1AiYQYWEl9JuyJmC0HPQMAqjx1PQLrQ1ly4s62t+JYs9Du0XX0+zcXcdf7Oefl3LCLt85Fj5HbPCYwDHYHiMKH6IjDs6ie0C1T9BIHFqFS5enXFY892MQZg8F+Oj+i3XNUa6VgKy4auNuYKI0yOXojHDlBRCsD30wgOOsnwP//Lg36glgoFxlFKOUnYqCGT7FUXF7kjfuCdMOK2FCpE4LvNqf9vQAxYhGh0r/yKy0u0AYvLDIdG/b3Ff6KmvXqhAZ22Lj36noT09w+lmvqIHxYyYnr5SgnCWc1Y9tsKlhQJuOgChfIuwul7TAI4xEzeR8aB5/Ai85uy40MkBvDK6W5Vj4tN/V3DTWJ8Bt/uQL6F4IGyIUz/kGT+tHJ44N83OLlPcKIGOMehxTp0wlZ6Od2u/NFLJ7FG1bZThniOfUviVnawlCTnEkhiswoh6sueSqShGT95owzu6jFUdirI0BDC5sVrEPEjivIrpiIx973i3tpr1nY4pKuhzVOK7Wt5pPXlp+vPdQCjPyUrtH6pCxBswIzqQy52py4Da0DNmHa+tU1noIZ9USmIMMvHLlZZQqgHZSf57i3HGvNjldbdZcTI5K1pXbdv6Bhfi0Z154ugxK4ahwYCuctY3vPkTsE/Phg== X-Microsoft-Exchange-Diagnostics: 1; SN4PR2101MB0879; 6:3IUasdVGvwcN5d7C43NFCWTQklyydKbcNY+qc/ehY6w85q95qA7Jvv0pzjbMY+7sNTQM6xZkzL+qqnSlP/TWdlm7wMgKyTG82x1/mL6vn8VRAATiRRsGE+EICUhXlDH1wLJVvxsIbvZ+IQXHpaFGRzmQaDqzk+aHpMD2rtbCSkiHU3oNhIm6XRMV3VMRPTTLiwovR7HsM5Bf20sT4ZQyRAI/BTu523djKom9FOFgGpwKhjTwoLzMPeFwc5/X3pDMzCyAkK/C2EnQOZHWfj9EkIhPOHQbSEAWFB1kDKskPWO5B9woTHachuxA3rssjcDHzKZG6ovEQX25R60ciq4AKinDvkahQNV1WxiTlBasb/M=; 5:8egh2SBoR6Btt9jc1fbpp292eR0+CDaT67jplMhxfCWSRrKndb3Ukt2ov7h8squPI2ChBOJDqTeipQ9c/c/E+pO20yQuGql8hyXziSi1ug9Y74DBpuFEJmIwz7m12hsUosx5lDuIQTC/kojFCtIEOwlPaWC3MumPCmLILqZyD/A=; 24:yiNS/vHw9ZytWe16cuRA4A5tjjvmA001n9lWojVYjEJ7XWnrgmDfJ0Tp2Wy9SYVR43q24kxqEIwnitmkwD3RN2PLhaYoQjUDEjXbHLo3vyA=; 7:btkz8vWuLVRR9A2NCWnw+lUrFF1HyBQXoO0LJH2ril7DGrmuadluPnKZ2AyjxLN+f00EZ/AzhcVedju9H962+oWm8+uNXAShc16BaVDVKxK1VBEDsDwTwe9ZUblhAS0sseuB0jSAeRarAr/gzeL4QGbb0GCMInYOC1EkJv/22F/3WpiIwm5f1DdL1LmUsxanuoxcdjciX7QO0iWrWNgX4fXfGdrozSvb22OvIFyG6sayaKV+enA6/DRQ1VEh+WDD SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2018 20:22:58.3691 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aec59edf-25e2-4134-61b2-08d559fa45b5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR2101MB0879 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 2a01:111:f400:fe49::726 X-Mailman-Approved-At: Fri, 12 Jan 2018 16:25:15 -0500 Subject: [Qemu-devel] [PATCH 1/4] Add the Windows Hypervisor Platform accelerator. 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: , X-Patchwork-Original-From: "Justin Terry \(VM\) via Qemu-devel" From: Cameron Esfahani via Reply-To: "Justin Terry \(VM\)" Cc: "Justin Terry \(VM\)" , pbonzini@redhat.com, rth@twiddle.net, ehabkost@redhat.com, crosthwaite.peter@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Introduces the configure support for the new Windows Hypervisor Platform that allows for hypervisor acceleration from usermode components on the Windows platform. Signed-off-by: Justin Terry (VM) --- configure | 48 +++++++++++++++++++++++++++++++++++++++++++++++- qemu-options.hx | 8 ++++---- 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/configure b/configure index 89bd662..8d5a065 100755 --- a/configure +++ b/configure @@ -222,6 +222,17 @@ supported_hvf_target() { return 1 } +supported_whpx_target() { + test "$whpx" = "yes" || return 1 + glob "$1" "*-softmmu" || return 1 + case "${1%-softmmu}" in + i386|x86_64) + return 0 + ;; + esac + return 1 +} + supported_target() { case "$1" in *-softmmu) @@ -248,6 +259,7 @@ supported_target() { supported_xen_target "$1" && return 0 supported_hax_target "$1" && return 0 supported_hvf_target "$1" && return 0 + supported_whpx_target "$1" && return 0 print_error "TCG disabled, but hardware accelerator not available for '$target'" return 1 } @@ -338,6 +350,7 @@ vhost_user="" kvm="no" hax="no" hvf="no" +whpx="no" rdma="" gprof="no" debug_tcg="no" @@ -1054,6 +1067,10 @@ for opt do ;; --enable-hvf) hvf="yes" ;; + --disable-whpx) whpx="no" + ;; + --enable-whpx) whpx="yes" + ;; --disable-tcg-interpreter) tcg_interpreter="no" ;; --enable-tcg-interpreter) tcg_interpreter="yes" @@ -1548,6 +1565,7 @@ disabled with --disable-FEATURE, default is enabled if available: kvm KVM acceleration support hax HAX acceleration support hvf Hypervisor.framework acceleration support + whpx Windows Hypervisor Platform acceleration support rdma RDMA-based migration support vde support for vde network netmap support for netmap network @@ -2446,6 +2464,30 @@ if test "$xen_pv_domain_build" = "yes" && fi ########################################## +# Windows Hypervisor Platform accelerator (WHPX) check +if test "$whpx" != "no" ; then + cat > $TMPC << EOF +#include +#include +#include +int main(void) { + WHV_CAPABILITY whpx_cap; + WHvGetCapability(WHvCapabilityCodeFeatures, &whpx_cap, sizeof(whpx_cap)); + return 0; +} +EOF + if compile_prog "" "-lwinhvplatform -lwinhvemulation" ; then + libs_softmmu="$libs_softmmu -lwinhvplatform -lwinhvemulation" + whpx="yes" + else + if test "$whpx" = "yes"; then + feature_not_found "winhvplatform" "winhvemulation is not installed" + fi + whpx="no" + fi +fi + +########################################## # Sparse probe if test "$sparse" != "no" ; then if has cgcc; then @@ -5565,6 +5607,7 @@ echo "Install blobs $blobs" echo "KVM support $kvm" echo "HAX support $hax" echo "HVF support $hvf" +echo "WHPX support $whpx" echo "TCG support $tcg" if test "$tcg" = "yes" ; then echo "TCG debug enabled $debug_tcg" @@ -5719,7 +5762,7 @@ if test "$mingw32" = "yes" ; then echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak fi if test "$guest_agent_msi" = "yes"; then - echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak + echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak @@ -6641,6 +6684,9 @@ fi if supported_hvf_target $target; then echo "CONFIG_HVF=y" >> $config_target_mak fi +if supported_whpx_target $target; then + echo "CONFIG_WHPX=y" >> $config_target_mak +fi if test "$target_bigendian" = "yes" ; then echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak fi diff --git a/qemu-options.hx b/qemu-options.hx index 678181c..8c8f132 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -31,7 +31,7 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ "-machine [type=]name[,prop[=value][,...]]\n" " selects emulated machine ('-machine help' for list)\n" " property accel=accel1[:accel2[:...]] selects accelerator\n" - " supported accelerators are kvm, xen, hax, hvf or tcg (default: tcg)\n" + " supported accelerators are kvm, xen, hax, hvf, whpx or tcg (default: tcg)\n" " kernel_irqchip=on|off|split controls accelerated irqchip support (default=off)\n" " vmport=on|off|auto controls emulation of vmport (default: auto)\n" " kvm_shadow_mem=size of KVM shadow MMU in bytes\n" @@ -66,7 +66,7 @@ Supported machine properties are: @table @option @item accel=@var{accels1}[:@var{accels2}[:...]] This is used to enable an accelerator. Depending on the target architecture, -kvm, xen, hax, hvf or tcg can be available. By default, tcg is used. If there is +kvm, xen, hax, hvf, whpx or tcg can be available. By default, tcg is used. If there is more than one accelerator specified, the next one is used if the previous one fails to initialize. @item kernel_irqchip=on|off @@ -126,13 +126,13 @@ ETEXI DEF("accel", HAS_ARG, QEMU_OPTION_accel, "-accel [accel=]accelerator[,thread=single|multi]\n" - " select accelerator (kvm, xen, hax, hvf or tcg; use 'help' for a list)\n" + " select accelerator (kvm, xen, hax, hvf, whpx or tcg; use 'help' for a list)\n" " thread=single|multi (enable multi-threaded TCG)", QEMU_ARCH_ALL) STEXI @item -accel @var{name}[,prop=@var{value}[,...]] @findex -accel This is used to enable an accelerator. Depending on the target architecture, -kvm, xen, hax, hvf or tcg can be available. By default, tcg is used. If there is +kvm, xen, hax, hvf, whpx or tcg can be available. By default, tcg is used. If there is more than one accelerator specified, the next one is used if the previous one fails to initialize. @table @option