On Fri, 21 Feb 2014 12:00:44 +0100, Marek Szyprowski <m.szyprow...@samsung.com> 
wrote:
> Hello,
> 
> On 2014-02-20 15:01, Grant Likely wrote:
> > On Thu, 20 Feb 2014 11:52:41 +0100, Marek Szyprowski 
> > <m.szyprow...@samsung.com> wrote:
> > > This patch adds device tree support for contiguous and reserved memory
> > > regions defined in device tree.
> > >
> > > Large memory blocks can be reliably reserved only during early boot.
> > > This must happen before the whole memory management subsystem is
> > > initialized, because we need to ensure that the given contiguous blocks
> > > are not yet allocated by kernel. Also it must happen before kernel
> > > mappings for the whole low memory are created, to ensure that there will
> > > be no mappings (for reserved blocks) or mapping with special properties
> > > can be created (for CMA blocks). This all happens before device tree
> > > structures are unflattened, so we need to get reserved memory layout
> > > directly from fdt.
> > >
> > > Later, those reserved memory regions are assigned to devices on each
> > > device structure initialization.
> > >
> > > Signed-off-by: Marek Szyprowski <m.szyprow...@samsung.com>
> > > [joshc: rework to implement new DT binding, provide mechanism for
> > >  plugging in new reserved-memory node handlers via
> > >  RESERVEDMEM_OF_DECLARE]
> > > Signed-off-by: Josh Cartwright <jo...@codeaurora.org>
> > > [mszyprow: added generic memory reservation code, refactored code to
> > >  put it directly into fdt.c]
> > > Signed-off-by: Marek Szyprowski <m.szyprow...@samsung.com>
> > > ---
> > >  drivers/of/Kconfig                |    6 +
> > >  drivers/of/Makefile               |    1 +
> > >  drivers/of/fdt.c                  |  145 ++++++++++++++++++
> > >  drivers/of/of_reserved_mem.c      |  296 
> > > +++++++++++++++++++++++++++++++++++++
> > >  drivers/of/platform.c             |    7 +
> > >  include/asm-generic/vmlinux.lds.h |   11 ++
> > >  include/linux/of_reserved_mem.h   |   65 ++++++++
> > >  7 files changed, 531 insertions(+)
> > >  create mode 100644 drivers/of/of_reserved_mem.c
> > >  create mode 100644 include/linux/of_reserved_mem.h
> >
> > Hi Marek,
> >
> > There's a lot of moving parts in this patch. Can you split the patch up a 
> > bit please. There are parts that I'm not entierly comfortable with yet and 
> > it will help reviewing them if they are added separately. For instance, the 
> > attaching regions to devices is something that I want to have some 
> > discussion about, but the core reserving static ranges I think is pretty 
> > much ready to be merged. I can merge the later while still debating the 
> > former if they are split.
> >
> > I would recommend splitting into four:
> > 1) reservation of static regions without the support code for referencing 
> > them later
> > 2) code to also do dynamic allocations of reserved regions - again without 
> > any driver references
> > 3) add hooks to reference specific regions.
> > 4) hooks into drivers/of/platform.c for wiring into the driver model.
> >
> > Can you also make the binding doc the first patch?
> 
> Ok, I will slice the patch into 4 pieces.
> >
> > <off topic> Wow, the flattree parsing code has to be really verbose. We 
> > really need better
> > flat tree parsing functions and helpers.
> 
> Yes, parsing fdt is a real pain, but please don't ask me to implement 
> all the
> helpers to make it easier together with this patch. I (and probably other
> developers) would really like to get this piece merged asap.

I won't. Mostly I was thinking out loud.

> > > + for (i = __reservedmem_of_table; i < &__rmem_of_table_sentinel; i++) {
> > > +         reservedmem_of_init_fn initfn = i->data;
> > > +         const char *compat = i->compatible;
> > > +
> > > +         if (!of_flat_dt_is_compatible(rmem->fdt_node, compat))
> > > +                 continue;
> >
> > What if two entries both match the compatible list? Ideally score would
> > be taken into account. (I won't block on this issue, it can be a future
> > enhancement)
> 
> If two entries have same compatible value they will be probed in the order
> of presence in the kernel binary. The return value is checked and the next
> one is being tried if init fails for the given function. The provided code
> already makes use of this feature. Both DMA coherent and CMA use
> "shared-dma-pool" compatible. DMA coherent init fails if 'reusable'
> property has been found. On the other hand, CMA fails initialization if
> 'reusable' property is missing. Frankly I would like to change standard
> DMA coherent compatible value to 'dma-pool' and keep 'shared-dma-pool'
> only for CMA, but I've implemented it the way it has been described in
> your binding documentation.

My binding document isn't gospel and it hasn't been merged yet. Reply to
the binding patch and make your argument for the change.

g.

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to