From nobody Tue May 14 09:12:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1561153206; cv=none; d=zoho.com; s=zohoarc; b=Y0ezQLmchudY8Yx34iNHITMW1oPcEptotz9ZKHZ+YKkfYF0hZzvlgDibUSpViINjZ2USburvNQz+/XxiilSiJ0Uh/MO7bxKLEJsVnSGL3CTpa5NGCYK2SBWZrOMioa//S1IK5hEjmZ63g6AR29v2LS1k2qTFJ1sj9LZ9U/l868Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1561153206; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=BKhjxNakY2sriO9ffRIWwPrKizCDiu8lCytoFLjkerg=; b=CDJWa+FvIzuynURawUR706VeEA+7ume0Ujs9H3p/0puv3ElJMkRTYoaXshLwfLfJc7YjujZ1G7Q2vCjp0Cfrm9601xlH/k6jssfBZtFM4jumqzXXvK8XtTIsMKNWvqW2AfG04WdHqmHoT+PWzVRiKuaqGpNWDS9SuQobXD4CIT4= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1561153206302943.5433019235854; Fri, 21 Jun 2019 14:40:06 -0700 (PDT) Received: from localhost ([::1]:38042 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1heRGP-0004B4-1n for importer@patchew.org; Fri, 21 Jun 2019 17:40:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47590) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1heRE6-0002sd-22 for qemu-devel@nongnu.org; Fri, 21 Jun 2019 17:37:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1heRE4-0001n6-3Q for qemu-devel@nongnu.org; Fri, 21 Jun 2019 17:37:41 -0400 Received: from aserp2120.oracle.com ([141.146.126.78]:39300) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1heRE1-0001lE-1Q for qemu-devel@nongnu.org; Fri, 21 Jun 2019 17:37:38 -0400 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x5LLZ7wo070584; Fri, 21 Jun 2019 21:37:34 GMT Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by aserp2120.oracle.com with ESMTP id 2t7809rety-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Jun 2019 21:37:34 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x5LLaZgl186242; Fri, 21 Jun 2019 21:37:34 GMT Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by aserp3020.oracle.com with ESMTP id 2t77yq5n83-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Jun 2019 21:37:33 +0000 Received: from abhmp0015.oracle.com (abhmp0015.oracle.com [141.146.116.21]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id x5LLbWWM020889; Fri, 21 Jun 2019 21:37:32 GMT Received: from Lirans-MBP.Home (/109.64.216.174) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 21 Jun 2019 14:37:32 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2018-07-02; bh=mbp56QULTjJn+kLkBsD2OXcTeD+xe6Pzz2lTqaOV5tU=; b=k66b4ThWEGUiZ51VOmx+QkWfNSqaqIK6mqzHBHvQmLcktUwQmXcTzYc49IJpLBa7nkqj UVGTy4JG6KwobuGFvxGKBZqdMSKDLPpFVf8WLCY6GMmjS9Ce7FV752M6kDdLyc3pDXCb FYpHif+FXzY5KY3cO2XU8fm5pn4+P4kqYI7NGWPm7mnJMvLtGQs1P88PBrEPtLGuzRxN 0I4mtQ3r40Jd7iDOLOoEBNKN6xEdVWnYtt7CUvtibY+PxgR+MUOPcOjRVoO//w0zYw2X rXkgIzsB3DOZ9VfVqoFDE4HeDKgslqhgJtRW9gRl+xDtNzZnLSRutRGx3FpO1Ie9Qu1j bQ== From: Liran Alon To: qemu-devel@nongnu.org Date: Sat, 22 Jun 2019 00:37:11 +0300 Message-Id: <20190621213712.16222-2-liran.alon@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190621213712.16222-1-liran.alon@oracle.com> References: <20190621213712.16222-1-liran.alon@oracle.com> MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9295 signatures=668687 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=1 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1906210164 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9295 signatures=668687 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1906210164 Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by aserp2120.oracle.com id x5LLZ7wo070584 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] X-Received-From: 141.146.126.78 Subject: [Qemu-devel] [PATCH 1/2] target/i386: kvm: Block migration on vCPU exposed with SVM when kernel lacks caps to save/restore nested state X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: maran.wilson@oracle.com, dgilbert@redhat.com, Liran Alon , pbonzini@redhat.com, Karl Heubaum Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Commit 18ab37ba1cee ("target/i386: kvm: Block migration for vCPUs exposed w= ith nested virtualization") was originally suppose to block migration for vCPUs exposed with nested vir= tualization, either Intel VMX or AMD SVM. However, during merge to upstream, commit was changed such that= it doesn't even compile... This was done unintentionally in an attempt to modify submitted patch-serie= s such that commit 12604092e26c ("target/i386: kvm: Add nested migration blocker only when ker= nel lacks required capabilities") will only block migration of vCPU exposed with VMX but still allow migratio= n of vCPU exposed with SVM. However, since QEMU commit 75d373ef9729 ("target-i386: Disable SVM by defau= lt in KVM mode"), an AMD vCPU that is virtualized by KVM doesn=E2=80=99t expose SVM by defaul= t, even if you use "-cpu host". Therefore, it is unlikely that vCPU expose SVM CPUID flag when user is not = running an SVM workload inside guest. Therefore, change code back to original intent to block migration in case of vCPU exposed with SVM if kernel does not support required capabilities to save/restore nested-state. Fixes: 12604092e26c ("target/i386: kvm: Add nested migration blocker only w= hen kernel lacks required capabilities") Reviewed-by: Mark Kanda Reviewed-by: Karl Heubaum Signed-off-by: Liran Alon --- target/i386/cpu.h | 10 ++++++++++ target/i386/kvm.c | 2 +- target/i386/machine.c | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 93345792f4cb..cbe904beeb25 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1867,6 +1867,16 @@ static inline bool cpu_has_vmx(CPUX86State *env) return env->features[FEAT_1_ECX] & CPUID_EXT_VMX; } =20 +static inline bool cpu_has_svm(CPUX86State *env) +{ + return env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM; +} + +static inline bool cpu_has_nested_virt(CPUX86State *env) +{ + return (cpu_has_vmx(env) || cpu_has_svm(env)); +} + /* fpu_helper.c */ void update_fp_status(CPUX86State *env); void update_mxcsr_status(CPUX86State *env); diff --git a/target/i386/kvm.c b/target/i386/kvm.c index e4b4f5756a34..c2bae6a3023a 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -1640,7 +1640,7 @@ int kvm_arch_init_vcpu(CPUState *cs) !!(c->ecx & CPUID_EXT_SMX); } =20 - if (cpu_has_vmx(env) && !nested_virt_mig_blocker && + if (cpu_has_nested_virt(env) && !nested_virt_mig_blocker && ((kvm_max_nested_state_length() <=3D 0) || !has_exception_payload)= ) { error_setg(&nested_virt_mig_blocker, "Kernel do not provide required capabilities for " diff --git a/target/i386/machine.c b/target/i386/machine.c index 851b249d1a39..f4d502386df4 100644 --- a/target/i386/machine.c +++ b/target/i386/machine.c @@ -233,7 +233,7 @@ static int cpu_pre_save(void *opaque) =20 #ifdef CONFIG_KVM /* Verify we have nested virtualization state from kernel if required = */ - if (kvm_enabled() && cpu_has_vmx(env) && !env->nested_state) { + if (kvm_enabled() && cpu_has_nested_virt(env) && !env->nested_state) { error_report("Guest enabled nested virtualization but kernel " "does not support saving of nested state"); return -EINVAL; --=20 2.20.1 From nobody Tue May 14 09:12:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=oracle.com ARC-Seal: i=1; a=rsa-sha256; t=1561153550; cv=none; d=zoho.com; s=zohoarc; b=WRaGiVNb6BL5NXYwEWl2iQwkdiI5mxOjuCVzaM9XgXIB4fxXxAUNqgPrEXIrsnqGN3tZtGvBdHkZyLYkFkcw8LYqcmo8QEFwQF9+2MX9Y/yiBy4GsYLtCo4WJJMIGErqUM4gQujb+uiXh5UyMEeCloygEOC1DrMmddIg+gBrm9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1561153550; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=Wh431tg7vPDPfhFil9wchrYih7rygjCi4hi/dLVlj3E=; b=dTYm18w3PWB+4Wt6Q4tBIflWfQjrNeAIK097vVtCNgRkvoMhRjJayDUU6KPCIc1rrKHDSuRWdzBzp0dvKCM0gOiTETw86ka5x7lDORgW7HQEKwTRLLdJ+Ugn1zeGQaHeq+q5pW3+Dlxm/mCm9dsfNNTd8tqFbE9GPTRvjlvlPwY= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1561153550160337.06512294791617; Fri, 21 Jun 2019 14:45:50 -0700 (PDT) Received: from localhost ([::1]:38060 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1heRLr-0006Wa-QX for importer@patchew.org; Fri, 21 Jun 2019 17:45:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47618) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1heREB-0002sm-Km for qemu-devel@nongnu.org; Fri, 21 Jun 2019 17:37:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1heRE6-0001on-1c for qemu-devel@nongnu.org; Fri, 21 Jun 2019 17:37:44 -0400 Received: from userp2120.oracle.com ([156.151.31.85]:45920) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1heRE4-0001m7-3Q for qemu-devel@nongnu.org; Fri, 21 Jun 2019 17:37:41 -0400 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x5LLYddq168769; Fri, 21 Jun 2019 21:37:37 GMT Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by userp2120.oracle.com with ESMTP id 2t7809rfg7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Jun 2019 21:37:37 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x5LLbKGd127102; Fri, 21 Jun 2019 21:37:37 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserp3030.oracle.com with ESMTP id 2t7rdxy06g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 21 Jun 2019 21:37:36 +0000 Received: from abhmp0015.oracle.com (abhmp0015.oracle.com [141.146.116.21]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id x5LLbZe0002365; Fri, 21 Jun 2019 21:37:35 GMT Received: from Lirans-MBP.Home (/109.64.216.174) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 21 Jun 2019 14:37:35 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=corp-2018-07-02; bh=Wh431tg7vPDPfhFil9wchrYih7rygjCi4hi/dLVlj3E=; b=ngPjJ45kaHmomrmcJG1lABgHqayYSSXCa8ANMb74mkijwFrDmO9DhskhQ8MMo/Z39jk4 e3/+0VBpksQwkQVGEFZhhqg4bcB/iJAaVLW6ppxOCN0jjAxvkdUWt0Q/ytapegCUUn1F kzoiiPBF5zAk9phtqPmcekvTe7zsNypyEAp0qPPRxsjsj2/bd13SzHXbDRSRnvyMyHVI 5zaQE4ZJlJwa5pmxZhuJHVP76V2VRFmnWEJ2Xh3i0aXACvmgOqZjPCtsmwP2zV4qXkMh 0Z5BeP4jFqO0CSVdCXPq6dhP1LImPYAO5kBgzRxMsEc2KEAUn4m0Qnewpao6KPGkm4s/ lA== From: Liran Alon To: qemu-devel@nongnu.org Date: Sat, 22 Jun 2019 00:37:12 +0300 Message-Id: <20190621213712.16222-3-liran.alon@oracle.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190621213712.16222-1-liran.alon@oracle.com> References: <20190621213712.16222-1-liran.alon@oracle.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9295 signatures=668687 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=1 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1906210164 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9295 signatures=668687 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1906210164 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] X-Received-From: 156.151.31.85 Subject: [Qemu-devel] [PATCH 2/2] target/i386: kvm: Init nested-state in case of vCPU exposed with SVM X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: maran.wilson@oracle.com, dgilbert@redhat.com, Liran Alon , pbonzini@redhat.com, Karl Heubaum Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Even though current most upstream kernel does not support save/restore of nested-state in case of AMD SVM, prepare QEMU code to init relevant nested-state struct fields. Reviewed-by: Mark Kanda Reviewed-by: Karl Heubaum Signed-off-by: Liran Alon --- target/i386/kvm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/target/i386/kvm.c b/target/i386/kvm.c index c2bae6a3023a..be192e54a80b 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -1714,13 +1714,14 @@ int kvm_arch_init_vcpu(CPUState *cs) =20 env->nested_state->size =3D max_nested_state_len; =20 - if (IS_INTEL_CPU(env)) { + if (cpu_has_vmx(env)) { struct kvm_vmx_nested_state_hdr *vmx_hdr =3D &env->nested_state->hdr.vmx; - env->nested_state->format =3D KVM_STATE_NESTED_FORMAT_VMX; vmx_hdr->vmxon_pa =3D -1ull; vmx_hdr->vmcs12_pa =3D -1ull; + } else if (cpu_has_svm(env)) { + env->nested_state->format =3D KVM_STATE_NESTED_FORMAT_SVM; } } =20 --=20 2.20.1