All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vivek Gautam <vivek.gautam@codeaurora.org>
To: Robin Murphy <robin.murphy@arm.com>,
	Jeffy Chen <jeffy.chen@rock-chips.com>,
	linux-kernel@vger.kernel.org
Cc: Mark Rutland <mark.rutland@arm.com>,
	devicetree@vger.kernel.org, Heiko Stuebner <heiko@sntech.de>,
	jcliang@chromium.org, linux-rockchip@lists.infradead.org,
	iommu@lists.linux-foundation.org,
	Rob Herring <robh+dt@kernel.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 08/13] iommu/rockchip: Control clocks needed to access the IOMMU
Date: Wed, 14 Feb 2018 15:33:56 +0530	[thread overview]
Message-ID: <edc5002d-c83f-cf11-ecfb-0c4400b10d07@codeaurora.org> (raw)
In-Reply-To: <f06d2d9f-3869-ed02-43f4-f4ea4a104a57@arm.com>



On 1/24/2018 7:19 PM, Robin Murphy wrote:
> On 24/01/18 10:35, Jeffy Chen wrote:
>> From: Tomasz Figa <tfiga@chromium.org>
>>
>> Current code relies on master driver enabling necessary clocks before
>> IOMMU is accessed, however there are cases when the IOMMU should be
>> accessed while the master is not running yet, for example allocating
>> V4L2 videobuf2 buffers, which is done by the VB2 framework using DMA
>> mapping API and doesn't engage the master driver at all.
>>
>> This patch fixes the problem by letting clocks needed for IOMMU
>> operation to be listed in Device Tree and making the driver enable them
>> for the time of accessing the hardware.
>>
>> Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
>> Signed-off-by: Tomasz Figa <tfiga@chromium.org>
>> ---
>>
>> Changes in v5:
>> Use clk_bulk APIs.
>>
>> Changes in v4: None
>> Changes in v3: None
>> Changes in v2: None

[snip]

>>   +static int rk_iommu_of_get_clocks(struct rk_iommu *iommu)
>> +{
>> +    struct device_node *np = iommu->dev->of_node;
>> +    int ret;
>> +    int i;
>> +
>> +    ret = of_count_phandle_with_args(np, "clocks", "#clock-cells");
>> +    if (ret == -ENOENT)
>> +        return 0;
>> +    else if (ret < 0)
>> +        return ret;
>> +
>> +    iommu->num_clocks = ret;
>> +    iommu->clocks = devm_kcalloc(iommu->dev, iommu->num_clocks,
>> +                     sizeof(*iommu->clocks), GFP_KERNEL);
>> +    if (!iommu->clocks)
>> +        return -ENOMEM;
>> +
>> +    for (i = 0; i < iommu->num_clocks; ++i) {
>> +        iommu->clocks[i].clk = of_clk_get(np, i);
>> +        if (IS_ERR(iommu->clocks[i].clk)) {
>> +            ret = PTR_ERR(iommu->clocks[i].clk);
>> +            goto err_clk_put;
>> +        }
>> +    }
>
> Just to confirm my understanding from a quick scan through the code, 
> the reason we can't use clk_bulk_get() here is that currently, 
> clocks[i].id being NULL means we'd end up just getting the first clock 
> multiple times, right?
>
> I guess there could be other users who also want "just get whatever 
> clocks I have" functionality, so it might be worth proposing that for 
> the core API as a separate/follow-up patch, but it definitely doesn't 
> need to be part of this series.

Just to understand. Is it okay to make the driver "just get whatever 
clocks device node gives"?
Doesn't the driver need to be aware of which all clocks are supposed to 
be obtained and enabled
  It's should good for debug to let the world know which clock we failed 
to get.

regards
Vivek

>
> I really don't know enough about correct clk API usage, but modulo the 
> binding comments it certainly looks nice and tidy now;
>
> Acked-by: Robin Murphy <robin.murphy@arm.com>
>
> Thanks,
> Robin.
[snip]

> _______________________________________________
> iommu mailing list
> iommu@lists.linux-foundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/iommu

WARNING: multiple messages have this Message-ID (diff)
From: Vivek Gautam <vivek.gautam-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
To: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>,
	Jeffy Chen <jeffy.chen-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>,
	jcliang-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
	linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH v5 08/13] iommu/rockchip: Control clocks needed to access the IOMMU
Date: Wed, 14 Feb 2018 15:33:56 +0530	[thread overview]
Message-ID: <edc5002d-c83f-cf11-ecfb-0c4400b10d07@codeaurora.org> (raw)
In-Reply-To: <f06d2d9f-3869-ed02-43f4-f4ea4a104a57-5wv7dgnIgG8@public.gmane.org>



