From: tomasz.figa@gmail.com (Tomasz Figa)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH dtc] C-based DT schema checker integrated into dtc
Date: Mon, 04 Nov 2013 00:15:58 +0100 [thread overview]
Message-ID: <1432962.yW4lKnaQJE@flatron> (raw)
In-Reply-To: <20131025231106.GC17659@voom.redhat.com>
On Saturday 26 of October 2013 10:11:06 David Gibson wrote:
> On Fri, Oct 25, 2013 at 10:21:22AM -0500, Jon Loeliger wrote:
> > > On 10/25/2013 12:43 AM, Grant Likely wrote:
> > > > On Thu, 24 Oct 2013 22:51:28 +0100, Stephen Warren
> > > > <swarren@wwwdotorg.org>> >
> > > wrote:
> > > >> From: Stephen Warren <swarren@nvidia.com>
> > > >>
> > > >> This is a very quick proof-of-concept re: how a DT schema checker
> > > >> might
> > > >> look if written in C, and integrated into dtc.
> > > >
> > > > Thanks for looking at this.
> > > >
> > > > Very interesting. Certainly an expedient way to start checking
> > > > schemas,
> > > > and for certain bindings it may be the best approach. The downside
> > > > is it forces a recompilation of DTC to bring in new bindings and
> > > > it isn't a great meduim for mixing schema with documentation in
> > > > the bindings.> >
> > > This approach would certainly require recompiling something. I threw
> > > the code into dtc simply because it was the easiest container for
> > > the demonstration. It could be a separate DT validation utility if
> > > we wanted, although we'd need to split the DT parser from dtc into
> > > a library to avoid code duplication. The resultant utility could be
> > > part of the repo containing the DTs, so it didn't end up as a
> > > separate package to manage.
> > >
> > > I think the additional documentation could be added as comments in
> > > the
> > > validation functions, just like IIRC it was to be represented as
> > > comments even in the .dts-based schema proposals.
> >
> > DTers,
> >
> > I think the additional benefit of starting with a direct C
> > implementation is that it causes us to begin to actually
> > codify the schema requirements. Sure, it may not be ideal
> > at first, but over time it may reveal consistent patterns
> > that can be extracted. And it may reveal what a real schema
> > might look like and how it might be expressed better. Which
> > is to say that perhaps we are letting "perfect" get in the
> > way of "good enough to start"?
> >
> > In the meantime, someone has shown us the code and we can
> > get started. It's a Small Matter of Refactoring later. :-)
>
> Yes! This!
>
> Think of this prototype as a mechanism for collating and applying a
> bunch of schemas to the tree. At the moment the schemas are all hard
> coded in C, but it can be extended to load some or all of them
> dynamically from a description / template / whatever.
>
> That also gives us the flexibility to start out with a simple but
> limited schema language which handles common cases, while leaving the
> complex cases in C, at least until we understand the requirements well
> enough to extend the schema language.
This is fine as an intermediate step, but I'm afraid that the overhead of
work needed to describe all the bindings using C language directly will be
pretty big. C language isn't really best fitted for such purposes.
If we agree to base on this, but solely as a mechanism and a base for
further work, my idea would be to introduce a schema description language
anyway and then some code generator that would generate C code from
schemas described using such language (and possibly also something to
generate textual documentation from schemas, so we could have a central
repository of indexed DT bindings, for example on [1] - maybe kerneldoc
could be reused here).
Such design would allow for describing a lot of cases using a simple
description language, while leaving the possibility of adding inline C
snippets, like PHP in HTML, to handle those super complex ones.
[1] https://www.kernel.org/doc/htmldocs/
Best regards,
Tomasz
next prev parent reply other threads:[~2013-11-03 23:15 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-24 21:51 [RFC PATCH dtc] C-based DT schema checker integrated into dtc Stephen Warren
2013-10-24 23:43 ` Grant Likely
2013-10-25 4:00 ` Kumar Gala
2013-10-25 14:44 ` Stephen Warren
2013-10-25 15:21 ` Jon Loeliger
2013-10-25 17:38 ` Rob Herring
2013-10-25 23:11 ` David Gibson
2013-11-03 23:15 ` Tomasz Figa [this message]
2013-11-03 23:26 ` Tomasz Figa
2013-11-04 9:28 ` Arnd Bergmann
2013-11-04 12:31 ` Tomasz Figa
2013-11-04 16:37 ` Stephen Warren
2013-11-04 18:57 ` Olof Johansson
2013-11-04 20:43 ` Arnd Bergmann
2013-11-04 21:29 ` Jason Gunthorpe
2013-11-04 21:43 ` Stephen Warren
2013-11-04 22:21 ` Jason Gunthorpe
2013-11-05 12:14 ` Arnd Bergmann
2013-11-05 8:39 ` Arnd Bergmann
2013-11-05 18:03 ` Jason Gunthorpe
2013-11-05 18:48 ` Arnd Bergmann
2013-11-05 19:12 ` Jason Gunthorpe
2013-11-05 19:34 ` Arnd Bergmann
2013-11-05 19:58 ` Jason Gunthorpe
2013-11-05 20:17 ` Arnd Bergmann
2013-11-05 20:36 ` Jason Gunthorpe
2013-11-04 21:50 ` Stephen Warren
2013-11-05 8:22 ` Arnd Bergmann
2013-11-06 12:17 ` Thierry Reding
2013-11-04 14:28 ` David Gibson
2013-11-04 16:42 ` Stephen Warren
2013-10-28 10:17 ` David Gibson
2013-10-31 21:13 ` Stephen Warren
2013-11-01 13:24 ` David Gibson
2013-10-25 23:29 ` David Gibson
2013-10-31 21:11 ` Stephen Warren
2013-11-10 11:00 ` David Gibson
2013-11-12 22:06 ` Stephen Warren
2013-11-13 0:33 ` David Gibson
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=1432962.yW4lKnaQJE@flatron \
--to=tomasz.figa@gmail.com \
--cc=linux-arm-kernel@lists.infradead.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).