iommu/arm-smmu: add support for non-pci devices
Subsystems (3)
v3 cover iommu/arm-smmu: add support for non-pci devices
Changelog:
v2 -> v3:
1. add support for pci device hotplug, which missed in patch v2.
2. only support #iommu-cells = <1>, add corresponding description in arm,smmu-v3.txt.
3. add function find_smmu_by_device which extracted from find_smmu_by_node, to resolve the problem mentioned by Robin Murphy in [PATCH v2 7/9]. Additionally:
+ platform_set_drvdata(pdev, smmu); //Patch v2
+ dev->archdata.iommu = smmu; //Patch v3, dev = &pdev->dev
v1 -> v2:
update the implementation of patch 1/9 according to Will Deacon's suggestion. update the comment of patch 3/9 and 4/9.
use arm_smmu_options to skip the execution of command CMD_PREFETCH_CONFIG, see patch 5/9. patch 6/9 is base on Laurent's series, to support probe deferral.
patch 7/9 according to Robin Murphy's suggestion, remove global variable arm_smmu_devices, thanks. patch 9/9 add support for a master with multiple stream IDs.
Zhen Lei (5):
iommu/arm-smmu: to support probe deferral iommu/arm-smmu: remove arm_smmu_devices iommu/arm-smmu: rename __arm_smmu_get_pci_sid iommu/arm-smmu: add support for non-pci devices iommu/arm-smmu: describe the limitation of #iommu-cells
.../devicetree/bindings/iommu/arm,smmu-v3.txt | 6 + drivers/iommu/arm-smmu-v3.c | 209 ++++++++++++++++----- 2 files changed, 163 insertions(+), 52 deletions(-)
--
1.8.0
PATCH v3 1/5 iommu/arm-smmu: to support probe deferral
For pci devices, only the root nodes have "iommus" property. So we should traverse all of its sub nodes in of_xlate.
There exists two cases:
Case 1: .add_device(sub node) happened before .of_xlate(root node) Case 2: .add_device(sub node) happened after .of_xlate(root node)
(1).add_device
if (!root->archdata.iommu) return -ENODEV;
(2).of_xlate
root->archdata.iommu = smmu; /* * Probe the pci devices deferred in phase (1) */
(3).add_device
/* * After phase (2), it's not NULL */ if (!root->archdata.iommu) return -ENODEV; __arm_smmu_add_pci_device(pdev, root->archdata.iommu);
--- drivers/iommu/arm-smmu-v3.c | 147 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 117 insertions(+), 30 deletions(-)
drivers/iommu/arm-smmu-v3.c +117 -30
@@ -30,6 +30,8 @@#include <linux/of_address.h> #include <linux/pci.h> #include <linux/platform_device.h> +#include <linux/of_iommu.h> +#include <linux/of_platform.h> #include "io-pgtable.h"
@@ -1741,32 +1743,37 @@ static void __arm_smmu_release_pci_iommudata(void *data)kfree (data); } -static struct arm_smmu_device *arm_smmu_get_for_pci_dev (struct pci_dev *pdev) +static struct arm_smmu_device *find_smmu_by_device (struct device *dev) +{ +struct device_node *np = dev->of_node; + +/* to ensure np is a smmu device node */ +if (!of_iommu_get_ops (np)) +return NULL ; + +return dev->archdata.iommu; +} + +static struct arm_smmu_device *find_smmu_by_node (struct device_node *np) +{ +struct platform_device *pdev; + + pdev =of_find_device_by_node (np); +if (!pdev) +return NULL ; + +return find_smmu_by_device (&pdev->dev); +} + +static struct device *arm_smmu_get_pci_dev_root (struct pci_dev *pdev) { -struct device_node *of_node; -struct arm_smmu_device *curr, *smmu =NULL ;struct pci_bus *bus = pdev->bus;/* Walk up to the root bus */ while (!pci_is_root_bus (bus)) bus = bus->parent; -/* Follow the "iommus" phandle from the host controller */ - of_node =of_parse_phandle (bus->bridge->parent->of_node,"iommus" ,0 ); -if (!of_node) -return NULL ; - -/* See if we can find an SMMU corresponding to the phandle */ -spin_lock (&arm_smmu_devices_lock); -list_for_each_entry (curr, &arm_smmu_devices, list) { -if (curr->dev->of_node == of_node) { - smmu = curr; -break ; - } - } -spin_unlock (&arm_smmu_devices_lock); -of_node_put (of_node); -return smmu; +return bus->bridge->parent; }static bool arm_smmu_sid_in_range (struct arm_smmu_device *smmu,u32 sid)
@@ -1779,27 +1786,21 @@ static bool arm_smmu_sid_in_range(struct arm_smmu_device *smmu, u32 sid)return sid < limit; } -static int arm_smmu_add_device (struct device *dev) +static int __arm_smmu_add_device (struct device *dev,u32 sid) {int i, ret; -u32 sid, *sids; -struct pci_dev *pdev; +u32 *sids;struct iommu_group *group;struct arm_smmu_group *smmu_group;struct arm_smmu_device *smmu; -/* We only support PCI, for now */ -if (!dev_is_pci (dev)) -return -ENODEV ; - - pdev =to_pci_dev (dev); group =iommu_group_get_for_dev (dev);if (IS_ERR (group))return PTR_ERR (group); smmu_group =iommu_group_get_iommudata (group);if (!smmu_group) { - smmu =arm_smmu_get_for_pci_dev (pdev); + smmu = dev->archdata.iommu;if (!smmu) { ret = -ENOENT ; goto out_put_group;
@@ -1819,8 +1820,6 @@ static int arm_smmu_add_device(struct device *dev) smmu = smmu_group->smmu; } -/* Assume SID == RID until firmware tells us otherwise */ -pci_for_each_dma_alias (pdev, __arm_smmu_get_pci_sid, &sid);for (i =0 ; i < smmu_group->num_sids; ++i) {/* If we already know about this SID, then we're done */ if (smmu_group->sids[i] == sid)
@@ -1857,11 +1856,43 @@ static int arm_smmu_add_device(struct device *dev) out_put_group:iommu_group_put (group); +dev_err (dev,"failed to add into SMMU\n" );return ret; } +static int __arm_smmu_add_pci_device (struct pci_dev *pdev,void *smmu) +{ +u32 sid; +struct device *dev = &pdev->dev; + +/* Assume SID == RID until firmware tells us otherwise */ +pci_for_each_dma_alias (pdev, __arm_smmu_get_pci_sid, &sid); + + dev->archdata.iommu = smmu; + +return __arm_smmu_add_device (dev, sid); +} + +static int arm_smmu_add_device (struct device *dev) +{ +struct pci_dev *pdev; +struct device *root; + +/* only support pci devices hotplug */ +if (!dev_is_pci (dev)) +return -ENODEV ; + + pdev =to_pci_dev (dev); + root =arm_smmu_get_pci_dev_root (pdev); +if (!root->archdata.iommu) +return -ENODEV ; + +return __arm_smmu_add_pci_device (pdev, root->archdata.iommu); +} +static void arm_smmu_remove_device (struct device *dev) { + dev->archdata.iommu =NULL ;iommu_group_remove_device (dev); }
@@ -1909,7 +1940,58 @@ out_unlock:return ret; } +static int arm_smmu_of_xlate (struct device *dev,struct of_phandle_args *args) +{ +int ret; +struct arm_smmu_device *smmu; + +/* +* We can sure that args->np is a smmu device node, because this +* function was called by of_xlate hook. +* +* And in arm_smmu_device_dt_probe: +* dev->archdata.iommu = smmu; +* of_iommu_set_ops(smmu->dev->of_node, &arm_smmu_ops); +* +* It seems impossible return NULL in normal times. +*/ + smmu =find_smmu_by_node (args->np); +if (!smmu) { +dev_err (dev,"unknown error caused smmu driver crashed\n" ); +return -ENODEV ; + } + +if (!dev->archdata.iommu) + dev->archdata.iommu = smmu; + +if (dev->archdata.iommu != smmu) { +dev_err (dev,"behinds more than one smmu\n" ); +return -EINVAL ; + } + +/* We only support PCI, for now */ +if (!dev_is_pci (dev)) { +return -ENODEV ; + }else { +struct device *root; +struct pci_dev *pdev =NULL ; + +for_each_pci_dev (pdev) { + root =arm_smmu_get_pci_dev_root (pdev); +if (root->of_node != dev->of_node) +continue ; + + ret =__arm_smmu_add_pci_device (pdev, smmu); +if (ret) +return ret; + } + } + +return 0 ; +} +static struct iommu_ops arm_smmu_ops = { + .of_xlate = arm_smmu_of_xlate, .capable = arm_smmu_capable, .domain_alloc = arm_smmu_domain_alloc, .domain_free = arm_smmu_domain_free,
@@ -2635,6 +2717,9 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev)spin_lock (&arm_smmu_devices_lock);list_add (&smmu->list, &arm_smmu_devices);spin_unlock (&arm_smmu_devices_lock); + dev->archdata.iommu = smmu; +of_iommu_set_ops (smmu->dev->of_node, &arm_smmu_ops); +return 0 ; out_free_structures:
@@ -2706,6 +2791,8 @@ static void __exit arm_smmu_exit(void)subsys_initcall (arm_smmu_init);module_exit (arm_smmu_exit); +IOMMU_OF_DECLARE (arm_smmu_v3,"arm,smmu-v3" ,NULL ); +MODULE_DESCRIPTION ("IOMMU API for ARM architected SMMUv3 implementations" );MODULE_AUTHOR ("Will Deacon <[email protected]>" );MODULE_LICENSE ("GPL v2" );
--
1.8.0
PATCH v3 2/5 iommu/arm-smmu: remove arm_smmu_devices
In reply to Zhen LeiIt can be replaced by of_iommu_list(in of_iommu.c).
--- drivers/iommu/arm-smmu-v3.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-)
drivers/iommu/arm-smmu-v3.c +2 -20
@@ -605,10 +605,6 @@ struct arm_smmu_domain {struct iommu_domain domain; }; -/* Our list of SMMU instances */ -static DEFINE_SPINLOCK (arm_smmu_devices_lock); -static LIST_HEAD (arm_smmu_devices); -struct arm_smmu_option_prop {u32 opt;const char *prop;
@@ -2712,11 +2708,6 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev)if (ret) goto out_free_structures; -/* Record our private device structure */ -INIT_LIST_HEAD (&smmu->list); -spin_lock (&arm_smmu_devices_lock); -list_add (&smmu->list, &arm_smmu_devices); -spin_unlock (&arm_smmu_devices_lock); dev->archdata.iommu = smmu;of_iommu_set_ops (smmu->dev->of_node, &arm_smmu_ops);
@@ -2729,19 +2720,10 @@ out_free_structures:static int arm_smmu_device_remove (struct platform_device *pdev) { -struct arm_smmu_device *curr, *smmu =NULL ; +struct arm_smmu_device *smmu;struct device *dev = &pdev->dev; -spin_lock (&arm_smmu_devices_lock); -list_for_each_entry (curr, &arm_smmu_devices, list) { -if (curr->dev == dev) { - smmu = curr; -list_del (&smmu->list); -break ; - } - } -spin_unlock (&arm_smmu_devices_lock); - + smmu =find_smmu_by_device (dev);if (!smmu)return -ENODEV ;
--
1.8.0
PATCH v3 3/5 iommu/arm-smmu: rename __arm_smmu_get_pci_sid
In reply to Zhen LeiRemove the words "pci", to make this function can also be used by non-pci devices.
--- drivers/iommu/arm-smmu-v3.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/iommu/arm-smmu-v3.c +2 -2
@@ -1734,7 +1734,7 @@ static int __arm_smmu_get_pci_sid(struct pci_dev *pdev, u16 alias, void *sidp)return 0 ;/* Continue walking */ } -static void __arm_smmu_release_pci_iommudata (void *data) +static void __arm_smmu_release_iommudata (void *data) {kfree (data); }
@@ -1811,7 +1811,7 @@ static int __arm_smmu_add_device(struct device *dev, u32 sid) smmu_group->ste.valid = true; smmu_group->smmu = smmu;iommu_group_set_iommudata (group, smmu_group, - __arm_smmu_release_pci_iommudata); + __arm_smmu_release_iommudata); }else { smmu = smmu_group->smmu; }
--
1.8.0
PATCH v3 4/5 iommu/arm-smmu: add support for non-pci devices
In reply to Zhen LeiThis patch support a master with multiple stream IDs, but doesn't support a master behinds more than one SMMUs.
--- drivers/iommu/arm-smmu-v3.c | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-)
drivers/iommu/arm-smmu-v3.c +38 -2
@@ -30,6 +30,7 @@#include <linux/of_address.h> #include <linux/pci.h> #include <linux/platform_device.h> +#include <linux/amba/bus.h> #include <linux/of_iommu.h> #include <linux/of_platform.h>
@@ -1965,9 +1966,36 @@ static int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args *args)return -EINVAL ; } -/* We only support PCI, for now */ if (!dev_is_pci (dev)) { -return -ENODEV ; +struct iommu_group *group; + +if (args->args_count !=1 ) { +dev_err (dev, +"only support #iommu-cells = <1>, please check node: %s\n" , +dev_name (smmu->dev)); +return -ENODEV ; + } + + group =iommu_group_get (dev); +if (!group) { + group =iommu_group_alloc (); +if (IS_ERR (group)) { +dev_err (dev,"failed to allocate IOMMU group\n" ); +return PTR_ERR (group); + } + + ret =iommu_group_add_device (group, dev); +if (ret) { +iommu_group_put (group); +dev_err (dev,"failed to add device into IOMMU group\n" ); +return ret; + } + } +iommu_group_put (group); + + ret =__arm_smmu_add_device (dev, args->args[0 ]); +if (ret) +return ret; }else {struct device *root;struct pci_dev *pdev =NULL ;
@@ -2762,6 +2790,14 @@ static int __init arm_smmu_init(void)if (ret)return ret; +if (!iommu_present (&platform_bus_type)) +bus_set_iommu (&platform_bus_type, &arm_smmu_ops); + +#ifdef CONFIG_ARM_AMBA +if (!iommu_present (&amba_bustype)) +bus_set_iommu (&amba_bustype, &arm_smmu_ops); +#endif +return bus_set_iommu (&pci_bus_type, &arm_smmu_ops); }
--
1.8.0
PATCH v3 5/5 iommu/arm-smmu: describe the limitation of #iommu-cells
In reply to Zhen LeiOnly support #iommu-cells = <1>.
--- Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt | 6 ++++++ 1 file changed, 6 insertions(+)
Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt +6 -0
@@ -5,6 +5,12 @@ revisions, replacing the MMIO register interface with in-memory command and event queues and adding support for the ATS and PRI components of the PCIe specification. +Please read ./iommu.txt first, here list something special as below: + +** SMMUv3 limited properties: +- #iommu-cells : fixed to <1>. The pci root device is a special case, + its IDs can be omitted in dts, seems #iommu-cells = <0>. + ** SMMUv3 required properties: - compatible : Should include:
--
1.8.0
Robin Murphy
reviewerv3 cover iommu/arm-smmu: add support for non-pci devices
In reply to Zhen LeiQuoted 9 lines · Zhen Lei
Changelog:
v2 -> v3:
1. add support for pci device hotplug, which missed in patch v2.
2. only support #iommu-cells = <1>, add corresponding description in arm,smmu-v3.txt.
3. add functionfind_smmu_by_devicewhich extracted fromfind_smmu_by_node, to resolve the problem mentioned by Robin Murphy in [PATCH v2 7/9]. Additionally:
+platform_set_drvdata(pdev, smmu); //Patch v2
+dev->archdata.iommu= smmu; //Patch v3, dev =&pdev->dev
I didn't give any Reviewed-by tags, much less to revised patches that I've not even looked at yet; please see section 13 of Documentation/SubmittingPatches for what the Reviewed-by tag means.
Robin.
Quoted 24 lines
v1 -> v2:
update the implementation of patch 1/9 according to Will Deacon's suggestion. update the comment of patch 3/9 and 4/9.
usearm_smmu_optionsto skip the execution of commandCMD_PREFETCH_CONFIG, see patch 5/9. patch 6/9 is base on Laurent's series, to support probe deferral.
patch 7/9 according to Robin Murphy's suggestion, remove global variablearm_smmu_devices, thanks. patch 9/9 add support for a master with multiple stream IDs.Zhen Lei (5):
iommu/arm-smmu: to support probe deferral iommu/arm-smmu: removearm_smmu_devicesiommu/arm-smmu: rename__arm_smmu_get_pci_sidiommu/arm-smmu: add support for non-pci devices iommu/arm-smmu: describe the limitation of #iommu-cells.../devicetree/bindings/iommu/arm,smmu-v3.txt | 6 + drivers/iommu/arm-smmu-v3.c | 209 ++++++++++++++++----- 2 files changed, 163 insertions(+), 52 deletions(-)--
1.8.0
v3 cover iommu/arm-smmu: add support for non-pci devices
Quoted 12 lines · Robin Murphy
Quoted 9 lines · Zhen Lei
Changelog:
v2 -> v3:
1. add support for pci device hotplug, which missed in patch v2.
2. only support #iommu-cells = <1>, add corresponding description in arm,smmu-v3.txt.
3. add functionfind_smmu_by_devicewhich extracted fromfind_smmu_by_node, to resolve the problem mentioned by Robin Murphy in [PATCH v2 7/9]. Additionally:
+platform_set_drvdata(pdev, smmu); //Patch v2
+dev->archdata.iommu= smmu; //Patch v3, dev =&pdev->dev
Quoted 1 line
I didn't give any Reviewed-by tags, much less to revised patches that I've not even looked at yet; please see section 13 of
Documentation/SubmittingPatchesfor what the Reviewed-by tag means.
OK. I see that now. So that Reviewed-by tags should always be given by the reviewer.
I initially thought that "Reviewed-by" should be added for who had reviewed the patch.
Quoted 31 lines
Robin.
Quoted 16 lines
v1 -> v2:
update the implementation of patch 1/9 according to Will Deacon's suggestion. update the comment of patch 3/9 and 4/9.
usearm_smmu_optionsto skip the execution of commandCMD_PREFETCH_CONFIG, see patch 5/9. patch 6/9 is base on Laurent's series, to support probe deferral.
patch 7/9 according to Robin Murphy's suggestion, remove global variablearm_smmu_devices, thanks. patch 9/9 add support for a master with multiple stream IDs.Zhen Lei (5):
iommu/arm-smmu: to support probe deferral iommu/arm-smmu: removearm_smmu_devicesiommu/arm-smmu: rename__arm_smmu_get_pci_sidiommu/arm-smmu: add support for non-pci devices iommu/arm-smmu: describe the limitation of #iommu-cellsQuoted 8 lines
.../devicetree/bindings/iommu/arm,smmu-v3.txt | 6 + drivers/iommu/arm-smmu-v3.c | 209 ++++++++++++++++----- 2 files changed, 163 insertions(+), 52 deletions(-)Signature · 1 line
1.8.0.
v3 cover iommu/arm-smmu: add support for non-pci devices
In reply to Robin MurphyQuoted 12 lines · Robin Murphy
Quoted 9 lines · Zhen Lei
Changelog:
v2 -> v3:
1. add support for pci device hotplug, which missed in patch v2.
2. only support #iommu-cells = <1>, add corresponding description in arm,smmu-v3.txt.
3. add functionfind_smmu_by_devicewhich extracted fromfind_smmu_by_node, to resolve the problem mentioned by Robin Murphy in [PATCH v2 7/9]. Additionally:
+platform_set_drvdata(pdev, smmu); //Patch v2
+dev->archdata.iommu= smmu; //Patch v3, dev =&pdev->dev
Quoted 3 lines
I didn't give any Reviewed-by tags, much less to revised patches that I've not even looked at yet; please see section 13 of
Documentation/SubmittingPatchesfor what the Reviewed-by tag means.
That said, it would be great if you could review the patches anyway ;)
Also, it looks like this is all based on Laurent's IOMMU probe deferral series which hasn't seen any movement for a while.
Laurent: are you planning to repost that, or is it worth us picking up the original version and bashing it into shape ourselves?
Will
v3 cover iommu/arm-smmu: add support for non-pci devices
Hi Will,
Quoted 18 lines · On Tuesday 28 July 2015 13:48:47 Will Deacon wrote:
Quoted 13 lines · Robin Murphy
Quoted 11 lines · Zhen Lei
Changelog:
v2 -> v3:
1. add support for pci device hotplug, which missed in patch v2.
2. only support #iommu-cells = <1>, add corresponding description in arm,smmu-v3.txt. 3. add functionfind_smmu_by_devicewhich extracted fromfind_smmu_by_node, to resolve> >
the problem mentioned by Robin Murphy in [PATCH v2 7/9]. Additionally:
+platform_set_drvdata(pdev, smmu); //Patch v2
+dev->archdata.iommu= smmu; //Patch v3, dev =
&pdev->devQuoted 3 lines
I didn't give any Reviewed-by tags, much less to revised patches that I've not even looked at yet; please see section 13 of
Documentation/SubmittingPatchesfor what the Reviewed-by tag means.
Quoted 7 lines
That said, it would be great if you could review the patches anyway ;)
Also, it looks like this is all based on Laurent's IOMMU probe deferral series which hasn't seen any movement for a while.
Laurent: are you planning to repost that, or is it worth us picking up the original version and bashing it into shape ourselves?
I'd really appreciate if you could take it where I left it and get into shape for upstream. I have no time to work on IOMMU at the moment I'm afraid :-( I'll try to review patches though.
Signature · 3 lines
Regards, Laurent Pinchart
v3 cover iommu/arm-smmu: add support for non-pci devices
Quoted 1 line · Laurent Pinchart
Hi Will,
Hi Laurent,
Quoted 21 lines · On Tuesday 28 July 2015 13:48:47 Will Deacon wrote:
Quoted 20 lines · Robin Murphy
Quoted 13 lines · Zhen Lei
Quoted 11 lines
Changelog:
v2 -> v3:
1. add support for pci device hotplug, which missed in patch v2.
2. only support #iommu-cells = <1>, add corresponding description in arm,smmu-v3.txt. 3. add functionfind_smmu_by_devicewhich extracted fromfind_smmu_by_node, to resolve> >
the problem mentioned by Robin Murphy in [PATCH v2 7/9]. Additionally:
+platform_set_drvdata(pdev, smmu); //Patch v2
+dev->archdata.iommu= smmu; //Patch v3, dev =
&pdev->devQuoted 3 lines
I didn't give any Reviewed-by tags, much less to revised patches that I've not even looked at yet; please see section 13 of
Documentation/SubmittingPatchesfor what the Reviewed-by tag means.That said, it would be great if you could review the patches anyway ;)
Quoted 8 lines
Quoted 5 lines
Also, it looks like this is all based on Laurent's IOMMU probe deferral series which hasn't seen any movement for a while.
Laurent: are you planning to repost that, or is it worth us picking up the original version and bashing it into shape ourselves?
I'd really appreciate if you could take it where I left it and get into shape for upstream. I have no time to work on IOMMU at the moment I'm afraid :-(
No problem at all. It will probably be Robin doing most of the hacking, since he's the platform_device guy and I'm the PCI guy in the office at the moment :)
I think he's also currently got a rebased version of your series with some changes on top, so stay tuned.
Quoted 1 line
I'll try to review patches though.
That would certainly be appreciated, cheers!
Will
v3 cover iommu/arm-smmu: add support for non-pci devices
Hi Will,
Quoted 33 lines · On Wednesday 05 August 2015 11:45:24 Will Deacon wrote:
Quoted 25 lines · Laurent Pinchart
Quoted 24 lines · On Tuesday 28 July 2015 13:48:47 Will Deacon wrote:
Quoted 14 lines · Robin Murphy
Quoted 7 lines · Zhen Lei
Changelog:
v2 -> v3:
1. add support for pci device hotplug, which missed in patch v2.
2. only support #iommu-cells = <1>, add corresponding description in arm,smmu-v3.txt. 3. add functionfind_smmu_by_devicewhich extracted fromfind_smmu_by_node, to resolve> >Quoted 5 lines
the problem mentioned by Robin Murphy in [PATCH v2 7/9]. Additionally:
+platform_set_drvdata(pdev, smmu); //Patch v2
+dev->archdata.iommu= smmu; //Patch v3, dev =
&pdev->devQuoted 3 lines
I didn't give any Reviewed-by tags, much less to revised patches that I've not even looked at yet; please see section 13 of
Documentation/SubmittingPatchesfor what the Reviewed-by tag means.That said, it would be great if you could review the patches anyway ;)
Also, it looks like this is all based on Laurent's IOMMU probe deferral series which hasn't seen any movement for a while.
Quoted 6 lines
Quoted 2 lines
Laurent: are you planning to repost that, or is it worth us picking up the original version and bashing it into shape ourselves?
I'd really appreciate if you could take it where I left it and get into shape for upstream. I have no time to work on IOMMU at the moment I'm afraid :-(
Quoted 6 lines
No problem at all. It will probably be Robin doing most of the hacking, since he's the
platform_deviceguy and I'm the PCI guy in the office at the moment :)I think he's also currently got a rebased version of your series with some changes on top, so stay tuned.
Great ! As they say here, paljon kiitoksia (yes, Finnish can be used on mailing lists for other purposes than cursing ;-)).
Quoted 3 lines
Quoted 1 line
I'll try to review patches though.
That would certainly be appreciated, cheers!
Signature · 3 lines
Regards, Laurent Pinchart