From patchwork Fri Sep 21 08:22:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roman Kagan X-Patchwork-Id: 10609397 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0C08714BD for ; Fri, 21 Sep 2018 09:06:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EF88929CAF for ; Fri, 21 Sep 2018 09:06:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E1F212DBE4; Fri, 21 Sep 2018 09:06: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=-7.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham 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 7568229CAF for ; Fri, 21 Sep 2018 09:06:38 +0000 (UTC) Received: from localhost ([::1]:54660 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g3HOX-0007tB-9m for patchwork-qemu-devel@patchwork.kernel.org; Fri, 21 Sep 2018 05:06:37 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49157) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g3Gi6-0006xs-KW for qemu-devel@nongnu.org; Fri, 21 Sep 2018 04:22:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g3Gi4-0002O3-09 for qemu-devel@nongnu.org; Fri, 21 Sep 2018 04:22:46 -0400 Received: from mail-eopbgr70119.outbound.protection.outlook.com ([40.107.7.119]:27680 helo=EUR04-HE1-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 1g3Gi3-0002FC-Lx for qemu-devel@nongnu.org; Fri, 21 Sep 2018 04:22:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YDyrDD4lIelGwPlKQgr1Sm+T86tLFFf4SxZxVwg9nYg=; b=PrihhZH03pUu+bnBpuyVKAPj4goRGm3KzfcNTL0BFFxipl7u3jpuYJETs49nHaRrYMdOgRgCZWLY8Nrd/zhLXaw9aH+gQcOyAj8kll75/HzzlYvQp9SVbzpb26/XqrM+JQ2NKsjN+hkag9+CmIk6YRhicfSZZAXia0MjZMLiYMY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=rkagan@virtuozzo.com; Received: from rkaganb.sw.ru (185.231.240.5) by AM0PR08MB3588.eurprd08.prod.outlook.com (2603:10a6:208:e1::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1143.18; Fri, 21 Sep 2018 08:22:40 +0000 From: Roman Kagan To: qemu-devel@nongnu.org Date: Fri, 21 Sep 2018 11:22:15 +0300 Message-Id: <20180921082217.29481-9-rkagan@virtuozzo.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180921082217.29481-1-rkagan@virtuozzo.com> References: <20180921082217.29481-1-rkagan@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [185.231.240.5] X-ClientProxiedBy: VI1P193CA0003.EURP193.PROD.OUTLOOK.COM (2603:10a6:800:bd::13) To AM0PR08MB3588.eurprd08.prod.outlook.com (2603:10a6:208:e1::30) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5f1ec611-6ac1-43bc-678f-08d61f9b6686 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:AM0PR08MB3588; X-Microsoft-Exchange-Diagnostics: 1; AM0PR08MB3588; 3:Hhy5H5o/RTEykVJg/buWVjNT6wAjvPvz3dTGpxHw1fPN677kCLoKCvkSm59g++c7LjuvpsRe+eznPSMxV9C/BfXQDY7wNzs6sPkQGprGrYkVeeMv4uala/usf/QaR3cTziMQvrZ19y4HXUqpyKN1T2bTje6MDh78pr20Ij1RDONAn42oCNMfZGvQMDsSHOgsM9/aS0MdN/b0+ba6CSL9c7TCYFXCnIQ6dH3iwvXKrq03pMraMtzVKz+pq0jiYWMt; 25:Wo6Vg7W3f54EB9wApgemwukSMfrDT3rwL8aNGtBdWCyaHQZuNdT5Plt25oT2iKWwo4d2hVjxqWh4sWbAne5qHUW6bkDOQ7JtJ8YWRJtNSbf9gUVkPaJKjQwatIYKBOK9CBzvVK7gBNfro7XljyToLsvSMfd0vtkPmEYGrUDiITS/fc2ZpuZ2lSiO8nyisUu4yP/+jcHXwePSETxrnE87yt+WigusnhCxNMKyC2AiI73uOVxoOwfwjTdnYWkJlwduxUZGng9fnCZqfDFMcrjMIwIJ3V8NRdRz1ABcEl20MWZPQ0ZqahQWsT13bH2aTxVPHIjeW8skno+8vCDeKqpJ/w==; 31:rCjgKXkpd1WHWTr7BfY6ZnIK+g7n6ZvOJWo2Ptj202xO0pDKFBqQjqmRWlx6lO13HDQZucLR145F+F7jne17bW/ZXJiY4umJxWmqm3lo67Af3BCnBVSYnBmnkqv9duRKJNRXLWjKucWMxqE+cXttiRmYo4QZiqeTUTt7IbiFNrsOUHwY4tb4foVsxiKe6uBdZYm+DwTrZV685PaQkobgRadjgspzHmBumKtXPRtsQ9c= X-MS-TrafficTypeDiagnostic: AM0PR08MB3588: X-Microsoft-Exchange-Diagnostics: 1; AM0PR08MB3588; 20:II9B6Tt9gv+WEatNZXQqK2NKE1KVF2rpURRaw32+IOx3oX4/X6UN6DXS6kMiU18/MMLRqoZm8SCAGoJBhC1mVcTe/jnAixB2KEmg6WZEvOZq8mX5BgqL9ci86uLXQ1uZE2oG+o7afcRN8dpGH/RirZXAMNPUcn5aAFasnP1f+Ps3Rdy/r/UuCUNhBbFzHC3SLu8HAtWRhLexIHjutN09nKgfNPdTtaULMHoqWC1X3hgd90lEZR5l8SSwvgiI3yVhJeMHLZ0bwTAfo6Hvll10M2YDDiTs3nGPo5ejWN+zzSX22zzaFjwXn1NeG+Z3qddx/i4sX6LgF7gowp/bnad7VH0IG3+Dznz+cW8jz+kLV+hjjBcIrlm5Z7V812iPfrNVegTqkmon1GlTwV7nBMpw8kLdHFXYP9vOmdt5lXEpeAvFpPvIjImLFJlmFnq7Kzz+cSPQm807yRc/IxGDSgqgYfNM8rNzb+69BEneqBiSzoWh50cePGyalKO3GP96Imrd; 4:FXDDJ9iIUKBFA6KZcyg6CGZ+BIcJruo6D5LOZEgTdMe0F7dJD7nR7t5gj/UyXNFiCCxiDvVJMovw0wFYTENLsN2knz1GaKHSHwBRT9zBWN85ErnXZ2d1e/HzJ3xTm4hOxkx53ZDesQOwJ16RLZdzaPS/Bg3NhPMg59QceCx3Y5kHFJJTQozlyzZhhwF5ZnTjnRapWcokcEyMQDjzGA5+VtzZAOQdGdPLr/Cx7Zb6bl9rxZbLftbLhUH1EnIrIW9Myw+ilpFY8I6joJUsKZaEkQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231355)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123564045)(201708071742011)(7699051); SRVR:AM0PR08MB3588; BCL:0; PCL:0; RULEID:; SRVR:AM0PR08MB3588; X-Forefront-PRVS: 0802ADD973 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(346002)(136003)(396003)(39850400004)(366004)(376002)(189003)(199004)(6916009)(16526019)(5660300001)(36756003)(3846002)(54906003)(48376002)(6506007)(476003)(486006)(14444005)(52116002)(446003)(1076002)(76176011)(386003)(51416003)(186003)(6116002)(16586007)(2906002)(66066001)(6512007)(7416002)(50226002)(53936002)(25786009)(106356001)(53416004)(81166006)(47776003)(316002)(956004)(11346002)(2616005)(7736002)(8936002)(305945005)(8676002)(2351001)(105586002)(97736004)(4326008)(86362001)(6666003)(68736007)(478600001)(6486002)(2361001)(50466002)(26005)(69596002)(81156014); DIR:OUT; SFP:1102; SCL:1; SRVR:AM0PR08MB3588; H:rkaganb.sw.ru; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM0PR08MB3588; 23:SyLQ2lzh0RIh2bkshw9raEdN93t4UoFZQbeSLWtM0?= V23lq0HT2VG8aEqeSuNEqxKb2w2EpVYpZ053HNVa2for2K0VItoBBAPU2LDsNk0df5Q6xEJax8v524G5bxZNVkJBJuUpMeEGLyIMuznkEIS1uonicwsHh0B8XTuD5LKWPyh3P+Q3qKst/UyHyBg2qC7HOkdjkSnvlzX+0AzGgU8VcwM8er+Fh5wnAstQUnjv4VD43TjoqEAykwMchXMAe9EMT8XR1NPVkf1H+TTiTw4rOjdfOaJX57JDXcmuO5DJdoAiru2jysjQ6QwA+yB5KWl7sZsK31zS7BAMDGiEHNQAx+jOyFdi2fYXmlnpBKHNATQuMyPr8Y6/XXZP2gXnufiWyMecLHcXu/UMKlx0vHcTSbNklolRkuhdm88b/7ARbIKfs8F7o0bRuaPRq7exMoIzGnjWuDO65Ib3iRcymolbpb3vptC3is7G1vC2UHfLjAAQbr/QoMAYKDOVjJxXIp6ACUtdIz1aCCy69HUGn/78Zx407rVfpSWcwGtAkZJo7yK9By+EpunibdrofyjGAGdUmUwDoNUjLwPbmiqurvKhT1EYSAuaSYA/ziD+TVm5O0H2rdVsxV5z5jq2dfxLwU2eMK1DW9v5BtH5egyyHXMSiP1gGp5PMrWrho4Br9LQG8p1vSQBoVUsfCmuZhD4FpCZuaJdOyxBJKeMxHDD5XRSDczJeNoM5B4Z7zBiQrxERePd/Lf60eReQDPrLYdS8CpPwiuc/kpxEjkus8mdGPFlzea7ke6zyZBe4LyQH1wr5z+IcOdZqy/xbGduprGVdv7lZiLgMHaDL1pyRQXP/PiWxxsXgXu2I0ED9C4zQF91CRfWJNZAEw3aFjF9WMxqkls8ArXDIOWnZE3UP8A1spgQzBdKdDNcG0ZntlZLBT4LLKUv0M8zp2xsWXMjsi/dgQZA0B/ifFKrhwxC18xcYQOsn7tS1we3wGxE2sGMPOyBkvYijEv6XnyPhNNLveX3ZnFPFx2eZvBqaHzQlaPv+uAipCJvDaH5gVe0w6/HHkv4U1SPprWgBJPSH6uhjUxwebGRDfvjrjDlsmLlfOU2Wuz5iozLW+joJiDBWYomMrydzFfwVDJa6Y2fWKlyfoCkorf7gjQIekvmGiOhbDlnNv0lYvj2aibGvpa9pZr4tujBaC1ZE9Nuz62FMZO7XpRTrVB3PHMIwloP38Be27n4ACZs2I/hSpwxSgcZmV/mgxLi2X9c5xs1L+v2RWco38iIRyGyNKF6BURxtSXjjXLrRla1C1O75V3bxsjKAGGbgbLxymzsR26eh3/9FFrY3BtjHtD X-Microsoft-Antispam-Message-Info: 7CnoKwqFsr1XJhYvqN7WrFkrQae5UX33egws0UT5KLU+rNZZRjcgaG/A3SqUjSjZIbMPizinSfDbLSBRXNvUBBvCp/kfbQqRcOjiBAOoHnCb7C2tZqm41Xk3V7YypqQk6CXv7HyRjjwPj0X+m1n56eplXEPvhH20G5qhGztjM79rZj52lAthsYiDbVXm5efgmqanzrhqOgsZe8d8PVmCccVC0uqAy9B7B3/BmY6sAr5HKugm02UH1q/13fCMZaarqajQXNBISYCO+cCDC/sp3rfO6LmillJ+ILfekh3gHUbHiGwg0ubPINN7Q9oMMDs5TVzE/j4cINk20HaS5avS0BtpIEwzk60yhqDmkIMV2yw= X-Microsoft-Exchange-Diagnostics: 1; AM0PR08MB3588; 6:22RabDrltSyTsel6BA9Gh37SXkTnnMBOPEtGfcanPqLgDMuTK0mMPJOAgJRqvw7Z75dPCk/VNG1yrEC3jjSwPXA2e94iB5Zzh9o8ymcqYwLsBoNl5uyNN8XNLFb71B/0idkpCbc6Uj3KrBVsfwFfpfzy7Ij5HchYur1Bd+0R7nxFILMZSoLWmRo/1IpLgXoHLwUE6Z+ZxprSg3s6lN9IqfU9ePG+/Ihbuup9dlcGJ++Q1xh57Ht5JTQtTvOhhiTy0pzOWvubEUdozyFQgVsAWvhTUsrvRaQqqibL1g+89FNqzot86kKwZP4nL8k+fJL236P5XLkQq/bRh+bVswUKTlcUjYy3rJEq5STxDWA1vrXwqRZPcFfUPFIGOEHiT8zMiKO3WNWn3NI+a/c2FiO37FgEcL2oYH82FLHe6PbKfHNUNRSdEaOful4xGSkuDtTeZO8ij6BnrLYdDHG7zO1CQA==; 5:v+qhTDKzln4nnAw4CiOQNbCE9a7B3kQdWPO4JLHPX6hw7J3DDvfVPVbfAfkrfBMdZPRrxy0hC0WJ8TWpVvDYkAI2ENpIfsl44b/izapTd8DAqIjIdig3TsIihEubksR0qYVQYNh6o+TeKs0S0bVe92k7GA5/17176nrdrnWHjts=; 7:K7j8p6aN1zMP2KKnwWHiKHZccIg2psK9XQhVB8cyjWeCFYf2XKnPv1Gf+lxcowMt0sf90U24g3DImDpCSvxIymjmQAVCi78wbjmWtPwSD1hjC3EqU/KGz8aLwfrCTdKJfzIPJ9xASQ4EduTIXmXzm9SVEvEUl4/cNCu/DBlU+1TytNwkNppiLV47DOhPBK4tltFkaTydcZa9TBE6yF3laHpPrpZavosT6XzBso0cI7CQGbuHR+V8Vkncg39LXEzP SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM0PR08MB3588; 20:nQ68hGKPO0y21Qh3G2Yx1rNpqBXyerkl/YK2YVeOwZVGN84dsLfKsCbdoVphPSiM3bfz6+/u5QipmHxVSaIMHPY9MLmCfPaD3QAn/06bQvtYbsOw2kuZzvZMNa9HVaM5t2lTxKFmhQ4+qiqHvR+FZVfRMoDp8NKFE1x982xZRXg= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Sep 2018 08:22:40.8890 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5f1ec611-6ac1-43bc-678f-08d61f9b6686 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3588 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.7.119 Subject: [Qemu-devel] [PATCH 08/10] hyperv: add support for KVM_HYPERV_EVENTFD 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: Vijayabhaskar Balakrishna , Eduardo Habkost , Konrad Rzeszutek Wilk , "Michael S. Tsirkin" , Venu Busireddy , Liran Alon , Paolo Bonzini , Si-Wei Liu , Igor Mammedov , Boris Ostrovsky , Karl Heubaum Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP When setting up a notifier for Hyper-V event connection, try to use the KVM-assisted one first, and fall back to userspace handling of the hypercall if the kernel doesn't provide the requested feature. Signed-off-by: Roman Kagan --- hw/hyperv/hyperv.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/hw/hyperv/hyperv.c b/hw/hyperv/hyperv.c index 5bb5126393..bf361de6f6 100644 --- a/hw/hyperv/hyperv.c +++ b/hw/hyperv/hyperv.c @@ -13,6 +13,7 @@ #include "exec/address-spaces.h" #include "sysemu/kvm.h" #include "qemu/bitops.h" +#include "qemu/error-report.h" #include "qemu/queue.h" #include "qemu/rcu.h" #include "qemu/rcu_queue.h" @@ -470,7 +471,7 @@ static void __attribute__((constructor)) hv_init(void) qemu_mutex_init(&handlers_mutex); } -int hyperv_set_event_flag_handler(uint32_t conn_id, EventNotifier *notifier) +static int set_event_flag_handler(uint32_t conn_id, EventNotifier *notifier) { int ret; EventFlagHandler *handler; @@ -503,6 +504,30 @@ unlock: return ret; } +static bool process_event_flags_userspace; + +int hyperv_set_event_flag_handler(uint32_t conn_id, EventNotifier *notifier) +{ + if (!process_event_flags_userspace && + !kvm_check_extension(kvm_state, KVM_CAP_HYPERV_EVENTFD)) { + process_event_flags_userspace = true; + + warn_report("Hyper-V event signaling is not supported by this kernel; " + "using slower userspace hypercall processing"); + } + + if (!process_event_flags_userspace) { + struct kvm_hyperv_eventfd hvevfd = { + .conn_id = conn_id, + .fd = notifier ? event_notifier_get_fd(notifier) : -1, + .flags = notifier ? 0 : KVM_HYPERV_EVENTFD_DEASSIGN, + }; + + return kvm_vm_ioctl(kvm_state, KVM_HYPERV_EVENTFD, &hvevfd); + } + return set_event_flag_handler(conn_id, notifier); +} + uint16_t hyperv_hcall_signal_event(uint64_t param, bool fast) { uint16_t ret;