linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
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

  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).