lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <54C68C1D.5030605@ti.com>
Date:	Mon, 26 Jan 2015 13:49:01 -0500
From:	Murali Karicheri <m-karicheri2@...com>
To:	Laurent Pinchart <laurent.pinchart@...asonboard.com>
CC:	<linux-arm-kernel@...ts.infradead.org>,
	<linux-kernel@...r.kernel.org>, <linux-pci@...r.kernel.org>,
	<devicetree@...r.kernel.org>, <iommu@...ts.linux-foundation.org>,
	Russell King <linux@....linux.org.uk>,
	Arnd Bergmann <arnd@...db.de>, Joerg Roedel <joro@...tes.org>,
	Will Deacon <will.deacon@....com>,
	Rob Herring <robh+dt@...nel.org>,
	Bjorn Helgaas <bhelgaas@...gle.com>,
	Suravee Suthikulpanit <Suravee.Suthikulpanit@....com>,
	Grant Likely <grant.likely@...aro.org>
Subject: Re: [PATCH v4 1/6] of: iommu: add ptr to OF node arg to of_iommu_configure()

On 01/25/2015 08:32 AM, Laurent Pinchart wrote:
> Hi Murali,
>
> Thank you for the patch.
>
> On Friday 23 January 2015 17:32:34 Murali Karicheri wrote:
>> Function of_iommu_configure() is called from of_dma_configure() to
>> setup iommu ops using DT property. This API is currently used for
>> platform devices for which DMA configuration (including iommu ops)
>> may come from device's parent. To extend this functionality for PCI
>> devices, this API need to take a parent node ptr as an argument
>> instead of assuming device's parent. This is needed since for PCI, the
>> dma configuration may be defined in the DT node of the root bus bridge's
>> parent device. Currently only dma-range is used for PCI and iommu is not
>> supported. So return error if the device is PCI.
>>
>> Cc: Joerg Roedel<joro@...tes.org>
>> Cc: Grant Likely<grant.likely@...aro.org>
>> Cc: Rob Herring<robh+dt@...nel.org>
>> Cc: Bjorn Helgaas<bhelgaas@...gle.com>
>> Cc: Will Deacon<will.deacon@....com>
>> Cc: Russell King<linux@....linux.org.uk>
>> Cc: Arnd Bergmann<arnd@...db.de>
>> Cc: Suravee Suthikulpanit<Suravee.Suthikulpanit@....com>
>>
>> Signed-off-by: Murali Karicheri<m-karicheri2@...com>
>> ---
>>   drivers/iommu/of_iommu.c |   10 ++++++++--
>>   drivers/of/platform.c    |    2 +-
>>   include/linux/of_iommu.h |    6 ++++--
>>   3 files changed, 13 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
>> index af1dc6a..439235b 100644
>> --- a/drivers/iommu/of_iommu.c
>> +++ b/drivers/iommu/of_iommu.c
>> @@ -133,19 +133,25 @@ struct iommu_ops *of_iommu_get_ops(struct device_node
>> *np) return ops;
>>   }
>>
>> -struct iommu_ops *of_iommu_configure(struct device *dev)
>> +struct iommu_ops *of_iommu_configure(struct device *dev,
>> +				     struct device_node *iommu_np)
>>   {
>>   	struct of_phandle_args iommu_spec;
>>   	struct device_node *np;
>>   	struct iommu_ops *ops = NULL;
>>   	int idx = 0;
>>
>> +	if (dev_is_pci(dev)) {
>> +		dev_err(dev, "iommu is currently not supported for PCI\n");
>> +		return NULL;
>> +	}
>> +
>>   	/*
>>   	 * We don't currently walk up the tree looking for a parent IOMMU.
>>   	 * See the `Notes:' section of
>>   	 * Documentation/devicetree/bindings/iommu/iommu.txt
>>   	 */
> Wouldn't it be better to fix this rather than passing the device node pointer
> to the function ? The solution would be more generic.
Laurent,

Will Deacon (Copied here) is working on this as we alteady discussed in 
this thread. So it will be
addressed by him in another series.

Murali
>
>> -	while (!of_parse_phandle_with_args(dev->of_node, "iommus",
>> +	while (!of_parse_phandle_with_args(iommu_np, "iommus",
>>   					   "#iommu-cells", idx,
>>   					&iommu_spec)) {
>>   		np = iommu_spec.np;
>> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
>> index a54ec10..7675b79 100644
>> --- a/drivers/of/platform.c
>> +++ b/drivers/of/platform.c
>> @@ -196,7 +196,7 @@ static void of_dma_configure(struct device *dev)
>>   	dev_dbg(dev, "device is%sdma coherent\n",
>>   		coherent ? " " : " not ");
>>
>> -	iommu = of_iommu_configure(dev);
>> +	iommu = of_iommu_configure(dev, dev->of_node);
>>   	dev_dbg(dev, "device is%sbehind an iommu\n",
>>   		iommu ? " " : " not ");
>>
>> diff --git a/include/linux/of_iommu.h b/include/linux/of_iommu.h
>> index 16c7554..a97e5bd 100644
>> --- a/include/linux/of_iommu.h
>> +++ b/include/linux/of_iommu.h
>> @@ -12,7 +12,8 @@ extern int of_get_dma_window(struct device_node *dn, const
>> char *prefix, size_t *size);
>>
>>   extern void of_iommu_init(void);
>> -extern struct iommu_ops *of_iommu_configure(struct device *dev);
>> +extern struct iommu_ops *of_iommu_configure(struct device *dev,
>> +					struct device_node *iommu_np);
>>
>>   #else
>>
>> @@ -24,7 +25,8 @@ static inline int of_get_dma_window(struct device_node
>> *dn, const char *prefix, }
>>
>>   static inline void of_iommu_init(void) { }
>> -static inline struct iommu_ops *of_iommu_configure(struct device *dev)
>> +static inline struct iommu_ops *of_iommu_configure(struct device *dev,
>> +					 struct device_node *iommu_np)
>>   {
>>   	return NULL;
>>   }


-- 
Murali Karicheri
Linux Kernel, Texas Instruments

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