From patchwork Fri Dec 14 13:51:53 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Varun Sethi X-Patchwork-Id: 206485 X-Patchwork-Delegate: galak@kernel.crashing.org 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 6AE892C03E9 for ; Sat, 15 Dec 2012 00:59:08 +1100 (EST) Received: from co1outboundpool.messaging.microsoft.com (co1ehsobe006.messaging.microsoft.com [216.32.180.189]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (Client CN "mail.global.frontbridge.com", Issuer "Microsoft Secure Server Authority" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 1DA7F2C00BF for ; Sat, 15 Dec 2012 00:57:23 +1100 (EST) Received: from mail75-co1-R.bigfish.com (10.243.78.217) by CO1EHSOBE001.bigfish.com (10.243.66.64) with Microsoft SMTP Server id 14.1.225.23; Fri, 14 Dec 2012 13:57:19 +0000 Received: from mail75-co1 (localhost [127.0.0.1]) by mail75-co1-R.bigfish.com (Postfix) with ESMTP id 534FB480228; Fri, 14 Dec 2012 13:57:19 +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: 0 X-BigFish: VS0(zzd799hzz1de0h1202h1e76h1d1ah1d2ahzz8275bhz2dh2a8h668h839he5bhf0ah1288h12a5h12a9h12bdh12e5h137ah139eh13b6h1441h1504h1537h162dh1631h1758h1155h) Received: from mail75-co1 (localhost.localdomain [127.0.0.1]) by mail75-co1 (MessageSwitch) id 135549343760032_27945; Fri, 14 Dec 2012 13:57:17 +0000 (UTC) Received: from CO1EHSMHS032.bigfish.com (unknown [10.243.78.208]) by mail75-co1.bigfish.com (Postfix) with ESMTP id 83F517000AB; Fri, 14 Dec 2012 13:57:16 +0000 (UTC) Received: from mail.freescale.net (70.37.183.190) by CO1EHSMHS032.bigfish.com (10.243.66.42) with Microsoft SMTP Server (TLS) id 14.1.225.23; Fri, 14 Dec 2012 13:57:16 +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.2.318.3; Fri, 14 Dec 2012 13:57:15 +0000 Received: from nmglablinux27.zin33.ap.freescale.net (nmglablinux28.zin33.ap.freescale.net [10.232.20.211]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id qBEDv20c011333; Fri, 14 Dec 2012 06:57:12 -0700 From: Varun Sethi To: , , , , , Subject: [PATCH 3/4 v7] iommu/fsl: Add iommu domain attributes required by fsl PAMU driver. Date: Fri, 14 Dec 2012 19:21:53 +0530 Message-ID: <1355493114-21776-3-git-send-email-Varun.Sethi@freescale.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1355493114-21776-1-git-send-email-Varun.Sethi@freescale.com> References: <1355493114-21776-1-git-send-email-Varun.Sethi@freescale.com> MIME-Version: 1.0 X-OriginatorOrg: freescale.com Cc: Varun Sethi X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.15 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" Added the following domain attributes required by FSL PAMU driver: 1. Subwindows field added to the iommu domain geometry attribute. 2. Added new iommu stash attribute, which allows setting of the LIODN specific stash id parameter through IOMMU API. 3. Added an attribute for enabling/disabling DMA to a particular memory window. 4. Added max_subwindows field to the geometry attribute. This is used to determine the maximum number sub windows available for the geometry. Signed-off-by: Varun Sethi --- changes in v7: - Added max_subwindows field to the geometry attribute. changes in v5: - Updated description of the subwindows field. changes in v4: - Updated comment explaining subwindows(as mentioned by Scott). change in v3: -renamed the stash attribute targets include/linux/iommu.h | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 49 insertions(+), 0 deletions(-) diff --git a/include/linux/iommu.h b/include/linux/iommu.h index f3b99e1..01ca1de 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -44,6 +44,47 @@ struct iommu_domain_geometry { dma_addr_t aperture_start; /* First address that can be mapped */ dma_addr_t aperture_end; /* Last address that can be mapped */ bool force_aperture; /* DMA only allowed in mappable range? */ + + /* + * A geometry mapping can be created in one of the following ways + * for an IOMMU: + * 1. A single contiguous window + * 2. Through arbritary paging throughout the aperture. + * 3. Using multiple subwindows + * + * In absence of arbritary paging, subwindows allow for supporting + * physically discontiguous mappings. + * + * This attribute indicates number of DMA subwindows supported by + * the geometry. If there is a single window that maps the entire + * geometry, attribute must be set to "1". A value of "0" implies + * that this mechanism is not used at all(normal paging is used). + * Value other than* "0" or "1" indicates the actual number of + * subwindows. + */ + u32 subwindows; + /* + * This is a read only field and indicates the maximum number of + * subwindows that are permitted for the geometry. The user is + * not allowed to write to this field. + */ + u32 max_subwindows; +}; + +/* cache stash targets */ +#define IOMMU_ATTR_CACHE_L1 1 +#define IOMMU_ATTR_CACHE_L2 2 +#define IOMMU_ATTR_CACHE_L3 3 + +/* This attribute corresponds to IOMMUs capable of generating + * a stash transaction. A stash transaction is typically a + * hardware initiated prefetch of data from memory to cache. + * This attribute allows configuring stashig specific parameters + * in the IOMMU hardware. + */ +struct iommu_stash_attribute { + u32 cpu; /* cpu number */ + u32 cache; /* cache to stash to: L1,L2,L3 */ }; struct iommu_domain { @@ -60,6 +101,14 @@ struct iommu_domain { enum iommu_attr { DOMAIN_ATTR_MAX, DOMAIN_ATTR_GEOMETRY, + /* Set the IOMMU hardware stashing + * parameters. + */ + DOMAIN_ATTR_STASH, + /* Explicity enable/disable DMA for a + * particular memory window. + */ + DOMAIN_ATTR_ENABLE, }; #ifdef CONFIG_IOMMU_API