Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1476313

Re: [PATCH v4 01/15] drivers: iommu: add FWNODE_IOMMU fwnode type

Path csiph.com!news.redatomik.org!aioe.org!bofh.it!news.nic.it!robomod
From Hanjun Guo <hanjun.guo@linaro.org>
Newsgroups linux.kernel
Subject Re: [PATCH v4 01/15] drivers: iommu: add FWNODE_IOMMU fwnode type
Date Mon, 05 Sep 2016 13:20:01 +0200
Message-ID <se06t-31m-9@gated-at.bofh.it> (permalink)
References <s6rZT-7hs-3@gated-at.bofh.it> <s6rZU-7hs-5@gated-at.bofh.it>
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=1/uJkiffuRuAJeozhNc9hi16pIGl+eFIJ2PAXXRaOhM=; b=aTsS6DBC/QcMIdD0ua6qjOroE1un/+xMTqGeUnuiCcySk9ApYUFxLl/7ZEtJ/58g+U Xb8O6NCSASCNHCF5Yc7XaH8biE3NnZUWyKHKIibPFk1t/2QD/kifDzw9XbzPDKV0R0vk Ie+H09Ynub9+gfueHYdtrBpk21akVWknpqYGY=
X-Google-Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=1/uJkiffuRuAJeozhNc9hi16pIGl+eFIJ2PAXXRaOhM=; b=MtunE9sto7fgTEnrLAziq5aIOuqSpPluJKKhP6PZ7uux+5yQAjAuXrlvmWW16sUkHE flQMwQd/AtbZnXq5kFclz/v+xfNT/CP+tP6npY0EE1BWpGjRTbRG7msTukbCABeoqbIl nb0SS0xO117WBwJFbQxESk30HitebW006Cw9ts5Y80aG9BEcImGp7Gp1VMZVG0E1tfUo uajJ6Lp3SZ5H9HDknRCsCGUcXCo1zU99CUq33yXQgyjfDNB4cE0qWpDFcTG/Li8o4zbk K7Qq+nVLNGFU+eWPGAoLiaxLAw/e4PBLoldjMD1Ccxz1Z9h1dCAHcdlPDhcdVaIcDUFj nD4w==
X-Gm-Message-State AE9vXwMUTI3KuYrCuT+sWB4F0YQbLDGR9eYnUzGNeJBCvYK6pFRPU7gOG7dGm2jNoHS5OcIT
X-Received by 10.98.52.71 with SMTP id b68mr41509328pfa.147.1473073886082; Mon, 05 Sep 2016 04:11:26 -0700 (PDT)
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0
MIME-Version 1.0
Content-Type text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding 7bit
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 92
Organization linux.* mail to news gateway
X-Original-Cc Joerg Roedel <joro@8bytes.org>, "Rafael J. Wysocki" <rjw@rjwysocki.net>, Will Deacon <will.deacon@arm.com>, Marc Zyngier <marc.zyngier@arm.com>, Robin Murphy <robin.murphy@arm.com>, Tomasz Nowicki <tn@semihalf.com>, Jon Masters <jcm@redhat.com>, Sinan Kaya <okaya@codeaurora.org>, Nate Watterson <nwatters@codeaurora.org>, Dennis Chen <dennis.chen@arm.com>, linux-acpi@vger.kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org
X-Original-Date Mon, 5 Sep 2016 19:11:18 +0800
X-Original-Message-ID <448e5f36-3cfe-73e6-04da-b390ce078f22@linaro.org>
X-Original-References <1471274620-20754-1-git-send-email-lorenzo.pieralisi@arm.com> <1471274620-20754-2-git-send-email-lorenzo.pieralisi@arm.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1476313

Show key headers only | View raw


On 2016/8/15 23:23, Lorenzo Pieralisi wrote:
> On systems booting with a device tree, every struct device is
> associated with a struct device_node, that represents its DT
> representation. The device node can be used in generic kernel
> contexts (eg IRQ translation, IOMMU streamid mapping), to
> retrieve the properties associated with the device and carry
> out kernel operation accordingly. Owing to the 1:1 relationship
> between the device and its device_node, the device_node can also
> be used as a look-up token for the device (eg looking up a device
> through its device_node), to retrieve the device in kernel paths
> where the device_node is available.
>
> On systems booting with ACPI, the same abstraction provided by
> the device_node is required to provide look-up functionality.
>
> Therefore, mirroring the approach implemented in the IRQ domain
> kernel layer, this patch adds an additional fwnode type FWNODE_IOMMU.
>
> This patch also implements a glue kernel layer that allows to
> allocate/free FWNODE_IOMMU fwnode_handle structures and associate
> them with IOMMU devices.
>
> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> Cc: Joerg Roedel <joro@8bytes.org>
> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
> ---
>  include/linux/fwnode.h |  1 +
>  include/linux/iommu.h  | 25 +++++++++++++++++++++++++
>  2 files changed, 26 insertions(+)
>
> diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h
> index 8516717..6e10050 100644
> --- a/include/linux/fwnode.h
> +++ b/include/linux/fwnode.h
> @@ -19,6 +19,7 @@ enum fwnode_type {
>  	FWNODE_ACPI_DATA,
>  	FWNODE_PDATA,
>  	FWNODE_IRQCHIP,
> +	FWNODE_IOMMU,
>  };
>
>  struct fwnode_handle {
> diff --git a/include/linux/iommu.h b/include/linux/iommu.h
> index a35fb8b..6f703cb 100644
> --- a/include/linux/iommu.h
> +++ b/include/linux/iommu.h
> @@ -38,6 +38,7 @@ struct bus_type;
>  struct device;
>  struct iommu_domain;
>  struct notifier_block;
> +struct fwnode_handle;
>
>  /* iommu fault flags */
>  #define IOMMU_FAULT_READ	0x0
> @@ -543,4 +544,28 @@ static inline void iommu_device_unlink(struct device *dev, struct device *link)
>
>  #endif /* CONFIG_IOMMU_API */
>
> +/* IOMMU fwnode handling */
> +static inline bool is_fwnode_iommu(struct fwnode_handle *fwnode)
> +{
> +	return fwnode && fwnode->type == FWNODE_IOMMU;
> +}
> +
> +static inline struct fwnode_handle *iommu_alloc_fwnode(void)
> +{
> +	struct fwnode_handle *fwnode;
> +
> +	fwnode = kzalloc(sizeof(struct fwnode_handle), GFP_ATOMIC);
> +	fwnode->type = FWNODE_IOMMU;
> +
> +	return fwnode;
> +}
> +
> +static inline void iommu_free_fwnode(struct fwnode_handle *fwnode)
> +{
> +	if (WARN_ON(!is_fwnode_iommu(fwnode)))
> +		return;
> +
> +	kfree(fwnode);
> +}
> +
>  #endif /* __LINUX_IOMMU_H */
>

This is the similar mechanism as FWNODE_IRQCHIP as mentioned in
change log,

Reviewed-by: Hanjun Guo <hanjun.guo@linaro.org>

Thanks
Hanjun

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

Re: [PATCH v4 01/15] drivers: iommu: add FWNODE_IOMMU fwnode type Hanjun Guo <hanjun.guo@linaro.org> - 2016-09-05 13:20 +0200

csiph-web