From patchwork Thu Sep 19 07:29:19 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bharat Bhushan X-Patchwork-Id: 275896 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from ozlabs.org (localhost [IPv6:::1]) by ozlabs.org (Postfix) with ESMTP id E25E22C010A for ; Thu, 19 Sep 2013 17:39:09 +1000 (EST) Received: from tx2outboundpool.messaging.microsoft.com (tx2ehsobe005.messaging.microsoft.com [65.55.88.15]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (Client CN "mail.global.frontbridge.com", Issuer "MSIT Machine Auth CA 2" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 7E57B2C014E for ; Thu, 19 Sep 2013 17:37:14 +1000 (EST) Received: from mail118-tx2-R.bigfish.com (10.9.14.254) by TX2EHSOBE002.bigfish.com (10.9.40.22) with Microsoft SMTP Server id 14.1.225.22; Thu, 19 Sep 2013 07:37:09 +0000 Received: from mail118-tx2 (localhost [127.0.0.1]) by mail118-tx2-R.bigfish.com (Postfix) with ESMTP id 775F74E0142; Thu, 19 Sep 2013 07:37:09 +0000 (UTC) X-Forefront-Antispam-Report: CIP:70.37.183.190; KIP:(null); UIP:(null); IPV:NLI; H:mail.freescale.net; RD:none; EFVD:NLI X-SpamScore: 8 X-BigFish: VS8(zzzz1f42h208ch1ee6h1de0h1fdah2073h1202h1e76h1d1ah1d2ah1fc6h1082kz70kd2iz1de098h1de097h8275bhz2dh2a8h839he5bhf0ah107ah1288h12a5h12a9h12bdh12e5h137ah139eh13b6h1441h1504h1537h162dh1631h1758h1898h18e1h1946h19b5h1ad9h1b0ah1b2fh1fb3h1d0ch1d2eh1d3fh1dfeh1dffh1e1dh1e23h1fe8h1ff5h20cfi1155h) Received: from mail118-tx2 (localhost.localdomain [127.0.0.1]) by mail118-tx2 (MessageSwitch) id 1379576227358138_15404; Thu, 19 Sep 2013 07:37:07 +0000 (UTC) Received: from TX2EHSMHS027.bigfish.com (unknown [10.9.14.241]) by mail118-tx2.bigfish.com (Postfix) with ESMTP id 4255D4A004B; Thu, 19 Sep 2013 07:37:07 +0000 (UTC) Received: from mail.freescale.net (70.37.183.190) by TX2EHSMHS027.bigfish.com (10.9.99.127) with Microsoft SMTP Server (TLS) id 14.16.227.3; Thu, 19 Sep 2013 07:37:07 +0000 Received: from az84smr01.freescale.net (10.64.34.197) by 039-SN1MMR1-004.039d.mgd.msft.net (10.84.1.14) with Microsoft SMTP Server (TLS) id 14.3.158.2; Thu, 19 Sep 2013 07:37:06 +0000 Received: from freescale.com ([10.232.15.72]) by az84smr01.freescale.net (8.14.3/8.14.0) with SMTP id r8J7b0A4029383; Thu, 19 Sep 2013 00:37:01 -0700 Received: by freescale.com (sSMTP sendmail emulation); Thu, 19 Sep 2013 12:59:47 +0530 From: Bharat Bhushan To: , , , , , , , , , Subject: [PATCH 3/7] fsl iommu: add get_dev_iommu_domain Date: Thu, 19 Sep 2013 12:59:19 +0530 Message-ID: <1379575763-2091-4-git-send-email-Bharat.Bhushan@freescale.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1379575763-2091-1-git-send-email-Bharat.Bhushan@freescale.com> References: <1379575763-2091-1-git-send-email-Bharat.Bhushan@freescale.com> MIME-Version: 1.0 X-OriginatorOrg: freescale.com X-FOPE-CONNECTOR: Id%0$Dn%*$RO%0$TLS%0$FQDN%$TlsDn% Cc: Bharat Bhushan X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.16rc2 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" From: Bharat Bhushan returns the iommu_domain of the requested device for fsl pamu. Use PCI controller dev struct for pci devices as current LIODN schema assign LIODN to PCI controller not PCI device. This will be corrected with proper LIODN schema. Signed-off-by: Bharat Bhushan --- drivers/iommu/fsl_pamu_domain.c | 30 ++++++++++++++++++++++++++++++ 1 files changed, 30 insertions(+), 0 deletions(-) diff --git a/drivers/iommu/fsl_pamu_domain.c b/drivers/iommu/fsl_pamu_domain.c index 14d803a..1d0dfe3 100644 --- a/drivers/iommu/fsl_pamu_domain.c +++ b/drivers/iommu/fsl_pamu_domain.c @@ -1140,6 +1140,35 @@ static u32 fsl_pamu_get_windows(struct iommu_domain *domain) return dma_domain->win_cnt; } +static struct iommu_domain *fsl_get_dev_domain(struct device *dev) +{ + struct pci_controller *pci_ctl; + struct device_domain_info *info; + struct pci_dev *pdev; + + /* + * Use PCI controller dev struct for pci devices as current + * LIODN schema assign LIODN to PCI controller not PCI device + * This should get corrected with proper LIODN schema. + */ + if (dev->bus == &pci_bus_type) { + pdev = to_pci_dev(dev); + pci_ctl = pci_bus_to_host(pdev->bus); + /* + * make dev point to pci controller device + * so we can get the LIODN programmed by + * u-boot. + */ + dev = pci_ctl->parent; + } + + info = dev->archdata.iommu_domain; + if (info && info->domain) + return info->domain->iommu_domain; + + return NULL; +} + static struct iommu_ops fsl_pamu_ops = { .domain_init = fsl_pamu_domain_init, .domain_destroy = fsl_pamu_domain_destroy, @@ -1155,6 +1184,7 @@ static struct iommu_ops fsl_pamu_ops = { .domain_get_attr = fsl_pamu_get_domain_attr, .add_device = fsl_pamu_add_device, .remove_device = fsl_pamu_remove_device, + .get_dev_iommu_domain = fsl_get_dev_domain, }; int pamu_domain_init()