On Fri, Jan 9, 2015 at 4:05 PM, George G. Davis <ggdavisiv@xxxxxxxxx> wrote: > On Fri, Jan 09, 2015 at 01:33:10PM -0500, George G. Davis wrote: >> On Fri, Jan 09, 2015 at 11:53:01AM -0600, Rob Herring wrote: >> > On Fri, Jan 9, 2015 at 8:29 AM, George G. Davis <ggdavisiv@xxxxxxxxx> wrote: >> > > Export of_reserved_mem_device_{init,release} so that modules >> > > can initialize and release their assigned per-device cma_area. >> > >> > I believe the original intent was for the core bus code to call these >> > functions. While the commit adding them says "automated assignment" >> > that part did not go in. >> >> I suspected that there may have been a bit of missing magic. The only >> use of these functions that I was able to find was in an earlier out of >> tree patch series where these functions were called from the s5p-mfc >> driver: >> >> http://lists.linaro.org/pipermail/linaro-mm-sig/2014-August/004140.html >> >> I agree that "automated assignment" via core bus code would be a better >> solution but I don't know where to add the calls. > > How about something like the following for automated assignment?: It seems Grant wasn't happy about the core code doing this[1]. So I guess your original patch was okay except you should use EXPORT_SYMBOL_GPL. I can fix that up if you agree. Rob [1] https://lkml.org/lkml/2014/3/2/30 > > diff --git a/drivers/base/platform.c b/drivers/base/platform.c > index 9421fed..231b427 100644 > --- a/drivers/base/platform.c > +++ b/drivers/base/platform.c > @@ -14,6 +14,7 @@ > #include <linux/platform_device.h> > #include <linux/of_device.h> > #include <linux/of_irq.h> > +#include <linux/of_reserved_mem.h> > #include <linux/module.h> > #include <linux/init.h> > #include <linux/dma-mapping.h> > @@ -509,9 +510,12 @@ static int platform_drv_probe(struct device *_dev) > > ret = dev_pm_domain_attach(_dev, true); > if (ret != -EPROBE_DEFER) { > + of_reserved_mem_device_init(_dev); > ret = drv->probe(dev); > - if (ret) > + if (ret) { > + of_reserved_mem_device_release(_dev); > dev_pm_domain_detach(_dev, true); > + } > } > > if (drv->prevent_deferred_probe && ret == -EPROBE_DEFER) { > @@ -534,6 +538,7 @@ static int platform_drv_remove(struct device *_dev) > int ret; > > ret = drv->remove(dev); > + of_reserved_mem_device_release(_dev); > dev_pm_domain_detach(_dev, true); > > return ret; > > > -- > Regards, > George >> >> > As it stands, there are no in tree users of >> > these functions. >> > >> > Marek, comments? >> >> Thanks! >> >> -- >> Regards, >> George >> >> > >> > Rob >> > >> > > >> > > Signed-off-by: George G. Davis <george_davis@xxxxxxxxxx> >> > > --- >> > > drivers/of/of_reserved_mem.c | 2 ++ >> > > 1 file changed, 2 insertions(+) >> > > >> > > diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c >> > > index dc566b3..5eeb5b2 100644 >> > > --- a/drivers/of/of_reserved_mem.c >> > > +++ b/drivers/of/of_reserved_mem.c >> > > @@ -265,6 +265,7 @@ int of_reserved_mem_device_init(struct device *dev) >> > > >> > > return ret; >> > > } >> > > +EXPORT_SYMBOL(of_reserved_mem_device_init); >> > > >> > > /** >> > > * of_reserved_mem_device_release() - release reserved memory device structures >> > > @@ -289,3 +290,4 @@ void of_reserved_mem_device_release(struct device *dev) >> > > >> > > rmem->ops->device_release(rmem, dev); >> > > } >> > > +EXPORT_SYMBOL(of_reserved_mem_device_release); >> > > -- >> > > 1.9.3 >> > > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html