From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757233AbcC2MVg (ORCPT ); Tue, 29 Mar 2016 08:21:36 -0400 Received: from mail-am1on0137.outbound.protection.outlook.com ([157.56.112.137]:53829 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1757132AbcC2MVc (ORCPT ); Tue, 29 Mar 2016 08:21:32 -0400 X-Greylist: delayed 5593 seconds by postgrey-1.27 at vger.kernel.org; Tue, 29 Mar 2016 08:21:31 EDT Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=virtuozzo.com; Date: Tue, 29 Mar 2016 13:48:04 +0300 From: Roman Kagan To: Paolo Bonzini CC: , , Andrey Smetanin Subject: Re: [PATCH] KVM: Hyper-V: do not do hypercall userspace exits if SynIC is disabled Message-ID: <20160329104803.GA15614@rkaganb.sw.ru> Mail-Followup-To: Roman Kagan , Paolo Bonzini , linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Andrey Smetanin References: <1459244096-7213-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <1459244096-7213-1-git-send-email-pbonzini@redhat.com> User-Agent: Mutt/1.5.24 (2015-08-30) X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: HE1PR03CA0022.eurprd03.prod.outlook.com (10.163.170.160) To DB5PR08MB0790.eurprd08.prod.outlook.com (10.164.42.152) X-MS-Office365-Filtering-Correlation-Id: 3a7e2c01-a739-477c-a737-08d357bfa184 X-Microsoft-Exchange-Diagnostics: 1;DB5PR08MB0790;2:pIMIKFg+JANmDUYhRRLMIipon8jd+CFtn10q39vnSR1u8+IlM1X26TEfpWlcRJMCkQGEwRLIhFOxaXbNUUk+y7tmcV/tb+ScPED0DA/B6zo7qycaWcR9VNXsGSdRfV14BM1Pj3rLM3gVflXmxmdcbz3XovIz7lnLPd7LLS3cgd+9jb8X42QoTQpuZ5T2OEnx;3:alqpyZQEEIHCLD4AigClhe/P0AzhcXrQ+3B5XWIpjP6Gfbyx6ugSi219MW4BlhAtmyqh/57rJNoEQ7DwdSDM4x0F2FS++YJ/yfcWKVHpvrp3c5eKFgCEd2gT1PbhMgvg;25:nWWZdBI29dSr4bjQrf633zs6vfoP0EeuL3M1QogJf8ads6+1+ZLkiSjJNI5Ae5iKYleL3s7JxZ8uTR+38FluH11RjVubRABxLtX9nsib0c7mZk8GraZ09o1zxMpaCjsyUtr40h6vt54HT5O4AqbLPuhWHWHsM2za7HYNkUadxoVWRxmpYoKFK21JugCiNBwqbTj0h+ro3cUepRFIef4wbjZOnNUSRwbfMpLny7cZc7Osarxu6BLmd+isrWOpZz5/G+4m/3oqA8+N4n6q9AhjZhizeDzXYKnz7CMXcL69WxjtLr/vZd2lHt0uv0N8tFA8QxpSmRR3zrDNaOJeIIl9gD6FzT6dALRXzZHaMJcDJrsfUW6XMJlBfUKF16Nse6Uv3mYCu/xAM/fWToGwfaO8zSo6pstd1F20RDAUp88bgga8TTz1gGNGR1SdZNSWoQ0ZCyZcahABIFdmPhnRTzkUEDSYRNlMZmITdDCRNKM2hZdWLVOx47TeSiNhQyumXgRb+USQd89Situtz2ZGPlgzsy8FkHytbgNYyatny3CWgxg= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB5PR08MB0790; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040046)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041046)(6043046);SRVR:DB5PR08MB0790;BCL:0;PCL:0;RULEID:;SRVR:DB5PR08MB0790; X-Microsoft-Exchange-Diagnostics: 1;DB5PR08MB0790;4:jm+JrDrQfYPGDk9hK2HTIgV0Med6pxs9SOxDI5Rga6A9yHcVflvVoCWdffeDpsu13ndUO4AW3rWSwPcOcOwbIThOFLrbsL7oz1+CZ/yIWcg9E1XGb33eJXjInBpwUBfg5DhVjL2J/2QHDCuk5LHhXJQd8DTc/76tcJCAmoiFVgnjkaSTBfzNNbfcO4PQIem60ts9lUgc9kGD8wicEKEJ9yNHPGYu7APkQm5tZ8LQYl6aswVQ62v5L5HfoU8g+17qAX7j4DUSa2JgWLx9sZUx+v/XkS/z0yW/VacrWpjqpZuCNeyKhL5Sk4oYlnk8UOUQdtH/Xaw/W6GlUo4MhtwKWOgij+dn3wXgFxcuTglqfihBQHZidJJpOIS/8f8IWGJwz3IqM/1w4BJmq0isCIh97Sph9Ibv8hbuyHCY6h68KyQ= X-Forefront-PRVS: 0896BFCE6C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(164054003)(24454002)(50986999)(76176999)(81166005)(54356999)(50466002)(36756003)(2950100001)(19580405001)(33656002)(19580395003)(586003)(4326007)(83506001)(47776003)(86362001)(46406003)(66066001)(107886002)(189998001)(5004730100002)(53416004)(42186005)(77096005)(4001350100001)(110136002)(97756001)(5008740100001)(1076002)(23726003)(6116002)(2906002)(3846002)(92566002)(1096002)(4001430100002)(30126002);DIR:OUT;SFP:1102;SCL:1;SRVR:DB5PR08MB0790;H:rkaganb.sw.ru;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB5PR08MB0790;23:NCExvuSYwMLVt5Z18LelC69mbAr0qCNpBmWiMP1dP?= =?us-ascii?Q?nJ4ksKVR3rgrmlQQl7bucDJq5O5CHyn0Otri3im1x444NduKEIb42Tq4c8o9?= =?us-ascii?Q?0b5ijHpWLoxTVKvjzz2y8jxXZZnuaRqRiYfKQxqoXCfw0BkoqtFJ2SeHKDW/?= =?us-ascii?Q?66Vakz56oAgxjuDSIp2nmXdVxa0OQjK3ARNABZPfWLsuVYqgtkjg85jiVzHu?= =?us-ascii?Q?Ei/7LcF/Ahi0Dfvj0KVxrxV9SHQCrSjipCOMfIlbsmJl+HJdjduQRK6ljcQL?= =?us-ascii?Q?5PBPgneqf6qZeP1xFDP7NYSsm3vPiJW7wHwItOiVtsWVdmWtJk4xolfcf8x1?= =?us-ascii?Q?mbwKp0tZD3lsn5UzNjFKkWbbJ8Ls7CzGL5U9CDP2LjCZrq/yQM/lHxTLjEcS?= =?us-ascii?Q?o3y0/nAkRmnjpkk8EB91/tZbiwYfBjw8Zs/95s5DTGakpmLAJr65PobsBqEw?= =?us-ascii?Q?uBUHtdVXgUDTnYbcxguPQfi9TqarEnSJT4GCFVvXyjTYscURQFTlbVDKUI5L?= =?us-ascii?Q?nQG+6QGpolmHB9auPIySFEcFbmELYRDxR2+Zoc2k6EWStWwCC1/qzIR+dcQt?= =?us-ascii?Q?77LINoJmOlvRfhNU89MRZspgoXfgv5eo9oB2jYmvBJshEdk3tnAFx0amxBzm?= =?us-ascii?Q?E3izwCA8CRWdBOhLwEPA5jMjrLlSm9t0gvO+z0Q9Dc8pUmxl8gVxlJlL4gC/?= =?us-ascii?Q?O8K7nPwB74gWyxbn+Yw7sFAy3l5RQRLqfpqJVkB0JZ6G8XuZnYjFKIaKkrTB?= =?us-ascii?Q?OKJN2Vk9dXTJOeIclUpl0wlSDDT7+MYSiqHNUIEitUMYlehxY0P8Jcxcd3Z9?= =?us-ascii?Q?/lWnh79WxwGQTEH+MuguksicNimRCtfAInZdqfZA/aOwMFxUw1flD32EdWJx?= =?us-ascii?Q?WI7F0BEqsQvgy+i6w4JgqTYHPqMnx4r6JjgSNnrEcdzU2SFSKDHFEXkLcsi1?= =?us-ascii?Q?oVieWGfsH88ZYQV//qYMq5GLvGc1eIpjznHrvjoM+RhIEB8/LugFl2vEbIcE?= =?us-ascii?Q?dHRCka4mL30HQHC2C+3+f/DghIyb8WPWoh/TGLNq8PPjg1X+WgO7sXDn2Cjw?= =?us-ascii?Q?4H1sEceIfNQEu7r930KUifURUsq?= X-Microsoft-Exchange-Diagnostics: 1;DB5PR08MB0790;5:7/vy7y3S8aPDWNXYTWXtVuRa5cOeLu5rh2I3cxRHjnyMDicO2EjPz+SQThCyiNPG8MV3ADJlgnyQxVXAXACg+eZxKnqv4XpvzVcQl8FYgae+m9Osmcmsi+m26KIm+Tid8mQVXBtNHPg6rfVjlThacw==;24:oUJGvVxIXJcpXKjlZw1pt91Ia9mZ1T2G7CIFaTLjj8OIhIBV77UA96YPM7HqSuHdE3yzkO3BCNr5/G2A334nu7MnBwhYN5AvS1HsDdtk80k=;20:Eaxr0o/BWrV9dNrAYB2XewAMxcKj9ehn+blLJVTNBo4jrHgTn2qA7UjSG121DBOMrlSJqqEhD8DY3xxzdxwOT6rb5p2RAFYokfzYT9JKeN62cZXiq5O8rYfKzggJzwWuqi3G29she2yjAwABYlb9YGI+vc5ur2rvFT1XMKowbGw= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2016 10:48:14.0973 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR08MB0790 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 29, 2016 at 11:34:56AM +0200, Paolo Bonzini wrote: > If SynIC is disabled, there is nothing that userspace can do to > handle these exits; on the other hand, userspace probably will > not know about KVM_EXIT_HYPERV_HCALL and complain about it or > even exit. Just prevent anything bad from happening by handling > the hypercall in KVM and returning an "invalid hypercall" code. I wonder if this has been encountered in real life or just found by code inspection? > Fixes: 83326e43f27e9a8a501427a0060f8af519a39bb2 > Cc: Andrey Smetanin > Signed-off-by: Paolo Bonzini > --- > arch/x86/kvm/hyperv.c | 17 ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) > > diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c > index b960d9ea171f..9e2becd20a59 100644 > --- a/arch/x86/kvm/hyperv.c > +++ b/arch/x86/kvm/hyperv.c > @@ -1237,14 +1237,17 @@ int kvm_hv_hypercall(struct kvm_vcpu *vcpu) > break; > case HVCALL_POST_MESSAGE: > case HVCALL_SIGNAL_EVENT: > - vcpu->run->exit_reason = KVM_EXIT_HYPERV; > - vcpu->run->hyperv.type = KVM_EXIT_HYPERV_HCALL; > - vcpu->run->hyperv.u.hcall.input = param; > - vcpu->run->hyperv.u.hcall.params[0] = ingpa; > - vcpu->run->hyperv.u.hcall.params[1] = outgpa; > - vcpu->arch.complete_userspace_io = > + if (vcpu_to_synic(vcpu)->active) { > + vcpu->run->exit_reason = KVM_EXIT_HYPERV; > + vcpu->run->hyperv.type = KVM_EXIT_HYPERV_HCALL; > + vcpu->run->hyperv.u.hcall.input = param; > + vcpu->run->hyperv.u.hcall.params[0] = ingpa; > + vcpu->run->hyperv.u.hcall.params[1] = outgpa; > + vcpu->arch.complete_userspace_io = > kvm_hv_hypercall_complete_userspace; > - return 0; > + return 0; > + } > + /* fall through */ I'd rather put it the other way around, with explicit error path and a comment: /* don't bother userspace if it has no way to handle it */ if (!vcpu_to_synic(vcpu)->active) { res = HV_STATUS_INVALID_HYPERCALL_CODE; break; } but that's just nitpicking, so Reviewed-by: Roman Kagan [ Andrey has left the company so I'm not sure he even receives the messages sent to this address ] Thanks, Roman.