From: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>
To: "Huang, Tao" <huangtao-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
Cc: Marc Zyngier <marc.zyngier-5wv7dgnIgG8@public.gmane.org>,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
davidriley-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org,
pawel.moll-5wv7dgnIgG8@public.gmane.org,
ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org,
catalin.marinas-5wv7dgnIgG8@public.gmane.org,
will.deacon-5wv7dgnIgG8@public.gmane.org,
dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
smbarber-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
jwerner-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Jianqun Xu <jay.xu-TNX95d0MmH7DzftRWevZcw@public.gmane.org>,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH] ARM64: dts: rockchip: add core dtsi file for RK3399 SoCs
Date: Mon, 25 Apr 2016 11:05:32 +0100 [thread overview]
Message-ID: <20160425100531.GC25087@leverpostej> (raw)
In-Reply-To: <571DE803.3010902-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
On Mon, Apr 25, 2016 at 05:48:51PM +0800, Huang, Tao wrote:
> Hi, Marc:
> On 2016年04月21日 19:30, Marc Zyngier wrote:
> > On Thu, 21 Apr 2016 18:47:20 +0800
> > "Huang, Tao" <huangtao-TNX95d0MmH7DzftRWevZcw@public.gmane.org> wrote:
> >
> >> Hi, Mark:
> >> On 2016年04月21日 18:19, Mark Rutland wrote:
> >>> On Thu, Apr 21, 2016 at 11:58:12AM +0800, Jianqun Xu wrote:
> >>>> + cpu_l0: cpu@0 {
> >>>> + device_type = "cpu";
> >>>> + compatible = "arm,cortex-a53", "arm,armv8";
> >>>> + reg = <0x0 0x0>;
> >>>> + enable-method = "psci";
> >>>> + #cooling-cells = <2>; /* min followed by max */
> >>>> + clocks = <&cru ARMCLKL>;
> >>>> + };
> >>>> + cpu_b0: cpu@100 {
> >>>> + device_type = "cpu";
> >>>> + compatible = "arm,cortex-a72", "arm,armv8";
> >>>> + reg = <0x0 0x100>;
> >>>> + enable-method = "psci";
> >>>> + #cooling-cells = <2>; /* min followed by max */
> >>>> + clocks = <&cru ARMCLKB>;
> >>>> + };
> >>>> +
> >>>> + arm-pmu {
> >>>> + compatible = "arm,armv8-pmuv3";
> >>>> + interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
> >>>> + };
> >>> This is wrong, and must go. There should be a separate node for the PMU
> >>> of each microarchitecture, with the appropriate compatible string to
> >>> represent that (see the juno dts).
> >> You are right. The first version we wrote is:
> >> pmu_a53 {
> >> compatible = "arm,cortex-a53-pmu";
> >> interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
> >> interrupt-affinity = <&cpu_l0>,
> >> <&cpu_l1>,
> >> <&cpu_l2>,
> >> <&cpu_l3>;
> >> };
> >>
> >> pmu_a72 {
> >> compatible = "arm,cortex-a72-pmu";
> >> interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
> >> interrupt-affinity = <&cpu_b0>,
> >> <&cpu_b1>;
> >> };
> >> but unfortunately, the arm pmu driver do not support PPI in two cluster
> >> well,
> >> so we have to replace with this implementation.
> >>> In this case things are messier as the same PPI number is being used
> >>> across clusters. Marc (Cc'd) has been working on PPI partitions, which
> >>> should allow us to support that.
> >> Great! So what we can do right now? Wait this feature, and delete
> >> arm-pmu node?
> > I'd rather you have a look at the patches, test them with your HW,
> > and comment on what doesn't work!
> >
> > You can find the patches over there:
> >
> > https://lkml.org/lkml/2016/4/11/182
> >
> > and on the following branch:
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
> > irq/percpu-partition
>
> I tested these patches. Because our kernel is based on v4.4, so I back
> port most changes about
> include/linux/irqdomain.h
> kernel/irq/irqdomain.c
> drivers/irqchip/irq-gic-v3.c
> and change rk3399.dtsi base on your arm,gic-v3.txt:
>
> gic: interrupt-controller@fee00000 {
> compatible = "arm,gic-v3";
> - #interrupt-cells = <3>;
> + #interrupt-cells = <4>;
> #address-cells = <2>;
> #size-cells = <2>;
> ...
> +
> + ppi-partitions {
> + part0: interrupt-partition-0 {
> + affinity = <&cpu_l0 &cpu_l1 &cpu_l2 &cpu_l3>;
> + };
> +
> + part1: interrupt-partition-1 {
> + affinity = <&cpu_b0 &cpu_b1>;
> + };
> + };
>
> and change every interrupts from three cells to four cells, such as
> saradc: saradc@ff100000 {
> compatible = "rockchip,rk3399-saradc";
> reg = <0x0 0xff100000 0x0 0x100>;
> - interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
> + interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH 0>;
> #io-channel-cells = <1>;
> clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
> clock-names = "saradc", "apb_pclk";
>
> and pmu define as:
> pmu_a53 {
> compatible = "arm,cortex-a53-pmu";
> interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW &part0>;
> interrupt-affinity = <&cpu_l0>,
> <&cpu_l1>,
> <&cpu_l2>,
> <&cpu_l3>;
> };
>
> pmu_a72 {
> compatible = "arm,cortex-a72-pmu", "arm,cortex-a57-pmu";
That Cortex-A57 PMU fallback should just go. We already have Cortex-A72
PMU support upstream, and I believe there are sufficient differences
such that the Cortex-A72 PMU is not a strict superset of the Cortex-A57
PMU.
> interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW &part1>;
> interrupt-affinity = <&cpu_b0>,
> <&cpu_b1>;
> };
>
> It can boot. And I test with Android simpleperf stat and perf top, it works!
> So these patches work on RK3399.
There is still work to do in the driver, as Marc pointed out.
While it may appear to work, it will be requesting percpu IRQs on wrong
CPUs (e.g. see how cpu_pmu_request_irq calls cpu_pmu_enable_percpu_irq,
on each CPU), and we will need to update the binding codument to cover
this case.
Thanks,
Mark.
--
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
next prev parent reply other threads:[~2016-04-25 10:05 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-20 3:15 [PATCH] ARM64: dts: rockchip: add core dtsi file for rk3399 SoCs Jianqun Xu
2016-04-21 3:58 ` [PATCH] ARM64: dts: rockchip: add core dtsi file for RK3399 SoCs Jianqun Xu
2016-04-21 10:19 ` Mark Rutland
2016-04-21 10:47 ` Huang, Tao
[not found] ` <5718AFB8.5070004-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-04-21 11:30 ` Marc Zyngier
[not found] ` <20160421123018.096d4a75-5wv7dgnIgG8@public.gmane.org>
2016-04-21 20:24 ` Heiko Stübner
2016-04-21 21:12 ` Marc Zyngier
2016-04-22 1:50 ` jay.xu
[not found] ` <57198351.2060608-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-04-22 7:44 ` Marc Zyngier
2016-04-25 9:48 ` Huang, Tao
[not found] ` <571DE803.3010902-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-04-25 10:05 ` Mark Rutland [this message]
2016-04-25 10:19 ` Huang, Tao
[not found] ` <571DEF30.90604-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-04-25 10:47 ` Mark Rutland
2016-04-25 12:27 ` Huang, Tao
2016-04-25 10:06 ` Marc Zyngier
2016-04-25 10:39 ` Marc Zyngier
[not found] ` <571DF3CB.3030904-5wv7dgnIgG8@public.gmane.org>
2016-04-25 11:50 ` Huang, Tao
[not found] ` <571E0489.3030401-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-04-25 12:04 ` Marc Zyngier
[not found] ` <1461211092-26331-1-git-send-email-jay.xu-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-04-21 21:02 ` Rob Herring
2016-04-21 22:02 ` Heiko Stübner
2016-04-21 22:38 ` Doug Anderson
[not found] ` <CAD=FV=X9S4z2WLEJ-KaaCZxfkdO4+-i2hUd3dsYJi5qXEvpVBQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-04-21 22:49 ` Heiko Stübner
2016-04-22 4:23 ` Huang, Tao
[not found] ` <1461122150-9042-1-git-send-email-jay.xu-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-04-21 21:48 ` [PATCH] ARM64: dts: rockchip: add core dtsi file for rk3399 SoCs Brian Norris
2016-04-21 22:32 ` Heiko Stübner
2016-04-22 5:21 ` [PATCH v2 0/4] ARM64: dts: rockchip: add support for RK3399 Jianqun Xu
2016-04-22 5:25 ` [PATCH v2 1/4] Documentation: rockchip-dw-mshc: add description for rk3399 Jianqun Xu
2016-04-22 5:28 ` [PATCH v2 2/4] ARM64: dts: rockchip: add core dtsi file for RK3399 SoCs Jianqun Xu
2016-04-22 5:31 ` [PATCH 3/4] ARM64: dts: rockchip: add RK3399 evaluation board Jianqun Xu
2016-04-22 5:36 ` [PATCH v2 4/4] ARM64: dts: rockchip: add dts file for " Jianqun Xu
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=20160425100531.GC25087@leverpostej \
--to=mark.rutland-5wv7dgnigg8@public.gmane.org \
--cc=catalin.marinas-5wv7dgnIgG8@public.gmane.org \
--cc=davidriley-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
--cc=heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org \
--cc=huangtao-TNX95d0MmH7DzftRWevZcw@public.gmane.org \
--cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
--cc=jay.xu-TNX95d0MmH7DzftRWevZcw@public.gmane.org \
--cc=jwerner-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=marc.zyngier-5wv7dgnIgG8@public.gmane.org \
--cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=smbarber-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=will.deacon-5wv7dgnIgG8@public.gmane.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).