From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Stephen Boyd <sboyd@codeaurora.org>
Cc: Kumar Gala <galak@codeaurora.org>, Borislav Petkov <bp@alien8.de>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-msm@vger.kernel.org" <linux-arm-msm@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-edac@vger.kernel.org" <linux-edac@vger.kernel.org>,
Mark Rutland <Mark.Rutland@arm.com>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: [PATCH v5 2/4] devicetree: bindings: Document Krait CPU/L1 EDAC
Date: Tue, 11 Mar 2014 18:01:50 +0000 [thread overview]
Message-ID: <20140311180150.GD25796@e102568-lin.cambridge.arm.com> (raw)
In-Reply-To: <20140307230856.GE9985@codeaurora.org>
On Fri, Mar 07, 2014 at 11:08:56PM +0000, Stephen Boyd wrote:
> On 02/26, Lorenzo Pieralisi wrote:
> > On Tue, Feb 25, 2014 at 08:48:38PM +0000, Kumar Gala wrote:
> > >
> > > On Feb 25, 2014, at 5:16 AM, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> wrote:
> > > >
> > > > As I mentioned, I do not like the idea of adding compatible properties
> > > > just to force the kernel to create platform devices out of device tree
> > > > nodes. On top of that I would avoid adding a compatible property
> > > > to the cpus node (after all properties like enable-method are common for all
> > > > cpus but still duplicated), my only concern being backward compatibility
> > > > here (ie if we do that for interrupts, we should do that also for other
> > > > common cpu nodes properties, otherwise we have different rules for
> > > > different properties).
> > > >
> > > > I think you can then add interrupts to cpu nodes ("qcom,krait" specific),
> > > > and as you mentioned create a platform device for that.
> > > >
> > > > Thanks,
> > > > Lorenzo
> > >
> > > So I agree with the statement about adding compatibles just to create platform devices is wrong. However its seems perfectly reasonable for a cpu node to have a compatible property. I don't see why a CPU is any different from any other device described in a DT.
> >
> > I was referring to the /cpus node, not to individual cpu nodes, where
> > the compatible property is already present now.
> >
>
> Ok I think I'll go ahead with moving the interrupts into each cpu node, i.e.:
>
> cpus {
> #address-cells = <1>;
> #size-cells = <0>;
>
> cpu@0 {
> compatible = "qcom,krait";
> device_type = "cpu";
> reg = <0>;
> interrupts = <1 14 0x304>;
> next-level-cache = <&L2>;
> };
>
> cpu@1 {
> compatible = "qcom,krait";
> device_type = "cpu";
> reg = <1>;
> interrupts = <1 14 0x304>;
> next-level-cache = <&L2>;
> };
>
> L2: l2-cache {
> compatible = "cache";
> interrupts = <0 2 0x4>;
> };
> };
>
> Or should we be expressing the L1 cache as well? Something like:
>
> cpus {
> #address-cells = <1>;
> #size-cells = <0>;
>
> cpu@0 {
> compatible = "qcom,krait";
> device_type = "cpu";
> reg = <0>;
> next-level-cache = <&L1_0>;
>
> L1_0: l1-cache {
> compatible = "arm,arch-cache";
> interrupts = <1 14 0x304>;
> next-level-cache = <&L2>;
> }
> };
>
> cpu@1 {
> compatible = "qcom,krait";
> device_type = "cpu";
> reg = <1>;
> next-level-cache = <&L1_1>;
>
> L1_1: l1-cache {
> compatible = "arm,arch-cache";
> interrupts = <1 14 0x304>;
> next-level-cache = <&L2>;
> }
> };
>
> L2: l2-cache {
> compatible = "arm,arch-cache";
> interrupts = <0 2 0x4>;
> };
> };
>
> (I'm also wondering if the 3rd cell of the interrupt binding
> should only indicate the CPU that the interrupt property is
> inside?)
I am not aware of interrupts associated with vanilla :) "arm,arch-cache"
objects, so I think that should be handled as a "qcom,krait" specific property
(in the cpu node), or you should add another cache binding (compatible) for
that.
As you might have noticed (idle states thread) I am keen on defining objects
for L1 caches explicitly, that patch still requires an ACK though (and
you need to update it since you cannot add an interrupt property for all
"arm,arch-cache" objects. I am sorry for being a pain, but I do not
think that's correct from a HW description standpoint).
> Finally we can have the edac driver look for a "qcom,krait"
> compatible node in cpus that it can create a platform device for,
> i.e..
>
> static int __init krait_edac_driver_init(void)
> {
> struct device_node *np;
>
> np = of_get_cpu_node(0, NULL);
> if (!np)
> return 0;
>
> if (!krait_edacp && of_device_is_compatible(np, "qcom,krait"))
> krait_edacp = of_platform_device_create(np, "krait_edac", NULL);
> of_node_put(np);
>
> return platform_driver_register(&krait_edac_driver);
> }
> module_init(krait_edac_driver_init);
It seems fine to me, but it requires an ACK from platform bus and DT
maintainers.
Lorenzo
next prev parent reply other threads:[~2014-03-11 18:01 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-14 21:30 [PATCH v5 0/4] Krait L1/L2 EDAC driver Stephen Boyd
2014-01-14 21:30 ` [PATCH v5 1/4] ARM: Add Krait L2 register accessor functions Stephen Boyd
2014-01-14 21:30 ` [PATCH v5 2/4] devicetree: bindings: Document Krait CPU/L1 EDAC Stephen Boyd
2014-01-15 10:27 ` Lorenzo Pieralisi
2014-01-15 16:56 ` Stephen Boyd
2014-01-16 1:38 ` Stephen Boyd
2014-01-16 11:33 ` Lorenzo Pieralisi
2014-01-16 18:05 ` Stephen Boyd
2014-01-16 18:33 ` Lorenzo Pieralisi
2014-01-16 19:26 ` Stephen Boyd
2014-01-17 10:21 ` Lorenzo Pieralisi
2014-02-19 0:20 ` Stephen Boyd
2014-02-25 11:16 ` Lorenzo Pieralisi
2014-02-25 20:48 ` Kumar Gala
2014-02-26 12:01 ` Lorenzo Pieralisi
2014-03-07 23:08 ` Stephen Boyd
2014-03-11 18:01 ` Lorenzo Pieralisi [this message]
2014-03-11 21:03 ` Stephen Boyd
2014-01-14 21:30 ` [PATCH v5 3/4] edac: Add support for Krait CPU cache error detection Stephen Boyd
2014-01-14 21:30 ` [PATCH v5 4/4] ARM: dts: msm: Add Krait CPU/L2 nodes Stephen Boyd
2014-01-14 21:48 ` [PATCH v5 0/4] Krait L1/L2 EDAC driver Borislav Petkov
2014-01-14 21:55 ` Stephen Boyd
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=20140311180150.GD25796@e102568-lin.cambridge.arm.com \
--to=lorenzo.pieralisi@arm.com \
--cc=Mark.Rutland@arm.com \
--cc=bp@alien8.de \
--cc=devicetree@vger.kernel.org \
--cc=galak@codeaurora.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-edac@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sboyd@codeaurora.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
all inboxes | Powered by JetHome®