From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CCA44C282CE for ; Fri, 12 Apr 2019 03:14:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 98E2B2077C for ; Fri, 12 Apr 2019 03:14:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="OvIjFl1c" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726874AbfDLDOB (ORCPT ); Thu, 11 Apr 2019 23:14:01 -0400 Received: from mail-ed1-f68.google.com ([209.85.208.68]:39530 "EHLO mail-ed1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726640AbfDLDOA (ORCPT ); Thu, 11 Apr 2019 23:14:00 -0400 Received: by mail-ed1-f68.google.com with SMTP id k45so7024706edb.6 for ; Thu, 11 Apr 2019 20:13:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=BA318eIq/ox3LrTa6ojnh5Fujqy32l0ECRZ1GgahC8Q=; b=OvIjFl1cf6jHzfn8YkMI1A76F+PXL0/0dP+dQwBBo1jDqx6NVXCv6xprWX4fpMpNqw ptmG61OeALgLt9CLXh8FDB4qXP2nnGcvfUbDpXdATIpmOYzIheh+48cV7O7tcgZyGzKo nVW6VtcPYRH92qy3BltSNDlt5hjNzwyJPcVk8= 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:in-reply-to :references; bh=BA318eIq/ox3LrTa6ojnh5Fujqy32l0ECRZ1GgahC8Q=; b=ZFeaJuuIvFW61k6HHXqSEYEDafA3CxSwNiYt4X82njJrVaKw8ndrF5kunlL/Z6fLT3 R/W5hsobHMYotJfKMc+0zQIi4YRyQm5CNTXxYjIchYbBknzztJ5wIM70cuUYpufcLbaz 2Bq+AYBOgeV8ANLJ1lKW38evjkvLTKD17t8nkfbvoqWTO63IHtPbjSsW09j1GODpmrI/ Bt2ZjgODjhXLOGMSMOyq2s9n5MKg8rUPLrieZYzxSlM9I/wdYZW73fcO2YRdkmpG6iuK xc+agA6G9PCTVHzy4SqioArFKbh2ordSzJfX1z2BAJPiFc+ZAOuF/VlKiwvkIpiLW3E9 Ai7g== X-Gm-Message-State: APjAAAWhJ98kVxXFriplw+MWKJh0dm4Ng0sukDLjlo+wyBqq6PmwLYY+ ++zhox66N8+IOCfQmLGyt4lILQ== X-Google-Smtp-Source: APXvYqxIz+I4MHNrPKhgdy5fSwvOcaDMNK06XD7IWR8nOVbYPGDMhBVPDSd6C/ppYxHeJUSAax7pAg== X-Received: by 2002:a17:906:54d1:: with SMTP id c17mr4317274ejp.223.1555038839109; Thu, 11 Apr 2019 20:13:59 -0700 (PDT) Received: from mannams-OptiPlex-7010.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id c7sm11533352edt.70.2019.04.11.20.13.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 11 Apr 2019 20:13:58 -0700 (PDT) From: Srinath Mannam To: Bjorn Helgaas , Robin Murphy , Joerg Roedel , Lorenzo Pieralisi , poza@codeaurora.org, Ray Jui Cc: bcm-kernel-feedback-list@broadcom.com, linux-pci@vger.kernel.org, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Srinath Mannam Subject: [PATCH v4 1/3] PCI: Add dma_ranges window list Date: Fri, 12 Apr 2019 08:43:33 +0530 Message-Id: <1555038815-31916-2-git-send-email-srinath.mannam@broadcom.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1555038815-31916-1-git-send-email-srinath.mannam@broadcom.com> References: <1555038815-31916-1-git-send-email-srinath.mannam@broadcom.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a dma_ranges field in PCI host bridge structure to hold resource entries list of memory regions in sorted order given through dma-ranges DT property. While initializing IOMMU domain of PCI EPs connected to that host bridge This list of resources will be processed and IOVAs for the address holes will be reserved. Signed-off-by: Srinath Mannam Based-on-patch-by: Oza Pawandeep Reviewed-by: Oza Pawandeep --- drivers/pci/probe.c | 3 +++ include/linux/pci.h | 1 + 2 files changed, 4 insertions(+) diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 257b9f6..ce5505f 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -544,6 +544,7 @@ struct pci_host_bridge *pci_alloc_host_bridge(size_t priv) return NULL; INIT_LIST_HEAD(&bridge->windows); + INIT_LIST_HEAD(&bridge->dma_ranges); bridge->dev.release = pci_release_host_bridge_dev; /* @@ -572,6 +573,7 @@ struct pci_host_bridge *devm_pci_alloc_host_bridge(struct device *dev, return NULL; INIT_LIST_HEAD(&bridge->windows); + INIT_LIST_HEAD(&bridge->dma_ranges); bridge->dev.release = devm_pci_release_host_bridge_dev; return bridge; @@ -581,6 +583,7 @@ EXPORT_SYMBOL(devm_pci_alloc_host_bridge); void pci_free_host_bridge(struct pci_host_bridge *bridge) { pci_free_resource_list(&bridge->windows); + pci_free_resource_list(&bridge->dma_ranges); kfree(bridge); } diff --git a/include/linux/pci.h b/include/linux/pci.h index 65f1d8c..016a044 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -487,6 +487,7 @@ struct pci_host_bridge { void *sysdata; int busnr; struct list_head windows; /* resource_entry */ + struct list_head dma_ranges; /* dma ranges resource list */ u8 (*swizzle_irq)(struct pci_dev *, u8 *); /* Platform IRQ swizzler */ int (*map_irq)(const struct pci_dev *, u8, u8); void (*release_fn)(struct pci_host_bridge *); -- 2.7.4