All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shawn Lin <shawn.lin@rock-chips.com>
To: Vinod Koul <vinod.koul@intel.com>
Cc: shawn.lin@rock-chips.com, Lars-Peter Clausen <lars@metafoo.de>,
	Rob Herring <robh+dt@kernel.org>,
	Huibin Hong <huibin.hong@rock-chips.com>,
	Xing Zheng <zhengxing@rock-chips.com>,
	devicetree@vger.kernel.org, dianders@chromium.org,
	briannorris@chromium.org, Caesar Wang <wxt@rock-chips.com>,
	dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org
Subject: Re: [PATCH 1/3] dt/bindings: arm-pl330: add description of arm,pl330-periph-burst
Date: Sun, 21 Aug 2016 09:00:58 +0800	[thread overview]
Message-ID: <d4574737-f7b7-2726-373c-31cc81274a32@rock-chips.com> (raw)
In-Reply-To: <20160819024540.GQ9681@localhost>

Hi Vinod,

在 2016/8/19 10:45, Vinod Koul 写道:
> On Wed, Aug 17, 2016 at 04:11:03PM +0800, Shawn Lin wrote:
>> Hi, Vinod and Lars-Peter
>>
>> Ping.. Any better idea to share :)
>>
>> On 2016/8/9 17:12, Shawn Lin wrote:
>>> Hi Lars-Peter,
>>>
>>> 在 2016/8/9 16:39, Lars-Peter Clausen 写道:
>>>> On 08/05/2016 09:25 AM, Shawn Lin wrote:
>>>>> Hi Vinod,
>>>>>
>>>>> 在 2016/8/5 11:34, Vinod Koul 写道:
>>>>>> On Fri, Aug 05, 2016 at 10:53:20AM +0800, Shawn Lin wrote:
>>>>>>> This patch adds the "arm,pl330-periph-burst" for arm-pl330 to
>>>>>>> support busrt mode.
>>>>>>
>>>>>> why should this be DT property. Only reason I can think of if some hw
>>>>>> versions support this and some won't.
>>>>>
>>>>> yes, if we want to support burst mode, both of the master(pl330) and
>>>>> client(several peripherals) should implement it, otherwise it will
>>>>> be broken when enabling.
>>>>
>>>> As you said, it is up to the consumer peripheral whether it supports
>>>> BURST,
>>>> SINGLE or both. So this is a per client property, but you specify this
>>>> as a
>>>> a global property on the producer side.
>>>
>>> Thanks for comment.
>>>
>>> yup, but what is the proper way to add it ? :)
>>>
>>>
>>> a) If pl330 support BURST as well as all the peripherals, we could
>>> enable it.
>>>
>>> b) If pl300 support BURST, but all the peripherals don't support it,
>>> we could not enable it.
>>>
>>> c) If pl300 support BURST, but not all the peripherals support it,
>>> we also could not enable it.
>>>
>>> the burst feature of peripheral IP may be vendor-specific, but the
>>> common driver for this peripheral are used for many many vendors which
>>> means we could not check all of this info. It's very likely to break
>>> them... I couldn't figure out how many upstreamed peripheral drivers
>>> who are using pl300 either.
>>>
>>> So this check should be done by all this vendors but we could make
>>> sure we don't break them before they check a), b), c), right?
>
> Since support for BURST needs to be from peripheral too, we should have
> that as a property for peripheral not for controller.
>
> The peripheral drivers can communicate the burst to be used to pl330
> using src_maxburst/dst_maxburst in dma_slave_config. We can use this
> value to indicate the DMA should be single (a value of 0) or burst with
> "burst" value.

Thanks for sharing this.

But this is really a difficult trade-off decision to add this new
property for pl330 only.

