lkml.org 
[lkml]   [2013]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCHv7 04/12] driver/core: populate devices in order for IOMMUs
    Date
    IOMMU devices on the bus need to be poplulated first, then iommu
    master devices are done later.

    With CONFIG_OF_IOMMU, "iommus=" DT binding would be used to identify
    whether a device can be an iommu msater or not. If a device can, we'll
    defer to populate that device till an iommu device is populated. Then,
    those deferred iommu master devices are populated and configured with
    help of the already populated iommu device.

    Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    This is related to the following discussion:
    [RFC PATCH] Documentation: devicetree: add description for generic bus properties
    http://lists.infradead.org/pipermail/linux-arm-kernel/2013-November/215042.html

    v6:
    Spinned off only driver core part from:
    [PATCHv5 2/9] driver/core: populate devices in order for IOMMUs

    v5:
    Use "iommus=" binding instread of arm,smmu's "#stream-id-cells".

    v4:
    This is newly added, and the successor of the following RFC:
    [RFC][PATCHv3+ 1/2] driver/core: Add of_iommu_attach()
    http://lists.linuxfoundation.org/pipermail/iommu/2013-November/006914.html

    Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
    ---
    drivers/base/dd.c | 5 +++++
    1 file changed, 5 insertions(+)

    diff --git a/drivers/base/dd.c b/drivers/base/dd.c
    index 0605176..0605f52 100644
    --- a/drivers/base/dd.c
    +++ b/drivers/base/dd.c
    @@ -25,6 +25,7 @@
    #include <linux/async.h>
    #include <linux/pm_runtime.h>
    #include <linux/pinctrl/devinfo.h>
    +#include <linux/of_iommu.h>

    #include "base.h"
    #include "power/power.h"
    @@ -273,6 +274,10 @@ static int really_probe(struct device *dev, struct device_driver *drv)

    dev->driver = drv;

    + ret = of_iommu_attach(dev);
    + if (ret)
    + goto probe_failed;
    +
    /* If using pinctrl, bind pins now before probing */
    ret = pinctrl_bind_pins(dev);
    if (ret)
    --
    1.8.1.5


    \
     
     \ /
      Last update: 2013-12-12 09:21    [W:2.845 / U:0.860 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site