From nobody Mon Nov 10 23:15:57 2025 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