Burst mode was supported by Boojin Kim's patch by default(commit
848e9776fee42 ("dmaengine: pl330: support burst mode for dev-to-mem and
mem-to-dev transmit")).  But we found it will break SoCFPGA or
Exynos4412 reported by Dinh Nguyen and Bartlomiej Zolnierkiewicz[0].
So finally Caesar Wang contributed a patch, commit 0a18f9b268 ("
dmaengine: pl330: fix to support the burst mode") to fix it, but what
it actually did is to use single burst for any case, namely some kind
of regression for Boojin Kim's improvement.

So we can see these drivers which was broken by enabling burst mode
had already set src_maxburst/dst_maxburst. It looks to me so unfortunate
that the driver like 8250_dw.c was using so widely that we couldn't
set scr/dst_maxburst as this is really vendor specific for whether it
supports burst for 8250_dw or not..

So it is quite painful that we probably will get dozens of regression
reports when enabling burst mode by default. But without this, we have
been suffering from low performance quite a long time due to this
roadblock.

Two possible paths to land this patch are:
(1) Keep this property for pl330 only, so we have no chance to
break others and we could make the platforms enjoy it if adding this
property for their own dts.

(2) Figuer out all the broken platfroms if enabling burst and fix them
one by one for the src/dst_maxburst(maybe by enabling burst mode and
get regression reports). If we could not solve any one of them, then we
have to give up all the effort we do, and let this pain keep on
stalling people's expectation of better performance.


I would appreciate it if you could share your thought more, as I really 
want more platforms benefit from it(at least don't break them)  :)


[0] http://www.gossamer-threads.com/lists/linux/kernel/2374171

>


-- 
Best Regards
Shawn Lin

WARNING: multiple messages have this Message-ID (diff)
From: Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
To: Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org,
	Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Huibin Hong <huibin.hong-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
	Xing Zheng <zhengxing-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
	briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
	Caesar Wang <wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
	dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH 1/3] dt/bindings: arm-pl330: add description of arm,pl330-periph-burst
Date: Sun, 21 Aug 2016 09:00:58 +0800	[thread overview]
Message-ID: <d4574737-f7b7-2726-373c-31cc81274a32@rock-chips.com> (raw)
In-Reply-To: <20160819024540.GQ9681@localhost>

Hi Vinod,

在 2016/8/19 10:45, Vinod Koul 写道:
> On Wed, Aug 17, 2016 at 04:11:03PM +0800, Shawn Lin wrote:
>> Hi, Vinod and Lars-Peter
>>
>> Ping.. Any better idea to share :)
>>
>> On 2016/8/9 17:12, Shawn Lin wrote:
>>> Hi Lars-Peter,
>>>
>>> 在 2016/8/9 16:39, Lars-Peter Clausen 写道:
>>>> On 08/05/2016 09:25 AM, Shawn Lin wrote:
>>>>> Hi Vinod,
>>>>>
>>>>> 在 2016/8/5 11:34, Vinod Koul 写道:
>>>>>> On Fri, Aug 05, 2016 at 10:53:20AM +0800, Shawn Lin wrote:
>>>>>>> This patch adds the "arm,pl330-periph-burst" for arm-pl330 to
>>>>>>> support busrt mode.
>>>>>>
>>>>>> why should this be DT property. Only reason I can think of if some hw
>>>>>> versions support this and some won't.
>>>>>
>>>>> yes, if we want to support burst mode, both of the master(pl330) and
>>>>> client(several peripherals) should implement it, otherwise it will
>>>>> be broken when enabling.
>>>>
>>>> As you said, it is up to the consumer peripheral whether it supports
>>>> BURST,
>>>> SINGLE or both. So this is a per client property, but you specify this
>>>> as a
>>>> a global property on the producer side.
>>>
>>> Thanks for comment.
>>>
>>> yup, but what is the proper way to add it ? :)
>>>
>>>
>>> a) If pl330 support BURST as well as all the peripherals, we could
>>> enable it.
>>>
>>> b) If pl300 support BURST, but all the peripherals don't support it,
>>> we could not enable it.
>>>
>>> c) If pl300 support BURST, but not all the peripherals support it,
>>> we also could not enable it.
>>>
>>> the burst feature of peripheral IP may be vendor-specific, but the
>>> common driver for this peripheral are used for many many vendors which
>>> means we could not check all of this info. It's very likely to break
>>> them... I couldn't figure out how many upstreamed peripheral drivers
>>> who are using pl300 either.
>>>
>>> So this check should be done by all this vendors but we could make
>>> sure we don't break them before they check a), b), c), right?
>
> Since support for BURST needs to be from peripheral too, we should have
> that as a property for peripheral not for controller.
>
> The peripheral drivers can communicate the burst to be used to pl330
> using src_maxburst/dst_maxburst in dma_slave_config. We can use this
> value to indicate the DMA should be single (a value of 0) or burst with
> "burst" value.

Thanks for sharing this.

But this is really a difficult trade-off decision to add this new
property for pl330 only.