On 1/24/2018 7:19 PM, Robin Murphy wrote:
> On 24/01/18 10:35, Jeffy Chen wrote:
>> From: Tomasz Figa <tfiga-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
>>
>> Current code relies on master driver enabling necessary clocks before
>> IOMMU is accessed, however there are cases when the IOMMU should be
>> accessed while the master is not running yet, for example allocating
>> V4L2 videobuf2 buffers, which is done by the VB2 framework using DMA
>> mapping API and doesn't engage the master driver at all.
>>
>> This patch fixes the problem by letting clocks needed for IOMMU
>> operation to be listed in Device Tree and making the driver enable them
>> for the time of accessing the hardware.
>>
>> Signed-off-by: Jeffy Chen <jeffy.chen-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
>> Signed-off-by: Tomasz Figa <tfiga-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
>> ---
>>
>> Changes in v5:
>> Use clk_bulk APIs.
>>
>> Changes in v4: None
>> Changes in v3: None
>> Changes in v2: None

[snip]

>>   +static int rk_iommu_of_get_clocks(struct rk_iommu *iommu)
>> +{
>> +    struct device_node *np = iommu->dev->of_node;
>> +    int ret;
>> +    int i;
>> +
>> +    ret = of_count_phandle_with_args(np, "clocks", "#clock-cells");
>> +    if (ret == -ENOENT)
>> +        return 0;
>> +    else if (ret < 0)
>> +        return ret;
>> +
>> +    iommu->num_clocks = ret;
>> +    iommu->clocks = devm_kcalloc(iommu->dev, iommu->num_clocks,
>> +                     sizeof(*iommu->clocks), GFP_KERNEL);
>> +    if (!iommu->clocks)
>> +        return -ENOMEM;
>> +
>> +    for (i = 0; i < iommu->num_clocks; ++i) {
>> +        iommu->clocks[i].clk = of_clk_get(np, i);
>> +        if (IS_ERR(iommu->clocks[i].clk)) {
>> +            ret = PTR_ERR(iommu->clocks[i].clk);
>> +            goto err_clk_put;
>> +        }
>> +    }
>
> Just to confirm my understanding from a quick scan through the code, 
> the reason we can't use clk_bulk_get() here is that currently, 
> clocks[i].id being NULL means we'd end up just getting the first clock 
> multiple times, right?
>
> I guess there could be other users who also want "just get whatever 
> clocks I have" functionality, so it might be worth proposing that for 
> the core API as a separate/follow-up patch, but it definitely doesn't 
> need to be part of this series.

Just to understand. Is it okay to make the driver "just get whatever 
clocks device node gives"?
Doesn't the driver need to be aware of which all clocks are supposed to 
be obtained and enabled
  It's should good for debug to let the world know which clock we failed 
to get.

regards
Vivek

>
> I really don't know enough about correct clk API usage, but modulo the 
> binding comments it certainly looks nice and tidy now;
>
> Acked-by: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>
>
> Thanks,
> Robin.
[snip]

> _______________________________________________
> iommu mailing list
> iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
> https://lists.linuxfoundation.org/mailman/listinfo/iommu

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: vivek.gautam@codeaurora.org (Vivek Gautam)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 08/13] iommu/rockchip: Control clocks needed to access the IOMMU
Date: Wed, 14 Feb 2018 15:33:56 +0530	[thread overview]
Message-ID: <edc5002d-c83f-cf11-ecfb-0c4400b10d07@codeaurora.org> (raw)
In-Reply-To: <f06d2d9f-3869-ed02-43f4-f4ea4a104a57@arm.com>



On 1/24/2018 7:19 PM, Robin Murphy wrote:
> On 24/01/18 10:35, Jeffy Chen wrote:
>> From: Tomasz Figa <tfiga@chromium.org>
>>
>> Current code relies on master driver enabling necessary clocks before
>> IOMMU is accessed, however there are cases when the IOMMU should be
>> accessed while the master is not running yet, for example allocating
>> V4L2 videobuf2 buffers, which is done by the VB2 framework using DMA
>> mapping API and doesn't engage the master driver at all.
>>
>> This patch fixes the problem by letting clocks needed for IOMMU
>> operation to be listed in Device Tree and making the driver enable them
>> for the time of accessing the hardware.
>>
>> Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
>> Signed-off-by: Tomasz Figa <tfiga@chromium.org>
>> ---
>>
>> Changes in v5:
>> Use clk_bulk APIs.
>>
>> Changes in v4: None
>> Changes in v3: None
>> Changes in v2: None

[snip]

