Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3707241imm; Mon, 18 Jun 2018 02:41:56 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJrK1jms/WnljT4T6R4UiPQaMYBcWJNFfogHDQ9ls+DDNMrEqHB6hcn7NYLnVdSBBylFyOB X-Received: by 2002:a62:3f4f:: with SMTP id m76-v6mr12750076pfa.109.1529314916270; Mon, 18 Jun 2018 02:41:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529314916; cv=none; d=google.com; s=arc-20160816; b=0w4bZ2+qQAJZ6I5MaSglHIqXqdw/U+Pj1fW/55gRolR4pqMpoBJktKv0ATJ6nYlbRX QcQDfR+kmKkM70pq0/DYDKHU3O01aVekNEl42NkvTj3A+pWeRO/+TJSyrsYuzV9pXx12 t6YztJgWU0B40RbnFONJcvBdoOfcV8B8c3gE/WWMlzDoLv/m81ztX4rsidCCAfroYqF8 tWyKmWcOSWSTBWBgIkL8h2eHRV/kyd7EVh6bFv0j0e1X6R/a0RjSBGxL1DaPYznEQmrZ BpvyQTPak1JazP1Nn2yYkHbL6exxqytpedJwftk5fYbMlCjHYkeUOoLe38dsFb8i3ifo ch/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=1V2FVyOnJaIidq/GGYWMPNE0iuhqIG8lzbUuI0HJJjs=; b=N1r9/wLd1aeIwptKv5rK7kFltVkJtOUAeH8Qv3y4DpUXaZqjGAqGafv8ePAfJEOkAF p9HnKAS40GM1thsDR6PegT9JOht6E8KmbhRJxGEQIEPVI33+zVhvWYTy3M4LjaROM2bF qrUxEz0mMzRE9IK8sWhcWkPfWdp156M+01IatHgrfd8jonY2t+6rZFvTL5ktkw8/Z7/k QPxsglQSTh6wL+/EN4iVlCknex60Hab4VfHTVODxugBkA1vB+kGVlj4ePz7gWo6oTFKN RO21wCbvCQIu9im41RJf2bjUzo4zjFBYGQFgWhx5hnLWWwx+QStUfxDHBMv32HhrNQ2e 7xmQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n64-v6si14665436pfh.210.2018.06.18.02.41.42; Mon, 18 Jun 2018 02:41:56 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965575AbeFRIWw (ORCPT + 99 others); Mon, 18 Jun 2018 04:22:52 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:55640 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935849AbeFRIWt (ORCPT ); Mon, 18 Jun 2018 04:22:49 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 6063BC7F; Mon, 18 Jun 2018 08:22:48 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jagannathan Raman , Joerg Roedel , Sasha Levin Subject: [PATCH 4.16 163/279] iommu/vt-d: Fix usage of force parameter in intel_ir_reconfigure_irte() Date: Mon, 18 Jun 2018 10:12:28 +0200 Message-Id: <20180618080615.569482551@linuxfoundation.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180618080608.851973560@linuxfoundation.org> References: <20180618080608.851973560@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.16-stable review patch. If anyone has any objections, please let me know. ------------------ From: Jagannathan Raman [ Upstream commit aa7528fe3576d11f4a10237178a723a1f080a547 ] It was noticed that the IRTE configured for guest OS kernel was over-written while the guest was running. As a result, vt-d Posted Interrupts configured for the guest are not being delivered directly, and instead bounces off the host. Every interrupt delivery takes a VM Exit. It was noticed that the following stack is doing the over-write: [ 147.463177] modify_irte+0x171/0x1f0 [ 147.463405] intel_ir_set_affinity+0x5c/0x80 [ 147.463641] msi_domain_set_affinity+0x32/0x90 [ 147.463881] irq_do_set_affinity+0x37/0xd0 [ 147.464125] irq_set_affinity_locked+0x9d/0xb0 [ 147.464374] __irq_set_affinity+0x42/0x70 [ 147.464627] write_irq_affinity.isra.5+0xe1/0x110 [ 147.464895] proc_reg_write+0x38/0x70 [ 147.465150] __vfs_write+0x36/0x180 [ 147.465408] ? handle_mm_fault+0xdf/0x200 [ 147.465671] ? _cond_resched+0x15/0x30 [ 147.465936] vfs_write+0xad/0x1a0 [ 147.466204] SyS_write+0x52/0xc0 [ 147.466472] do_syscall_64+0x74/0x1a0 [ 147.466744] entry_SYSCALL_64_after_hwframe+0x3d/0xa2 reversing the sense of force check in intel_ir_reconfigure_irte() restores proper posted interrupt functionality Signed-off-by: Jagannathan Raman Fixes: d491bdff888e ('iommu/vt-d: Reevaluate vector configuration on activate()') Signed-off-by: Joerg Roedel Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/iommu/intel_irq_remapping.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/iommu/intel_irq_remapping.c +++ b/drivers/iommu/intel_irq_remapping.c @@ -1136,7 +1136,7 @@ static void intel_ir_reconfigure_irte(st irte->dest_id = IRTE_DEST(cfg->dest_apicid); /* Update the hardware only if the interrupt is in remapped mode. */ - if (!force || ir_data->irq_2_iommu.mode == IRQ_REMAPPING) + if (force || ir_data->irq_2_iommu.mode == IRQ_REMAPPING) modify_irte(&ir_data->irq_2_iommu, irte); }