Burst mode was supported by Boojin Kim's patch by default(commit
848e9776fee42 ("dmaengine: pl330: support burst mode for dev-to-mem and
mem-to-dev transmit")).  But we found it will break SoCFPGA or
Exynos4412 reported by Dinh Nguyen and Bartlomiej Zolnierkiewicz[0].
So finally Caesar Wang contributed a patch, commit 0a18f9b268 ("
dmaengine: pl330: fix to support the burst mode") to fix it, but what
it actually did is to use single burst for any case, namely some kind
of regression for Boojin Kim's improvement.

So we can see these drivers which was broken by enabling burst mode
had already set src_maxburst/dst_maxburst. It looks to me so unfortunate
that the driver like 8250_dw.c was using so widely that we couldn't
set scr/dst_maxburst as this is really vendor specific for whether it
supports burst for 8250_dw or not..

So it is quite painful that we probably will get dozens of regression
reports when enabling burst mode by default. But without this, we have
been suffering from low performance quite a long time due to this
roadblock.

Two possible paths to land this patch are:
(1) Keep this property for pl330 only, so we have no chance to
break others and we could make the platforms enjoy it if adding this
property for their own dts.

(2) Figuer out all the broken platfroms if enabling burst and fix them
one by one for the src/dst_maxburst(maybe by enabling burst mode and
get regression reports). If we could not solve any one of them, then we
have to give up all the effort we do, and let this pain keep on
stalling people's expectation of better performance.


I would appreciate it if you could share your thought more, as I really 
want more platforms benefit from it(at least don't break them)  :)


[0] http://www.gossamer-threads.com/lists/linux/kernel/2374171

>


-- 
Best Regards
Shawn Lin

--
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: shawn.lin@rock-chips.com (Shawn Lin)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/3] dt/bindings: arm-pl330: add description of arm,pl330-periph-burst
Date: Sun, 21 Aug 2016 09:00:58 +0800	[thread overview]
Message-ID: <d4574737-f7b7-2726-373c-31cc81274a32@rock-chips.com> (raw)
In-Reply-To: <20160819024540.GQ9681@localhost>

Hi Vinod,

? 2016/8/19 10:45, Vinod Koul ??:
> On Wed, Aug 17, 2016 at 04:11:03PM +0800, Shawn Lin wrote:
>> Hi, Vinod and Lars-Peter
>>
>> Ping.. Any better idea to share :)
>>
>> On 2016/8/9 17:12, Shawn Lin wrote:
>>> Hi Lars-Peter,
>>>
>>> ? 2016/8/9 16:39, Lars-Peter Clausen ??:
>>>> On 08/05/2016 09:25 AM, Shawn Lin wrote:
>>>>> Hi Vinod,
>>>>>
>>>>> ? 2016/8/5 11:34, Vinod Koul ??:
>>>>>> On Fri, Aug 05, 2016 at 10:53:20AM +0800, Shawn Lin wrote:
>>>>>>> This patch adds the "arm,pl330-periph-burst" for arm-pl330 to
>>>>>>> support busrt mode.
>>>>>>
>>>>>> why should this be DT property. Only reason I can think of if some hw
>>>>>> versions support this and some won't.
>>>>>
>>>>> yes, if we want to support burst mode, both of the master(pl330) and
>>>>> client(several peripherals) should implement it, otherwise it will
>>>>> be broken when enabling.
>>>>
>>>> As you said, it is up to the consumer peripheral whether it supports
>>>> BURST,
>>>> SINGLE or both. So this is a per client property, but you specify this
>>>> as a
>>>> a global property on the producer side.
>>>
>>> Thanks for comment.
>>>
>>> yup, but what is the proper way to add it ? :)
>>>
>>>
>>> a) If pl330 support BURST as well as all the peripherals, we could
>>> enable it.
>>>
>>> b) If pl300 support BURST, but all the peripherals don't support it,
>>> we could not enable it.
>>>
>>> c) If pl300 support BURST, but not all the peripherals support it,
>>> we also could not enable it.
>>>
>>> the burst feature of peripheral IP may be vendor-specific, but the
>>> common driver for this peripheral are used for many many vendors which
>>> means we could not check all of this info. It's very likely to break
>>> them... I couldn't figure out how many upstreamed peripheral drivers
>>> who are using pl300 either.
>>>
>>> So this check should be done by all this vendors but we could make
>>> sure we don't break them before they check a), b), c), right?
>
> Since support for BURST needs to be from peripheral too, we should have
> that as a property for peripheral not for controller.
>
> The peripheral drivers can communicate the burst to be used to pl330
> using src_maxburst/dst_maxburst in dma_slave_config. We can use this
> value to indicate the DMA should be single (a value of 0) or burst with
> "burst" value.

Thanks for sharing this.

But this is really a difficult trade-off decision to add this new
property for pl330 only.