>> ? +static int rk_iommu_of_get_clocks(struct rk_iommu *iommu)
>> +{
>> +??? struct device_node *np = iommu->dev->of_node;
>> +??? int ret;
>> +??? int i;
>> +
>> +??? ret = of_count_phandle_with_args(np, "clocks", "#clock-cells");
>> +??? if (ret == -ENOENT)
>> +??????? return 0;
>> +??? else if (ret < 0)
>> +??????? return ret;
>> +
>> +??? iommu->num_clocks = ret;
>> +??? iommu->clocks = devm_kcalloc(iommu->dev, iommu->num_clocks,
>> +???????????????????? sizeof(*iommu->clocks), GFP_KERNEL);
>> +??? if (!iommu->clocks)
>> +??????? return -ENOMEM;
>> +
>> +??? for (i = 0; i < iommu->num_clocks; ++i) {
>> +??????? iommu->clocks[i].clk = of_clk_get(np, i);
>> +??????? if (IS_ERR(iommu->clocks[i].clk)) {
>> +??????????? ret = PTR_ERR(iommu->clocks[i].clk);
>> +??????????? goto err_clk_put;
>> +??????? }
>> +??? }
>
> Just to confirm my understanding from a quick scan through the code, 
> the reason we can't use clk_bulk_get() here is that currently, 
> clocks[i].id being NULL means we'd end up just getting the first clock 
> multiple times, right?
>
> I guess there could be other users who also want "just get whatever 
> clocks I have" functionality, so it might be worth proposing that for 
> the core API as a separate/follow-up patch, but it definitely doesn't 
> need to be part of this series.

Just to understand. Is it okay to make the driver "just get whatever 
clocks device node gives"?
Doesn't the driver need to be aware of which all clocks are supposed to 
be obtained and enabled
 ?It's should good for debug to let the world know which clock we failed 
to get.

regards
Vivek

>
> I really don't know enough about correct clk API usage, but modulo the 
> binding comments it certainly looks nice and tidy now;
>
> Acked-by: Robin Murphy <robin.murphy@arm.com>
>
> Thanks,
> Robin.
[snip]

> _______________________________________________
> iommu mailing list
> iommu at lists.linux-foundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/iommu

  parent reply	other threads:[~2018-02-14 10:04 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-24 10:35 [PATCH v5 00/13] iommu/rockchip: Use OF_IOMMU Jeffy Chen
2018-01-24 10:35 ` Jeffy Chen
2018-01-24 10:35 ` Jeffy Chen
2018-01-24 10:35 ` [PATCH v5 01/13] iommu/rockchip: Prohibit unbind and remove Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35 ` [PATCH v5 02/13] iommu/rockchip: Fix error handling in probe Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35 ` [PATCH v5 03/13] iommu/rockchip: Request irqs in rk_iommu_probe() Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35 ` [PATCH v5 04/13] iommu/rockchip: Fix error handling in attach Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35 ` [PATCH v5 05/13] iommu/rockchip: Use iopoll helpers to wait for hardware Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35 ` [PATCH v5 06/13] iommu/rockchip: Fix TLB flush of secondary IOMMUs Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35 ` [PATCH v5 07/13] ARM: dts: rockchip: add clocks in vop iommu nodes Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35 ` [PATCH v5 08/13] iommu/rockchip: Control clocks needed to access the IOMMU Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 13:49   ` Robin Murphy
2018-01-24 13:49     ` Robin Murphy
2018-01-26  9:45     ` JeffyChen
2018-01-26  9:45       ` JeffyChen
2018-01-26  9:45       ` JeffyChen
2018-02-14 10:03     ` Vivek Gautam [this message]
2018-02-14 10:03       ` Vivek Gautam
2018-02-14 10:03       ` Vivek Gautam
2018-02-14 11:27       ` Tomasz Figa
2018-02-14 11:27         ` Tomasz Figa
2018-02-14 11:27         ` Tomasz Figa via iommu
2018-01-30 17:05   ` Rob Herring
2018-01-30 17:05     ` Rob Herring
2018-01-30 17:05     ` Rob Herring
2018-01-31  7:52     ` Tomasz Figa
2018-01-31  7:52       ` Tomasz Figa
2018-01-31  7:52       ` Tomasz Figa
2018-01-31 13:50       ` Rob Herring
2018-01-31 13:50         ` Rob Herring
2018-01-31 13:50         ` Rob Herring
2018-02-01 11:19         ` JeffyChen
     [not found]           ` <5A72F7D2.1050201-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2018-02-23 10:24             ` JeffyChen
2018-02-27 16:59               ` Robin Murphy
2018-02-27 16:59                 ` Robin Murphy
2018-02-27 16:59                 ` Robin Murphy
2018-02-28 13:00                 ` JeffyChen
2018-02-28 13:00                   ` JeffyChen
2018-02-28 15:06                   ` Robin Murphy
2018-02-28 15:06                     ` Robin Murphy
2018-02-28 15:06                     ` Robin Murphy
2018-03-01  1:37                     ` JeffyChen
2018-03-01  1:37                       ` JeffyChen
2018-03-01  1:37                       ` JeffyChen
2018-01-24 10:35 ` [PATCH v5 09/13] iommu/rockchip: Use IOMMU device for dma mapping operations Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35 ` [PATCH v5 10/13] iommu/rockchip: Use OF_IOMMU to attach devices automatically Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35 ` [PATCH v5 11/13] iommu/rockchip: Fix error handling in init Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35 ` [PATCH v5 12/13] iommu/rockchip: Add runtime PM support Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35 ` [PATCH v5 13/13] iommu/rockchip: Support sharing IOMMU between masters Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen
2018-01-24 10:35   ` Jeffy Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=edc5002d-c83f-cf11-ecfb-0c4400b10d07@codeaurora.org \
    --to=vivek.gautam@codeaurora.org \
    --cc=devicetree@vger.kernel.org \
    --cc=heiko@sntech.de \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jcliang@chromium.org \
    --cc=jeffy.chen@rock-chips.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=robin.murphy@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.