Received: by 10.223.185.116 with SMTP id b49csp4377018wrg; Tue, 6 Mar 2018 14:49:37 -0800 (PST) X-Google-Smtp-Source: AG47ELsOLQ3ZV6Oxq2tgdGCFMo6VrJSA+QY7TmVG2YWNePs7TmYBF+Pt4o1fcCBBfJtB1f+8rTvr X-Received: by 10.99.125.19 with SMTP id y19mr15988396pgc.285.1520376577462; Tue, 06 Mar 2018 14:49:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520376577; cv=none; d=google.com; s=arc-20160816; b=VoJ81wiallYztgLCAIyxIDjR5a1wf7xIKNv3MOAb6dXkNj19q7W0W4IN5v+eQwPJuJ 6sdAC+N4ydOl7BEOI8hWn9Quz3mxlmnDdsHkKuB3sVQrxjsDFc263jvYU2ItTu0ZdvNr jSq9eSmRdSi36KZJpPqcDUxUQoMqvX7+tDrxzsG9Tx1xjIMnoOzQ1+agkGNXw7NVBOPP cBd2/FtVRJjIx/3Jk9xBABr4VdsNsW8PbnHXk8Qqwq8QcKkBtfRC+v5twvuGe2SWQRQq msH7r0q8u9EnldxJmePZK+DxseT0xy4LbgdfYPhuBoYOn7rLYN7/JyK6LlCG43rnr3I4 poBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=3Nai/yXJkDslHpfwEQpmGlfMGMP7hP1V/KPgwKkaavA=; b=haa7qhDs9JgsIfqSPuMujuhAgq0mKqg361c4qfnK9B7+z0EWsShiMLjpVVQcAdIJpM 1xlv2l7Hmib5lq7tbRX+eJBTg/IGzTVZ0VLQeiWtOAZKHPCvmjvXeCFLd8jVOsRPYnDq +lAvnQ9Ds8AHmh2h2U9jn6aULOUPNe81BEHhbV4velH8q5vb8BB9QFh4nKx9+2FtdoZe vxiqpzuHrW39Do8sysdQEi22AJS0ptrcnorlfEr/9gJZY3EnC+dYPuIFctCdMV43y4Lx iO6uL4p5CUoK1x1FAiYv3KPjPf+22uVkkJUGjgMOOX42DN5LDWpnZ0F6IItwPYyxfutx 2SyA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=ocNneEER; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n10si10431531pgr.822.2018.03.06.14.49.23; Tue, 06 Mar 2018 14:49:37 -0800 (PST) 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; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=ocNneEER; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754270AbeCFWkI (ORCPT + 99 others); Tue, 6 Mar 2018 17:40:08 -0500 Received: from aserp2120.oracle.com ([141.146.126.78]:58770 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754094AbeCFWkH (ORCPT ); Tue, 6 Mar 2018 17:40:07 -0500 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w26Mb7gW051051; Tue, 6 Mar 2018 22:39:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id; s=corp-2017-10-26; bh=3Nai/yXJkDslHpfwEQpmGlfMGMP7hP1V/KPgwKkaavA=; b=ocNneEERE4HNXJpsyDNPBb5UfGrjC4Qs4OjMg5wFxr5hkBIO81ddpKwzL2nM9lGd00Cu PVTQfZukCf4f9bzt7M4FEkuprgnLjGvxCJyO9PWhxlrZULxusxXXCNZBSnEZdeqgBk3I mFNUMCcOsDjgOlsSWKF4Kwy60CIdLAFCj0pQZal/hl5q9NornkvpD3daH35kyNTCMOXH NQ261bev1vE0UBa+Zt4z4lZgAlbaDNp5qwdMQjUTvdk8Z7ejEuNsGECE2tlEM0GdgSwR 6QPHgK3NEgik0G19s3BofgwG+cRjsPX8onMBmH7O2CT3SvmmgNfEfOap7J9N7lKn6M74 0A== Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by aserp2120.oracle.com with ESMTP id 2gj38h05rh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 Mar 2018 22:39:51 +0000 Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id w26MdpP2029961 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 6 Mar 2018 22:39:51 GMT Received: from abhmp0003.oracle.com (abhmp0003.oracle.com [141.146.116.9]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id w26Mdoqo003042; Tue, 6 Mar 2018 22:39:50 GMT Received: from jaraman-bur-1.us.oracle.com (/10.152.33.39) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 06 Mar 2018 14:39:50 -0800 From: Jagannathan Raman To: joro@8bytes.org, tglx@linutronix.de Cc: iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org Subject: [PATCH] iommu/vt-d: fix usage of force parameter in intel_ir_reconfigure_irte() Date: Tue, 6 Mar 2018 17:39:41 -0500 Message-Id: <1520375981-4958-1-git-send-email-jag.raman@oracle.com> X-Mailer: git-send-email 1.8.3.1 X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8824 signatures=668685 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 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-1711220000 definitions=main-1803060243 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- Hi Thomas, I noticed that you added intel_ir_reconfigure_irte() with the following commit: d491bdff888e ("iommu/vt-d: Reevaluate vector configuration on activate()") Could you please confirm the usage of "force" parameter in intel_ir_reconfigure_irte()? drivers/iommu/intel_irq_remapping.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c index 66f69af..3062a15 100644 --- a/drivers/iommu/intel_irq_remapping.c +++ b/drivers/iommu/intel_irq_remapping.c @@ -1136,7 +1136,7 @@ static void intel_ir_reconfigure_irte(struct irq_data *irqd, bool force) 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); } -- 1.8.3.1