Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp4261602ybl; Tue, 20 Aug 2019 09:15:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqxfzBtwiJm3TD6u/+CjLrzP+V9KORwWU8ynTFSuroBe8oR7oXC4Z0PfWJ7Wky0pDqdYnDUw X-Received: by 2002:a63:4823:: with SMTP id v35mr25417521pga.138.1566317706346; Tue, 20 Aug 2019 09:15:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566317706; cv=none; d=google.com; s=arc-20160816; b=cusdC1zYDZP5iFMxFpids12C6uzjQ3SIStm/RG+qxECngH4CNPSwzUF9YTjn/Luf+Q 6dSkX3jpCzKPgULiojQ233yHbXFsZMpmUoZiO+jO7ZyfvqZyN5O5qs6eXc84+R1zEQXL WjQvAV2OMcFnx52poHDDINXCbk/tBceQitKEljIOfI5QMAka1m1ndmtEliC3iHcTAi5X KM3VuzbXhyrYesamj+CUHJMmlsMLkWshIcZk2NP4Bl4hMRaL72xNc2OsPlBNlTBy3ZDL nLbqQ9YRK5+ujhJ0T78mBUtDfEllE4cb01uxBG+LWHZNxPa7zTTBHqeVU26MCE7BN+h0 wxHw== 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; bh=rfpTxm0NAlEy8xKy4wmYmwInXk2X4QMQ21G/QjPhbGQ=; b=GpCrAd70p1YExVtprMeZ7f6a2Qt0NrjY7m4Orf/zqwY0nI1EQF/HQuM56h0IfnLRVR 3q9HlfekgqKE8OXKcicV/uVpu8Q/thPh1PRhBSy/9L/FUvE19JYFoSponL9ghtFGztzb AEPnrQsXgm+hKpzngjeS4BxJKYsAX9WckgLroXuFhsYPPYuPMOvhMaqlpo0O7nM5Zy5G PN4/LTU7XN7IQl0NimJX2FG4AFq3tl5HwLLKAkP7JEzjUjT0EASVMxWwJedyGaC+uQp0 JqQuRxdcnf7/EP/4XKWqL+ABH5CkLuIs8QVUtEXXcBHof8r3F5D+xgxWBg8YUcdqd+Tj uqLg== 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; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v23si12589773pgb.496.2019.08.20.09.14.50; Tue, 20 Aug 2019 09:15:06 -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; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729639AbfHTQOB (ORCPT + 99 others); Tue, 20 Aug 2019 12:14:01 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:38720 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725971AbfHTQOA (ORCPT ); Tue, 20 Aug 2019 12:14:00 -0400 Received: by mail-pg1-f194.google.com with SMTP id e11so3513237pga.5; Tue, 20 Aug 2019 09:14:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=rfpTxm0NAlEy8xKy4wmYmwInXk2X4QMQ21G/QjPhbGQ=; b=CsgDlslaxLWx9+hIAAZXrW6hCZmgvxBNwrkKUshqVcu9c+zBYyOnbn/hieCN02EmYy bshIHdLNgg1ffOvfVjduqeYRcTzO2lf2gv027lpc3idtDg2S6pVA558VPcHeHcCjMNcM +p+kLlnXCwjKjpi9Q4+vBiiQzygzvJKJ9jwDMcdcCrtmQ9gDkZnlwjY6WQVIgqmtXZcO EvLcC0tdaenxc68SmNpMgs+XWQBgsFvIIGPx1SXz3OO/L6E/8L1kxbWdQfZUSEb/nput rGZg6W5WXPdjdJeXV6afUnLlBTP5nF647MTMl5FMND6VR7GS5/Tt5NVnaY9hUY78NU3/ QSjw== X-Gm-Message-State: APjAAAXrPRSHDhUOMzOyOUJ24f2C1xPmVGf1O9nwZkUyOqUtYbBqjiRA r4rCfAjH0onN7gk73dBMPTE= X-Received: by 2002:a65:514c:: with SMTP id g12mr25438710pgq.76.1566317639818; Tue, 20 Aug 2019 09:13:59 -0700 (PDT) Received: from sc2-haas01-esx0118.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id u23sm19759252pgj.58.2019.08.20.09.13.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Aug 2019 09:13:59 -0700 (PDT) From: Nadav Amit To: Joerg Roedel Cc: iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Nadav Amit , stable@vger.kernel.org, Logan Gunthorpe , David Woodhouse , Jacob Pan Subject: [PATCH] iommu/vt-d: Fix wrong analysis whether devices share the same bus Date: Tue, 20 Aug 2019 01:53:17 -0700 Message-Id: <20190820085317.29458-1-namit@vmware.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org set_msi_sid_cb() is used to determine whether device aliases share the same bus, but it can provide false indications that aliases use the same bus when in fact they do not. The reason is that set_msi_sid_cb() assumes that pdev is fixed, while actually pci_for_each_dma_alias() can call fn() when pdev is set to a subordinate device. As a result, running an VM on ESX with VT-d emulation enabled can results in the log warning such as: DMAR: [INTR-REMAP] Request device [00:11.0] fault index 3b [fault reason 38] Blocked an interrupt request due to source-id verification failure This seems to cause additional ata errors such as: ata3.00: qc timeout (cmd 0xa1) ata3.00: failed to IDENTIFY (I/O error, err_mask=0x4) These timeouts also cause boot to be much longer and other errors. Fix it by checking comparing the alias with the previous one instead. Fixes: 3f0c625c6ae71 ("iommu/vt-d: Allow interrupts from the entire bus for aliased devices") Cc: stable@vger.kernel.org Cc: Logan Gunthorpe Cc: David Woodhouse Cc: Joerg Roedel Cc: Jacob Pan Signed-off-by: Nadav Amit --- drivers/iommu/intel_irq_remapping.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c index 4786ca061e31..81e43c1df7ec 100644 --- a/drivers/iommu/intel_irq_remapping.c +++ b/drivers/iommu/intel_irq_remapping.c @@ -376,13 +376,13 @@ static int set_msi_sid_cb(struct pci_dev *pdev, u16 alias, void *opaque) { struct set_msi_sid_data *data = opaque; + if (data->count == 0 || PCI_BUS_NUM(alias) == PCI_BUS_NUM(data->alias)) + data->busmatch_count++; + data->pdev = pdev; data->alias = alias; data->count++; - if (PCI_BUS_NUM(alias) == pdev->bus->number) - data->busmatch_count++; - return 0; } -- 2.17.1