Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp4025135ybl; Mon, 3 Feb 2020 11:05:14 -0800 (PST) X-Google-Smtp-Source: APXvYqxoERKgmJ9vlT+citcjqomw3E1VBG3fPAqlEKJIX8599kM6p06pJmM0TSPTxZFJ9jCRYkx/ X-Received: by 2002:aca:5d57:: with SMTP id r84mr383322oib.42.1580756714380; Mon, 03 Feb 2020 11:05:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580756714; cv=none; d=google.com; s=arc-20160816; b=sskllk3GBRB+Gdm7E+BCItEGbuVFLEES6ZUU3ZCzLB06Skbhauvhq3v2cuHk7yenGf 1VaWgtjqvqU3XEjoPOk5HvYnjyCXKsYSnoCKpXJWecnoed4BPcMZNskztrOyCjxqQ88R QcCaKi6ZdHTbEr/4EIVyTYfyEhRy60XX6WIyYWgCtYENBNVqXPkZNeO3lmzfceaMmrgO BX5nh7zS+0Y5PU/GGlTXXjOlWO0IHZ0kb7iuwm6C2CVjBM5WBZxNnM0S8fOk1e6I0NVx KtjLZ/ou5O9iWkrN2OooOaN5BYcNBfz45A77JpNO6dTHmO+5Pno4JvltM+xnc1A/KSvh oRXw== 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=rYMBSD7M5/lE9xAnGIcRMRkDE8VtwTac8DZGBDmcq6Y=; b=uo4xztUUw/YoE5ApyagFDZjFG50b30isQ/IZYG38hyqRV34vq/fU77funoHIgCG9N7 FgCksO5WGMwfEBkSbUKazCCLvM3zOYYN3NU1W88Bgdyr6lfwgcYq8YGFPe0Lj5xq+yOn jftBgCnll91jXrdvk41DdOkeafZlrlL4Lv5eX2U9YxxEPz8oJHiy56koeTr4udtwYyRK tZ1SCFHhXM3AhlMBpdCCGAReqLNPBmQithCVGi3GPHefoArOfigFyqPWZSt0XkauBkVB OsCC0ERVG+9egK/nJIibsa6vr6nushDMYgmaKb1jOwB2IMt1ReEPxwbF3vYFTsDXZbjn G6eQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=IuPjzVU4; 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 t192si8533169oif.75.2020.02.03.11.05.02; Mon, 03 Feb 2020 11:05:14 -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=IuPjzVU4; 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 S1729960AbgBCQaS (ORCPT + 98 others); Mon, 3 Feb 2020 11:30:18 -0500 Received: from mail.kernel.org ([198.145.29.99]:42554 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729636AbgBCQaM (ORCPT ); Mon, 3 Feb 2020 11:30:12 -0500 Received: from localhost (unknown [104.132.45.99]) (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 EB91A2080C; Mon, 3 Feb 2020 16:30:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1580747411; bh=d97+DNOiVfSHCsLfElaDRBIQhu0ScRku/iaDxOT3hWg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IuPjzVU43adfQbY3fZU1NH1ygxpeSO12dvRMIMCW6WqJZdXLKZCe9DO7tVdLDVnAa A7CfDdkkcHO7SVjLgvdZ1WwBObdbnlLIqXkfU0+CEVbwRcr7lGguGa4ynDl9CUTyco WF7dgiO/t8e3XMCOOdixnqe8S8keqXOWNVO+glfg= 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.14 28/89] PCI: Add DMA alias quirk for Intel VCA NTB Date: Mon, 3 Feb 2020 16:19:13 +0000 Message-Id: <20200203161920.597368358@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200203161916.847439465@linuxfoundation.org> References: <20200203161916.847439465@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 90df085e9f925..e7ed051ec125e 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -4019,6 +4019,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