Burst mode was supported by Boojin Kim's patch by default(commit
848e9776fee42 ("dmaengine: pl330: support burst mode for dev-to-mem and
mem-to-dev transmit")).  But we found it will break SoCFPGA or
Exynos4412 reported by Dinh Nguyen and Bartlomiej Zolnierkiewicz[0].
So finally Caesar Wang contributed a patch, commit 0a18f9b268 ("
dmaengine: pl330: fix to support the burst mode") to fix it, but what
it actually did is to use single burst for any case, namely some kind
of regression for Boojin Kim's improvement.

So we can see these drivers which was broken by enabling burst mode
had already set src_maxburst/dst_maxburst. It looks to me so unfortunate
that the driver like 8250_dw.c was using so widely that we couldn't
set scr/dst_maxburst as this is really vendor specific for whether it
supports burst for 8250_dw or not..

So it is quite painful that we probably will get dozens of regression
reports when enabling burst mode by default. But without this, we have
been suffering from low performance quite a long time due to this
roadblock.

Two possible paths to land this patch are:
(1) Keep this property for pl330 only, so we have no chance to
break others and we could make the platforms enjoy it if adding this
property for their own dts.

(2) Figuer out all the broken platfroms if enabling burst and fix them
one by one for the src/dst_maxburst(maybe by enabling burst mode and
get regression reports). If we could not solve any one of them, then we
have to give up all the effort we do, and let this pain keep on
stalling people's expectation of better performance.


I would appreciate it if you could share your thought more, as I really 
want more platforms benefit from it(at least don't break them)  :)


[0] http://www.gossamer-threads.com/lists/linux/kernel/2374171

>


-- 
Best Regards
Shawn Lin

  reply	other threads:[~2016-08-21  1:01 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-05  2:53 [PATCH 0/3] Support burst request by peripherals Shawn Lin
2016-08-05  2:53 ` Shawn Lin
2016-08-05  2:53 ` Shawn Lin
2016-08-05  2:53 ` [PATCH 1/3] dt/bindings: arm-pl330: add description of arm,pl330-periph-burst Shawn Lin
2016-08-05  2:53   ` [PATCH 1/3] dt/bindings: arm-pl330: add description of arm, pl330-periph-burst Shawn Lin
2016-08-05  2:53   ` [PATCH 1/3] dt/bindings: arm-pl330: add description of arm,pl330-periph-burst Shawn Lin
2016-08-05  3:34   ` Vinod Koul
2016-08-05  3:34     ` Vinod Koul
2016-08-05  7:25     ` Shawn Lin
2016-08-05  7:25       ` Shawn Lin
2016-08-09  8:39       ` Lars-Peter Clausen
2016-08-09  8:39         ` Lars-Peter Clausen
2016-08-09  8:39         ` Lars-Peter Clausen
2016-08-09  9:12         ` Shawn Lin
2016-08-09  9:12           ` Shawn Lin
2016-08-17  8:11           ` Shawn Lin
2016-08-17  8:11             ` Shawn Lin
2016-08-17  8:11             ` Shawn Lin
2016-08-19  2:45             ` Vinod Koul
2016-08-19  2:45               ` Vinod Koul
2016-08-21  1:00               ` Shawn Lin [this message]
2016-08-21  1:00                 ` Shawn Lin
2016-08-21  1:00                 ` Shawn Lin
2016-08-22  6:04                 ` Vinod Koul
2016-08-22  6:04                   ` Vinod Koul
2016-08-22  6:04                   ` Vinod Koul
2016-08-05  2:53 ` [PATCH 2/3] dmaengine: pl330: enable burst mode by parsing dt Shawn Lin
2016-08-05  2:53   ` Shawn Lin
2016-08-05  2:53   ` Shawn Lin
2016-08-07  9:20   ` Xing Zheng
2016-08-07  9:20     ` Xing Zheng
2016-08-05  2:53 ` [PATCH 3/3] dmaengine: pl330: support transfer unaligned with (burst len * burst size) Shawn Lin
2016-08-05  2:53   ` Shawn Lin
2016-08-05  2:53   ` Shawn Lin
2016-08-07  9:21   ` Xing Zheng
2016-08-07  9:21     ` Xing Zheng
2016-08-07  9:21     ` Xing Zheng

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=d4574737-f7b7-2726-373c-31cc81274a32@rock-chips.com \
    --to=shawn.lin@rock-chips.com \
    --cc=briannorris@chromium.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dianders@chromium.org \
    --cc=dmaengine@vger.kernel.org \
    --cc=huibin.hong@rock-chips.com \
    --cc=lars@metafoo.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=robh+dt@kernel.org \
    --cc=vinod.koul@intel.com \
    --cc=wxt@rock-chips.com \
    --cc=zhengxing@rock-chips.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.