From nobody Wed Apr 24 22:43:00 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1584731337; cv=none; d=zohomail.com; s=zohoarc; b=et7HoyPvjk9bcKtOg9UbkGOkkQrXb+rPC++Q3ffYQ9Euhd3yJvRNsjKCTgJDcBeEzai8hZ0eeY1fpOSL8ORXKEHYWXkRzvvDzoq3KRPOhtBtU6USwTNv73JUQn4LRf+Lx5NYgAqj1fKkqhTiTfF93mjmJph9Mbf8/20n4Zae0pc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584731337; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HrbQCbAxJ9soN4moNOk+BpdwisdWH/7gOVqpDqjVago=; b=ezg5X3NuSLV+0ptq5YBu6IFPITp36VEZAgOrlpulbvCU1ejapAvTExa14xiUrGOYnPvq7uBZU19X4uXNKhyupbIQYMCc+eMEHnjfyoL2D7P/ygOG6Mf+sKJI/xo8azgB2kBW7YcBs4svQH06Nbbwg6h4Zt1zkve5ZmsWIQkSKHY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1584731337490210.14644582579183; Fri, 20 Mar 2020 12:08:57 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jFN06-0000RE-Qm; Fri, 20 Mar 2020 19:08:10 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jFN06-0000R9-Bk for xen-devel@lists.xenproject.org; Fri, 20 Mar 2020 19:08:10 +0000 Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 21d5fbc8-6ade-11ea-b34e-bc764e2007e4; Fri, 20 Mar 2020 19:08:07 +0000 (UTC) X-Inumbo-ID: 21d5fbc8-6ade-11ea-b34e-bc764e2007e4 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1584731287; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=RP4rtLs2r1/hACbV5f2YEojJxFbS+HMyZVX7ZMoouVY=; b=azWBVHLPEPZSIWo9F6NB2VUfA6zqCsW3pUp2gNugnz+gqwgSmfzTxWKu SkovFKqZBjfhJ8P43CfISxWKzKVT/YACMmwu/PrroUSsVwPaCcBzUhjRG 22i+bh/TD8XbKJS+sNr55vdk87Id11AKtVGXHdg34yQVM9APsT0pPW9aa 0=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=roger.pau@citrix.com; spf=Pass smtp.mailfrom=roger.pau@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender authenticity information available from domain of roger.pau@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa2.hc3370-68.iphmx.com: domain of roger.pau@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: +ULpfRt5UzRGY7BCnBhYzcP7mz0QVonIK5iboMJlTM55wD1+9ISvDoP5f1Kb+6E8dp2sdZRDg1 rCHkUkAZMPZwKyMNNc2LEIaBA4s8V42H65dW8HD4lqoYg/PrGs3krYEWHCDpIeHFczS+7QLvrW U17pWV/aLLqi5KKcalWwNfJQuvkknvLY7IMJauGB41wy08tHdVhmmQnRm32OBEr9CntUqk4o3O 9N5j0GAqKbzAm9IX4v6SVom9T7Q13bpgh9bPfaW4hzdzzTNAaQ5jiMSg0JlU5gvuCEqSB4+WzX PPU= X-SBRS: 2.7 X-MesageID: 14374453 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.72,285,1580792400"; d="scan'208";a="14374453" From: Roger Pau Monne To: Date: Fri, 20 Mar 2020 20:07:35 +0100 Message-ID: <20200320190737.42110-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200320190737.42110-1-roger.pau@citrix.com> References: <20200320190737.42110-1-roger.pau@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 1/3] Revert "x86/vvmx: fix virtual interrupt injection when Ack on exit control is used" X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Kevin Tian , Jun Nakajima , Wei Liu , Andrew Cooper , Jan Beulich , Roger Pau Monne Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) This reverts commit f96e1469ad06b61796c60193daaeb9f8a96d7458. The commit is wrong, as the whole point of nvmx_update_apicv is to update the guest interrupt status field when the Ack on exit VMEXIT control feature is enabled. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Kevin Tian --- xen/arch/x86/hvm/vmx/vvmx.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index f049920196..1b8461ba30 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -1456,12 +1456,7 @@ static void virtual_vmexit(struct cpu_user_regs *reg= s) /* updating host cr0 to sync TS bit */ __vmwrite(HOST_CR0, v->arch.hvm.vmx.host_cr0); =20 - if ( cpu_has_vmx_virtual_intr_delivery && - /* - * Only inject the vector if the Ack on exit bit is not set, else= the - * interrupt will be signaled in the vmcs VM_EXIT_INTR_INFO field. - */ - !(get_vvmcs(v, VM_EXIT_CONTROLS) & VM_EXIT_ACK_INTR_ON_EXIT) ) + if ( cpu_has_vmx_virtual_intr_delivery ) nvmx_update_apicv(v); =20 nvcpu->nv_vmswitch_in_progress =3D 0; --=20 2.25.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel From nobody Wed Apr 24 22:43:00 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1584731336; cv=none; d=zohomail.com; s=zohoarc; b=jdrHmkk/GjZN/U0ZE+WSzrv4Euo0KA2QPG0wWUYu35heAixGo4KKoZS991Nebh7uHa7lzCOpHVDSnNaxKVs55NsOgAkpFIPFcpbp8dWzyhKN34ebollO9m5lo3Qu/n9XSA3mRcRCZSuF5suvxMfGUk1ITeAv+6l0CFsSO4I3WWU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584731336; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=h8bxCB1R5C0w1PS/WGeBoEAveOp8qMPjkjlqcGkQtcU=; b=ax5mHQ8XEXLlqxrl8fKkK87//j9iSQroA3zjY8v8cgJ3/ALeftXt4f8faw+7usmFLAy1QIOY1ZfybZltZy5iLDD0OqblI2b3SLGEoMKOE8HXPsjK7ohUiInmP4YCuIc8RUqdsVdgvqtrVDqOf8g24GQi0NqS6CtbWuxwAdIGhCs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 158473133627857.33992963080482; Fri, 20 Mar 2020 12:08:56 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jFN0C-0000Sa-48; Fri, 20 Mar 2020 19:08:16 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jFN0B-0000SQ-C1 for xen-devel@lists.xenproject.org; Fri, 20 Mar 2020 19:08:15 +0000 Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 232a7238-6ade-11ea-b34e-bc764e2007e4; Fri, 20 Mar 2020 19:08:09 +0000 (UTC) X-Inumbo-ID: 232a7238-6ade-11ea-b34e-bc764e2007e4 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1584731290; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5szMN6eLyIRQyrcbotjLy/JLjgHXMPVpj2Am1OM3ueQ=; b=G0/Xb/edTW1VzD7JcT9Q0wqWxHTfUdxIqVe0jbr6da0eI5mid4fCG5yf SQziSovKeJmM4Sgkuj1drLEsTe9/NO3VWHLxCpPtfxJU9jIQWtjW9IqVa OMjWXG5gMMU3Yh3Sey/R5qT97fz3JMBH40NtR5feQzmrI7lOE5AG29uH2 I=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=roger.pau@citrix.com; spf=Pass smtp.mailfrom=roger.pau@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: None (esa3.hc3370-68.iphmx.com: no sender authenticity information available from domain of roger.pau@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa3.hc3370-68.iphmx.com: domain of roger.pau@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa3.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: /CGnllzdDdPIXxzmv+3CDFRPOiZ7Z0mjRf4Q4+o06QkU13pPCiupy/9W5skuIZpcqloihrvxia k1VEBHeMByJ5JqKvCSy6xPvO9FEtMm2t+17aK+6rDlG7MYckBoxbXENS38QYtYflRKx3MBhyM+ PhT86OALuJ7cHzgkTHVvzeMw4h3eKjy6sqw1lvedQoRg4eMuGLMpVGXrCo0odR8ZJBZx+b0HIK CVs4WXcgUSamH4Wu2TbsBvaC2zxULUEoVDDvmzk12WpoYP+LYOe5pvLaDHyBjRTa13ZJfF7ECb jNg= X-SBRS: 2.7 X-MesageID: 14352788 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.72,285,1580792400"; d="scan'208";a="14352788" From: Roger Pau Monne To: Date: Fri, 20 Mar 2020 20:07:36 +0100 Message-ID: <20200320190737.42110-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200320190737.42110-1-roger.pau@citrix.com> References: <20200320190737.42110-1-roger.pau@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 2/3] x86/nvmx: clarify and fix usage of nvmx_update_apicv X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Kevin Tian , Jun Nakajima , Wei Liu , Andrew Cooper , Jan Beulich , Roger Pau Monne Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) The current usage of nvmx_update_apicv is not clear: it is deeply intertwined with the Ack interrupt on exit VMEXIT control. The code in nvmx_update_apicv should update the SVI (in service interrupt) field of the guest interrupt status only when the Ack interrupt on exit is set, as it is used to record that the interrupt being serviced is signaled in a vmcs field, and hence hasn't been injected as on native. It's important to record the current in service interrupt on the guest interrupt status field, or else further interrupts won't respect the priority of the in service one. While clarifying the usage make sure that the SVI is only updated when Ack on exit is set and the nested vmcs interrupt info field is valid. Or else a guest not using the Ack on exit feature would loose interrupts as they would be signaled as being in service on the guest interrupt status field but won't actually be recorded on the interrupt info vmcs field, neither injected in any other way. Signed-off-by: Roger Pau Monn=C3=A9 --- xen/arch/x86/hvm/vmx/vvmx.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index 1b8461ba30..180d01e385 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -1383,7 +1383,7 @@ static void nvmx_update_apicv(struct vcpu *v) { struct nestedvmx *nvmx =3D &vcpu_2_nvmx(v); unsigned long reason =3D get_vvmcs(v, VM_EXIT_REASON); - uint32_t intr_info =3D nvmx->intr.intr_info; + unsigned long intr_info =3D get_vvmcs(v, VM_EXIT_INTR_INFO); =20 if ( reason =3D=3D EXIT_REASON_EXTERNAL_INTERRUPT && nvmx->intr.source =3D=3D hvm_intsrc_lapic && @@ -1399,6 +1399,15 @@ static void nvmx_update_apicv(struct vcpu *v) ppr =3D vlapic_set_ppr(vlapic); WARN_ON((ppr & 0xf0) !=3D (vector & 0xf0)); =20 + /* + * SVI must be updated when the interrupt has been signaled using = the + * Ack on exit feature, or else the currently in-service interrupt + * won't be respected. + * + * Note that this is specific to the fact that when doing a VMEXIT= an + * interrupt might get delivered using the interrupt info vmcs fie= ld + * instead of being injected normally. + */ status =3D vector << VMX_GUEST_INTR_STATUS_SVI_OFFSET; rvi =3D vlapic_has_pending_irq(v); if ( rvi !=3D -1 ) --=20 2.25.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel From nobody Wed Apr 24 22:43:00 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1584731338; cv=none; d=zohomail.com; s=zohoarc; b=Lusgb1jRDw1JzRz6YnRwCDvjqGr7lHMmv+VSU6f9AKweX9VsE4Svc2+ip8g3zrkaJAJgrE314JrjCNLYEcFbZpWSTu1VjH9SCm2zJPOeeaKOjpPjw9h5lHa2iiojBQS3kPrik+xl5DuKtMndkbRs5++WukAJWiqPRpAHcMhOFcE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1584731338; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=MUaIHGOw9Ma7emjkhxghCfekn8AOF1yWboK9KUNcw1g=; b=fl2y1ju8Mohcul1X50RsPtE2pZcn3U1WvGh79iP7EGUhNuMnCVn9tkb6fu53zU3bHP8c8NmlmqBIYRnGf4aiOwnS0QLuup41Cf+na70EPo/xFAghAgpZSXpM+YUyEXCJEbPwbj0JgZ2TGM7auTtS5StWZjVzB5aaIZtvosKFBhc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1584731338414317.3834007586661; Fri, 20 Mar 2020 12:08:58 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jFN0H-0000Ua-I8; Fri, 20 Mar 2020 19:08:21 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jFN0G-0000UH-CW for xen-devel@lists.xenproject.org; Fri, 20 Mar 2020 19:08:20 +0000 Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 24fc0be4-6ade-11ea-b34e-bc764e2007e4; Fri, 20 Mar 2020 19:08:12 +0000 (UTC) X-Inumbo-ID: 24fc0be4-6ade-11ea-b34e-bc764e2007e4 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1584731292; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8QDjjrWEgy9SU03s7eC+s3JX/ZzOX/m1h5qAZAUqK44=; b=Qegri3+J+dacIgM/w4Qcmt0IB2Vehi5VykyaPAqWVEbQYD1LFa79vE78 dp6yapph73LmFrw2fPFXe5gd/EGeQfzPy1n+7SOVLYbnMXno2Apdp6115 EqvYiWSd4YQdJFVyTUzJpyzvRuS4G5b7Sas3exwLf+U/XxUQ4RUC/zoCO U=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=roger.pau@citrix.com; spf=Pass smtp.mailfrom=roger.pau@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender authenticity information available from domain of roger.pau@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa2.hc3370-68.iphmx.com: domain of roger.pau@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: pzf3WItOrVYWiQT41cnOg2kLdT9S61GmKbgIs2KSP0CPNmXKMu07kXJaa/DhDs4JVba4U97bsG sPZAt8hWJsKHeOlK7/ZicAJKQExIWZjaAxNfZ0jY5fZJq1kH9sVcij64OpwkftUq/xgNzZX55o u4g0eAtRp7FWCID197c7pY+I1Hkf7EFhQW8dM0LBaJSYD781Px+duizO2eg75M0xoNuPyUWquM M/ZKhioORz5jcz3o+oncoiDqnYTLNvsfsQIU6W6hlm7bJb8EJlaVyshwDoK47d6Ea6zzDDvmE3 zxE= X-SBRS: 2.7 X-MesageID: 14374458 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.72,285,1580792400"; d="scan'208";a="14374458" From: Roger Pau Monne To: Date: Fri, 20 Mar 2020 20:07:37 +0100 Message-ID: <20200320190737.42110-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200320190737.42110-1-roger.pau@citrix.com> References: <20200320190737.42110-1-roger.pau@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 3/3] x86/nvmx: update exit bitmap on vmexit X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Kevin Tian , Jun Nakajima , Wei Liu , Andrew Cooper , Jan Beulich , Roger Pau Monne Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Current code in nvmx_update_apicv set the guest interrupt status field but doesn't update the exit bitmap, which can cause issues of lost interrupts on the L1 hypervisor if vmx_intr_assist gets short-circuited by nvmx_intr_intercept returning true. Extract the code to update the exit bitmap from vmx_intr_assist into a helper and use it in nvmx_update_apicv when updating the guest interrupt status field. Signed-off-by: Roger Pau Monn=C3=A9 --- xen/arch/x86/hvm/vmx/intr.c | 21 +++++++++++++-------- xen/arch/x86/hvm/vmx/vvmx.c | 1 + xen/include/asm-x86/hvm/vmx/vmx.h | 2 ++ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/xen/arch/x86/hvm/vmx/intr.c b/xen/arch/x86/hvm/vmx/intr.c index 49a1295f09..000e14af49 100644 --- a/xen/arch/x86/hvm/vmx/intr.c +++ b/xen/arch/x86/hvm/vmx/intr.c @@ -224,6 +224,18 @@ static int nvmx_intr_intercept(struct vcpu *v, struct = hvm_intack intack) return 0; } =20 +void vmx_sync_exit_bitmap(struct vcpu *v) +{ + const unsigned int n =3D ARRAY_SIZE(v->arch.hvm.vmx.eoi_exit_bitmap); + unsigned int i; + + while ( (i =3D find_first_bit(&v->arch.hvm.vmx.eoi_exitmap_changed, n)= ) < n ) + { + clear_bit(i, &v->arch.hvm.vmx.eoi_exitmap_changed); + __vmwrite(EOI_EXIT_BITMAP(i), v->arch.hvm.vmx.eoi_exit_bitmap[i]); + } +} + void vmx_intr_assist(void) { struct hvm_intack intack; @@ -318,7 +330,6 @@ void vmx_intr_assist(void) intack.source !=3D hvm_intsrc_vector ) { unsigned long status; - unsigned int i, n; =20 /* * intack.vector is the highest priority vector. So we set eoi_exit= _bitmap @@ -379,13 +390,7 @@ void vmx_intr_assist(void) intack.vector; __vmwrite(GUEST_INTR_STATUS, status); =20 - n =3D ARRAY_SIZE(v->arch.hvm.vmx.eoi_exit_bitmap); - while ( (i =3D find_first_bit(&v->arch.hvm.vmx.eoi_exitmap_changed, - n)) < n ) - { - clear_bit(i, &v->arch.hvm.vmx.eoi_exitmap_changed); - __vmwrite(EOI_EXIT_BITMAP(i), v->arch.hvm.vmx.eoi_exit_bitmap[= i]); - } + vmx_sync_exit_bitmap(v); =20 pt_intr_post(v, intack); } diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c index 180d01e385..e041ecc115 100644 --- a/xen/arch/x86/hvm/vmx/vvmx.c +++ b/xen/arch/x86/hvm/vmx/vvmx.c @@ -1414,6 +1414,7 @@ static void nvmx_update_apicv(struct vcpu *v) status |=3D rvi & VMX_GUEST_INTR_STATUS_SUBFIELD_BITMASK; =20 __vmwrite(GUEST_INTR_STATUS, status); + vmx_sync_exit_bitmap(v); } } =20 diff --git a/xen/include/asm-x86/hvm/vmx/vmx.h b/xen/include/asm-x86/hvm/vm= x/vmx.h index b334e1ec94..111ccd7e61 100644 --- a/xen/include/asm-x86/hvm/vmx/vmx.h +++ b/xen/include/asm-x86/hvm/vmx/vmx.h @@ -610,6 +610,8 @@ void update_guest_eip(void); void vmx_pi_per_cpu_init(unsigned int cpu); void vmx_pi_desc_fixup(unsigned int cpu); =20 +void vmx_sync_exit_bitmap(struct vcpu *v); + #ifdef CONFIG_HVM void vmx_pi_hooks_assign(struct domain *d); void vmx_pi_hooks_deassign(struct domain *d); --=20 2.25.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel