Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp2100481ybl; Thu, 30 Jan 2020 11:21:40 -0800 (PST) X-Google-Smtp-Source: APXvYqw3I/vr0QOjSUtst2wExdZF2E2yp1G7lC26SuGfSjjKp1KEdU8kK06V4IKMRxeo+TdUjySb X-Received: by 2002:aca:5a04:: with SMTP id o4mr3920449oib.71.1580412100672; Thu, 30 Jan 2020 11:21:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580412100; cv=none; d=google.com; s=arc-20160816; b=bDiD8w6fYqKVuIU3Ct6QIuV5xXP9O/rTdiGhY4ooGnxPlS3BlPMc6T9sGqfecTkg2q I9OJlChZiUNTAhcggUKHX4QrObev1yCJLXeY0SyBz6+nDiX/xHwsx2dDeKd8An8QNYib IeW/76E+RGuDQSe4kvlZ95NdphWg7jNxvWOz5/6hwpni6EC5d9BH+8pa49Ybv00so9Zd F4CMUFtlyYnGRqWJe93tEYhpBllelyT8b0ICkA+i1yVvZUedcP7I1wd+oKVpAfhMmY9s wIhaDSBfJDrhJ7BilYt2aJXmW3MxhvR8rdKno3jM1zHkj0tR9GkGqGjg3dKzNOigluMA huWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=02vffRXJA9S7ydPpewHkUX5yK3Zpfgsq8kKszfTp3dI=; b=gN/1kJimnU0rP5hQhShx1fqgP7FAwKEC6vwTFoIz5mfMumXA+og9GFyjAObV3NgCSD oFWsTtpF2q849i80151PkPCM+T8awttaDdiy8MnqnaqrbEifaJXq7owBSq0jfIwogTv5 XEOJmq6og+vOMq2DKrgtnhUhifQMCsD5pRusOOIDNLV8wgKBBC4GUgOITDGRj7T70LMK QN9/oMo6uhPHoDWC2AzsEiYHJ1B5WpT4DLcQSwdx9WNm5TRR3XHrF7yI3G0g/8koQhOk 3xMnfVFpfaGkGpztuhqBNYo0445fV8Y+HQi4ZfUdh8zIdKfGuPCw1hafOpX0XLwShJ31 dsrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=dv0FwV6L; 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 e24si3760440oti.247.2020.01.30.11.21.28; Thu, 30 Jan 2020 11:21:40 -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=@kernel.org header.s=default header.b=dv0FwV6L; 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 S1731501AbgA3Stk (ORCPT + 99 others); Thu, 30 Jan 2020 13:49:40 -0500 Received: from mail.kernel.org ([198.145.29.99]:59056 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731507AbgA3SsM (ORCPT ); Thu, 30 Jan 2020 13:48:12 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 793CE20674; Thu, 30 Jan 2020 18:48:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1580410091; bh=B5CAqITg+xjRYKHIzLuJEemrbFWOdQXa62YKePITZSU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dv0FwV6LTiDiEXK5ZeRTaKMXjqHyar6cpEVQVrdUn4xy5EGb/KKvjiq4W7/YsBl4S 116UOh6GLDhBU1Pw9PIH5JC+sf+kEMFMZ6NXzKyK/dNL/bJaZLDUy+XFO1GKjUrlEO mW2hLwo+GT3zYT+LeKZJestf4qlBoeIWkbVdntIo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Slawomir Pawlowski , Przemek Kitszel , Bjorn Helgaas , Sasha Levin Subject: [PATCH 4.19 42/55] PCI: Add DMA alias quirk for Intel VCA NTB Date: Thu, 30 Jan 2020 19:39:23 +0100 Message-Id: <20200130183616.186312117@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200130183608.563083888@linuxfoundation.org> References: <20200130183608.563083888@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Slawomir Pawlowski [ Upstream commit 56b4cd4b7da9ee95778eb5c8abea49f641ebfd91 ] Intel Visual Compute Accelerator (VCA) is a family of PCIe add-in devices exposing computational units via Non Transparent Bridges (NTB, PEX 87xx). Similarly to MIC x200, we need to add DMA aliases to allow buffer access when IOMMU is enabled. Add aliases to allow computational unit access to host memory. These aliases mark the whole VCA device as one IOMMU group. All possible slot numbers (0x20) are used, since we are unable to tell what slot is used on other side. This quirk is intended for both host and computational unit sides. The VCA devices have up to five functions: four for DMA channels and one additional. Link: https://lore.kernel.org/r/5683A335CC8BE1438C3C30C49DCC38DF637CED8E@IRSMSX102.ger.corp.intel.com Signed-off-by: Slawomir Pawlowski Signed-off-by: Przemek Kitszel Signed-off-by: Bjorn Helgaas Signed-off-by: Sasha Levin --- drivers/pci/quirks.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 36f8eb9f24a73..5b4c36ab15962 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -3986,6 +3986,40 @@ static void quirk_mic_x200_dma_alias(struct pci_dev *pdev) DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2260, quirk_mic_x200_dma_alias); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2264, quirk_mic_x200_dma_alias); +/* + * Intel Visual Compute Accelerator (VCA) is a family of PCIe add-in devices + * exposing computational units via Non Transparent Bridges (NTB, PEX 87xx). + * + * Similarly to MIC x200, we need to add DMA aliases to allow buffer access + * when IOMMU is enabled. These aliases allow computational unit access to + * host memory. These aliases mark the whole VCA device as one IOMMU + * group. + * + * All possible slot numbers (0x20) are used, since we are unable to tell + * what slot is used on other side. This quirk is intended for both host + * and computational unit sides. The VCA devices have up to five functions + * (four for DMA channels and one additional). + */ +static void quirk_pex_vca_alias(struct pci_dev *pdev) +{ + const unsigned int num_pci_slots = 0x20; + unsigned int slot; + + for (slot = 0; slot < num_pci_slots; slot++) { + pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x0)); + pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x1)); + pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x2)); + pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x3)); + pci_add_dma_alias(pdev, PCI_DEVFN(slot, 0x4)); + } +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2954, quirk_pex_vca_alias); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2955, quirk_pex_vca_alias); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2956, quirk_pex_vca_alias); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2958, quirk_pex_vca_alias); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2959, quirk_pex_vca_alias); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x295A, quirk_pex_vca_alias); + /* * The IOMMU and interrupt controller on Broadcom Vulcan/Cavium ThunderX2 are * associated not at the root bus, but at a bridge below. This quirk avoids -- 2.20.1