Message ID | 2dee6c0baaf08e2c7d48ceb7e97e511c914d0f87.1486655917.git-series.maxime.ripard@free-electrons.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
[CC CMA people] On Thu 09-02-17 17:39:17, Maxime Ripard wrote: > Modules might want to check their CMA pool size and address for debugging > and / or have additional checks. > > The obvious way to do this would be through dev_get_cma_area and > cma_get_base and cma_get_size, that are currently not exported, which > results in a build failure. > > Export them to prevent such a failure. Who actually uses those exports. None of the follow up patches does AFAICS. > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> > --- > drivers/base/dma-contiguous.c | 1 + > mm/cma.c | 2 ++ > 2 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/drivers/base/dma-contiguous.c b/drivers/base/dma-contiguous.c > index e167a1e1bccb..60f5c2591ccd 100644 > --- a/drivers/base/dma-contiguous.c > +++ b/drivers/base/dma-contiguous.c > @@ -35,6 +35,7 @@ > #endif > > struct cma *dma_contiguous_default_area; > +EXPORT_SYMBOL(dma_contiguous_default_area); > > /* > * Default global CMA area size can be defined in kernel's .config. > diff --git a/mm/cma.c b/mm/cma.c > index c960459eda7e..b50245282a18 100644 > --- a/mm/cma.c > +++ b/mm/cma.c > @@ -47,11 +47,13 @@ phys_addr_t cma_get_base(const struct cma *cma) > { > return PFN_PHYS(cma->base_pfn); > } > +EXPORT_SYMBOL(cma_get_base); > > unsigned long cma_get_size(const struct cma *cma) > { > return cma->count << PAGE_SHIFT; > } > +EXPORT_SYMBOL(cma_get_size); > > static unsigned long cma_bitmap_aligned_mask(const struct cma *cma, > int align_order) > -- > git-series 0.8.11 > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@kvack.org. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Hi Michal, On Thu, Feb 09, 2017 at 08:20:47PM +0100, Michal Hocko wrote: > [CC CMA people] > > On Thu 09-02-17 17:39:17, Maxime Ripard wrote: > > Modules might want to check their CMA pool size and address for debugging > > and / or have additional checks. > > > > The obvious way to do this would be through dev_get_cma_area and > > cma_get_base and cma_get_size, that are currently not exported, which > > results in a build failure. > > > > Export them to prevent such a failure. > > Who actually uses those exports. None of the follow up patches does > AFAICS. This is for the ARM Mali GPU driver that is out of tree, unfortunately. In one case (using the legacy fbdev API), the driver wants to (and probably should) validate that the buffer as indeed been allocated from the memory allocation pool. Rob suggested that instead of hardcoding it to cover the whole RAM (which defeats the purpose of that check in the first place), we used the memory-region bindings in the DT and follow that, which does work great, but we still have to retrieve the base address and size of that region, hence why this patches are needed. Maxime
On Mon 13-02-17 14:44:16, Maxime Ripard wrote: > Hi Michal, > > On Thu, Feb 09, 2017 at 08:20:47PM +0100, Michal Hocko wrote: > > [CC CMA people] > > > > On Thu 09-02-17 17:39:17, Maxime Ripard wrote: > > > Modules might want to check their CMA pool size and address for debugging > > > and / or have additional checks. > > > > > > The obvious way to do this would be through dev_get_cma_area and > > > cma_get_base and cma_get_size, that are currently not exported, which > > > results in a build failure. > > > > > > Export them to prevent such a failure. > > > > Who actually uses those exports. None of the follow up patches does > > AFAICS. > > This is for the ARM Mali GPU driver that is out of tree, unfortunately. We do not export symbols which do not have any in-tree users. > In one case (using the legacy fbdev API), the driver wants to (and > probably should) validate that the buffer as indeed been allocated > from the memory allocation pool. > > Rob suggested that instead of hardcoding it to cover the whole RAM > (which defeats the purpose of that check in the first place), we used > the memory-region bindings in the DT and follow that, which does work > great, but we still have to retrieve the base address and size of that > region, hence why this patches are needed. Anyway I would suggest talking to CMA people to find a better API for modules to use...
On Mon, Feb 20, 2017 at 01:35:50PM +0100, Michal Hocko wrote: > On Mon 13-02-17 14:44:16, Maxime Ripard wrote: > > Hi Michal, > > > > On Thu, Feb 09, 2017 at 08:20:47PM +0100, Michal Hocko wrote: > > > [CC CMA people] > > > > > > On Thu 09-02-17 17:39:17, Maxime Ripard wrote: > > > > Modules might want to check their CMA pool size and address for debugging > > > > and / or have additional checks. > > > > > > > > The obvious way to do this would be through dev_get_cma_area and > > > > cma_get_base and cma_get_size, that are currently not exported, which > > > > results in a build failure. > > > > > > > > Export them to prevent such a failure. > > > > > > Who actually uses those exports. None of the follow up patches does > > > AFAICS. > > > > This is for the ARM Mali GPU driver that is out of tree, unfortunately. > > We do not export symbols which do not have any in-tree users. Ok, sorry for the noise. Thanks! Maxime
diff --git a/drivers/base/dma-contiguous.c b/drivers/base/dma-contiguous.c index e167a1e1bccb..60f5c2591ccd 100644 --- a/drivers/base/dma-contiguous.c +++ b/drivers/base/dma-contiguous.c @@ -35,6 +35,7 @@ #endif struct cma *dma_contiguous_default_area; +EXPORT_SYMBOL(dma_contiguous_default_area); /* * Default global CMA area size can be defined in kernel's .config. diff --git a/mm/cma.c b/mm/cma.c index c960459eda7e..b50245282a18 100644 --- a/mm/cma.c +++ b/mm/cma.c @@ -47,11 +47,13 @@ phys_addr_t cma_get_base(const struct cma *cma) { return PFN_PHYS(cma->base_pfn); } +EXPORT_SYMBOL(cma_get_base); unsigned long cma_get_size(const struct cma *cma) { return cma->count << PAGE_SHIFT; } +EXPORT_SYMBOL(cma_get_size); static unsigned long cma_bitmap_aligned_mask(const struct cma *cma, int align_order)
Modules might want to check their CMA pool size and address for debugging and / or have additional checks. The obvious way to do this would be through dev_get_cma_area and cma_get_base and cma_get_size, that are currently not exported, which results in a build failure. Export them to prevent such a failure. Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> --- drivers/base/dma-contiguous.c | 1 + mm/cma.c | 2 ++ 2 files changed, 3 insertions(+), 0 deletions(-)