From nobody Thu Apr 25 16:12:37 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) 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=1574774861; cv=none; d=zohomail.com; s=zohoarc; b=SkaezbV5shkfcTpxMf+fwEtZgPhKbzF66Rzj8dXBEcVWW8UAL/v82p05Ifqx+KiaIoycFgGsX3LODupv6yBV98Jnu+CE5v8qZ1GxSKPXOUd6PBhQGxtYlbu8JMCw3Cx13lw1gyxc+YMavZr/MKneDnrjdVzRNppxaDumo/UrOGQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1574774861; 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=yKHHTT3nsRd3EjS+7EcM5/TYPoWvOq6n9uCqFk5IVn4=; b=RJFXdUPHWAc7rLOvCgxQ1ZvyMnJ5fPnOr4mGJ69WtF5mA8ZcAIzPbJFHWic8bU8+r5rFgH54Z931TfaiDwki1MhvQtBQumSO8kfTCPqYXQ4W/Q/+zdhZ4bcmFw19puY3CpmX2PCfEJ8JF93olCPIkZTXSjdvzBY+MhgEi8V7HwA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) 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 157477486195180.68619897252586; Tue, 26 Nov 2019 05:27:41 -0800 (PST) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iZas2-0002Gq-LQ; Tue, 26 Nov 2019 13:27: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 1iZas1-0002GG-L0 for xen-devel@lists.xenproject.org; Tue, 26 Nov 2019 13:27:09 +0000 Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 71bde9cc-1050-11ea-a55d-bc764e2007e4; Tue, 26 Nov 2019 13:27:08 +0000 (UTC) X-Inumbo-ID: 71bde9cc-1050-11ea-a55d-bc764e2007e4 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1574774829; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XU799ubjhvOD8m3beFxNluqhOnqkfPRSlYf1fikne6U=; b=UWjZ6+ymsiCtP8DTmeQfBOeI7c7AoSessMFOcM9v1j+tkZJxMi4y95XG w4Sq/lnF2dePOb66bgWuDWQlzhLmK1GIP4qqDWNqm6c+9xDEYoPmVIhjl oOcrAEu0Em7I5B9vn3MbY/n4qudN2S0Ipgy8hbnaP8+Z7NX6TYij1fj8I 8=; 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: none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) 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: Clxb3QqpffJhLLNOy3MFVQHNo3cU1cCTaWGVMhVgAuiaimbu6fDlW3KANI/zm/CBz7Pr0oeaph 4N4sDUDAk1PlkPhU/Hjd8eRCVKp+TWadxOtgNLHOInrGuGriV8Z2NsvtbvS7BtcnVQsxpzJhKF gWkSsAJzP3QGeGHf+3qE1TT3qamKgcz4OjxQYkwOylDuuOga9Kq/hnToRbbVFUROeKs3PeiEd8 Zqcl65ILSvvQY2CYKCr6HB6Yh5hhlfS7/FXDAP1tz8ZLbKkgES96SZox4rA+WReM6NvcVTfWrp DEs= X-SBRS: 2.7 X-MesageID: 8842073 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.69,245,1571716800"; d="scan'208";a="8842073" From: Roger Pau Monne To: Date: Tue, 26 Nov 2019 14:26:47 +0100 Message-ID: <20191126132648.6917-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191126132648.6917-1-roger.pau@citrix.com> References: <20191126132648.6917-1-roger.pau@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH for-4.13 v3 1/2] x86/vmx: add ASSERT to prevent syncing PIR to IRR... 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: Juergen Gross , 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) ... if the vCPU is different than the one currently running or if it's not paused. Note that syncing PIR to IRR when the vCPU is running is not allowed, since the hardware is in control of VMCS IRR field. Allow syncing PIR to IRR when the vCPU is paused, this is required in order to save the local APIC state. No functional change intended. Suggested by: Andrew Cooper Signed-off-by: Roger Pau Monn=C3=A9 --- Cc: Juergen Gross --- Changes since v2: - Only allow syncing if the vCPU is the current one or if it's paused. Changes since v1: - Use vcpu_runnable instead of is_running. --- xen/arch/x86/hvm/vmx/vmx.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index a55ff37733..c817aec75d 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -2054,6 +2054,19 @@ static void vmx_sync_pir_to_irr(struct vcpu *v) unsigned int group, i; DECLARE_BITMAP(pending_intr, NR_VECTORS); =20 + if ( v !=3D current && !atomic_read(&v->pause_count) ) + { + /* + * Syncing PIR to IRR must not be done behind the back of the CPU, + * since the IRR is controlled by the hardware when the vCPU is + * executing. Only allow Xen to do such sync if the vCPU is the cu= rrent + * one or if it's paused: that's required in order to sync the lap= ic + * state before saving it. + */ + ASSERT_UNREACHABLE(); + return; + } + if ( !pi_test_and_clear_on(&v->arch.hvm.vmx.pi_desc) ) return; =20 --=20 2.24.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel From nobody Thu Apr 25 16:12:37 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) 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=1574774865; cv=none; d=zohomail.com; s=zohoarc; b=Hz3FE+W36aYtxmGbmyUIVotS5hJb9fg9LqxaExrjLgPoFCEGFFr3xFlYL58KUeaQJWxNHUa7JBdmTc1tEvpLZTaxM0pu3bmNoWOgBPJcE5v4d14CSU06Qt9J/OgqJf+x7k/Dbo/Vb90HlESkH0k0AsPfkPUW9AQSx7nOZ/iCukc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1574774865; 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=FyBXT2C4IqZ/dkZFJA46lQbu6LCCGhnHlC11dW98dLo=; b=G4Z/Ckubt/2ivoZCkTZoMEeGWM0Op9dijxCBx/YKxqdyVNIPKPb4AMt7hblfzXdf6ki0pU/2ipOjA/YXHFyZ2NNEifshoHUa5AIaTXI6HD6vM5yWmygEdN3nnTnJgJaL7iNue2KzXeZtN7784aLMEb0tH5QSwg6BENQVvFyI3js= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) 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 1574774864983567.8881666897215; Tue, 26 Nov 2019 05:27:44 -0800 (PST) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iZas6-0002II-Uw; Tue, 26 Nov 2019 13:27:14 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iZas4-0002Hj-QP for xen-devel@lists.xenproject.org; Tue, 26 Nov 2019 13:27:12 +0000 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 7325b7a4-1050-11ea-a3a1-12813bfff9fa; Tue, 26 Nov 2019 13:27:10 +0000 (UTC) X-Inumbo-ID: 7325b7a4-1050-11ea-a3a1-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1574774830; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qv8wnOK+GavpPJE7P/NicCACzn1IcAXNbaLNMACREJw=; b=KLLKGT5B01dzCYPedfpN5gX+je3u/NTVf8yz7chcKUc7mviS54bpa+sQ xa33hdk0kc8m0d349kH3e5BDgyAi54h11L7sRi2aoEFckm4fO8kPct1sv xVal5gDEQJtvLMxmlnX+HmHh2L8TE8zundtBa3urdq2mE6RmkTSdtfDHs Q=; Authentication-Results: esa6.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: none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: None (esa6.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=esa6.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa6.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=esa6.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 (esa6.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=esa6.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: FNoyBhUVj0v2bLwdpDYUveqdiyNh8bune4s0Swv3zrl+SGKR4VRCerC7K52LM8vplS3gTScekb VRUGXrmMVBvQp748tqzjhXsR4VNdC+8UoFtU0WdwgPGMnlK1yKq/flNcJVHq3qFPsObecwFRZC gN/vTsix9PKIn2asnLfswuHSUT6m3ccitQmxVl/QCHqE4GsWX3lrowR2Zl7IrWeY2d+zlU+XyR PbzeKf529lFPVkCnYeBcXAk3a8K8/D5fLD54LXAb4As9gP0RCBOc+urdj6OZoi92fctv2vE51L o+E= X-SBRS: 2.7 X-MesageID: 9257580 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.69,245,1571716800"; d="scan'208";a="9257580" From: Roger Pau Monne To: Date: Tue, 26 Nov 2019 14:26:48 +0100 Message-ID: <20191126132648.6917-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191126132648.6917-1-roger.pau@citrix.com> References: <20191126132648.6917-1-roger.pau@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH for-4.13 v3 2/2] x86/vmx: always sync PIR to IRR before vmentry 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: Juergen Gross , Kevin Tian , Jan Beulich , Wei Liu , Andrew Cooper , Joe Jin , Jun Nakajima , 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) When using posted interrupts on Intel hardware it's possible that the vCPU resumes execution with a stale local APIC IRR register because depending on the interrupts to be injected vlapic_has_pending_irq might not be called, and thus PIR won't be synced into IRR. Fix this by making sure PIR is always synced to IRR in hvm_vcpu_has_pending_irq regardless of what interrupts are pending. While there also simplify the code in __vmx_deliver_posted_interrupt: only raise a softirq if the vCPU is the one currently running and __vmx_deliver_posted_interrupt is called from interrupt context. The softirq is raised to make sure vmx_intr_assist is retried if the interrupt happens to arrive after vmx_intr_assist but before interrupts are disabled in vmx_do_vmentry. Also simplify the logic for IPIing other pCPUs, there's no need to check v->processor since the IPI should be sent as long as the vCPU is not the current one and it's running. Reported-by: Joe Jin Signed-off-by: Roger Pau Monn=C3=A9 Tested-by: Joe Jin --- Cc: Juergen Gross --- Changes since v2: - Raise a softirq if in interrupt context and the vCPU is the current one. - Use is_running instead of runnable. - Remove the call to vmx_sync_pir_to_irr in vmx_intr_assist and instead always call vlapic_has_pending_irq in hvm_vcpu_has_pending_irq. --- xen/arch/x86/hvm/irq.c | 7 +++-- xen/arch/x86/hvm/vmx/vmx.c | 64 +++++++++++--------------------------- 2 files changed, 24 insertions(+), 47 deletions(-) diff --git a/xen/arch/x86/hvm/irq.c b/xen/arch/x86/hvm/irq.c index e03a87ad50..b50ac62a16 100644 --- a/xen/arch/x86/hvm/irq.c +++ b/xen/arch/x86/hvm/irq.c @@ -515,7 +515,11 @@ void hvm_set_callback_via(struct domain *d, uint64_t v= ia) struct hvm_intack hvm_vcpu_has_pending_irq(struct vcpu *v) { struct hvm_domain *plat =3D &v->domain->arch.hvm; - int vector; + /* + * Always call vlapic_has_pending_irq so that PIR is synced into IRR w= hen + * using posted interrupts. + */ + int vector =3D vlapic_has_pending_irq(v); =20 if ( unlikely(v->nmi_pending) ) return hvm_intack_nmi; @@ -530,7 +534,6 @@ struct hvm_intack hvm_vcpu_has_pending_irq(struct vcpu = *v) if ( vlapic_accept_pic_intr(v) && plat->vpic[0].int_output ) return hvm_intack_pic(0); =20 - vector =3D vlapic_has_pending_irq(v); if ( vector !=3D -1 ) return hvm_intack_lapic(vector); =20 diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index c817aec75d..4dea868cda 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -1945,57 +1945,31 @@ static void vmx_process_isr(int isr, struct vcpu *v) =20 static void __vmx_deliver_posted_interrupt(struct vcpu *v) { - bool_t running =3D v->is_running; - vcpu_unblock(v); - /* - * Just like vcpu_kick(), nothing is needed for the following two case= s: - * 1. The target vCPU is not running, meaning it is blocked or runnabl= e. - * 2. The target vCPU is the current vCPU and we're in non-interrupt - * context. - */ - if ( running && (in_irq() || (v !=3D current)) ) - { + if ( v->is_running && v !=3D current ) /* - * Note: Only two cases will reach here: - * 1. The target vCPU is running on other pCPU. - * 2. The target vCPU is the current vCPU. + * If the vCPU is running on another pCPU send an IPI to the pCPU.= When + * the IPI arrives, the target vCPU may be running in non-root mod= e, + * running in root mode, runnable or blocked. If the target vCPU is + * running in non-root mode, the hardware will sync PIR to vIRR for + * 'posted_intr_vector' is a special vector handled directly by the + * hardware. * - * Note2: Don't worry the v->processor may change. The vCPU being - * moved to another processor is guaranteed to sync PIR to vIRR, - * due to the involved scheduling cycle. + * If the target vCPU is running in root-mode, the interrupt handl= er + * starts to run. Considering an IPI may arrive in the window betw= een + * the call to vmx_intr_assist() and interrupts getting disabled, = the + * interrupt handler should raise a softirq to ensure events will = be + * delivered in time. */ - unsigned int cpu =3D v->processor; - - /* - * For case 1, we send an IPI to the pCPU. When an IPI arrives, the - * target vCPU maybe is running in non-root mode, running in root - * mode, runnable or blocked. If the target vCPU is running in - * non-root mode, the hardware will sync PIR to vIRR for - * 'posted_intr_vector' is special to the pCPU. If the target vCPU= is - * running in root-mode, the interrupt handler starts to run. - * Considering an IPI may arrive in the window between the call to - * vmx_intr_assist() and interrupts getting disabled, the interrupt - * handler should raise a softirq to ensure events will be deliver= ed - * in time. If the target vCPU is runnable, it will sync PIR to - * vIRR next time it is chose to run. In this case, a IPI and a - * softirq is sent to a wrong vCPU which will not have any adverse - * effect. If the target vCPU is blocked, since vcpu_block() checks - * whether there is an event to be delivered through - * local_events_need_delivery() just after blocking, the vCPU must - * have synced PIR to vIRR. Similarly, there is a IPI and a softirq - * sent to a wrong vCPU. - */ - if ( cpu !=3D smp_processor_id() ) - send_IPI_mask(cpumask_of(cpu), posted_intr_vector); + send_IPI_mask(cpumask_of(v->processor), posted_intr_vector); + else if ( v =3D=3D current && in_irq() && !softirq_pending(smp_process= or_id()) ) /* - * For case 2, raising a softirq ensures PIR will be synced to vIR= R. - * As any softirq will do, as an optimization we only raise one if - * none is pending already. + * If on interrupt context raise a softirq so that vmx_intr_assist= is + * retried in case the interrupt arrives after the call to + * vmx_intr_assist and before interrupts are disabled in + * vmx_do_vmentry. */ - else if ( !softirq_pending(cpu) ) - raise_softirq(VCPU_KICK_SOFTIRQ); - } + raise_softirq(VCPU_KICK_SOFTIRQ); } =20 static void vmx_deliver_posted_intr(struct vcpu *v, u8 vector) --=20 2.24.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel