* [PATCH] of: alloc anywhere from memblock if range not specified
@ 2016-02-01 14:44 Vinayak Menon
[not found] ` <1454337867-5111-1-git-send-email-vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
0 siblings, 1 reply; 7+ messages in thread
From: Vinayak Menon @ 2016-02-01 14:44 UTC (permalink / raw)
To: devicetree-u79uwXL29TY76Z2rM5mHXA
Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
frowand.list-Re5JQEeQqe8AvxtiuMwx3w,
grant.likely-QSEj5FYQhm4dnm+yROfE0A,
m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ,
vinayakm.list-Re5JQEeQqe8AvxtiuMwx3w, Vinayak Menon
early_init_dt_alloc_reserved_memory_arch passes end as 0 to
__memblock_alloc_base, when limits are not specified. But
__memblock_alloc_base takes end value of 0 as MEMBLOCK_ALLOC_ACCESSIBLE
and limits the end to memblock.current_limit. This results in regions
never being placed in HIGHMEM area, for e.g. CMA.
Let __memblock_alloc_base allocate from anywhere in memory if limits are
not specified.
Signed-off-by: Vinayak Menon <vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
---
drivers/of/of_reserved_mem.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c
index 1a3556a..ed01c01 100644
--- a/drivers/of/of_reserved_mem.c
+++ b/drivers/of/of_reserved_mem.c
@@ -32,11 +32,13 @@ int __init __weak early_init_dt_alloc_reserved_memory_arch(phys_addr_t size,
phys_addr_t align, phys_addr_t start, phys_addr_t end, bool nomap,
phys_addr_t *res_base)
{
+ phys_addr_t base;
/*
* We use __memblock_alloc_base() because memblock_alloc_base()
* panic()s on allocation failure.
*/
- phys_addr_t base = __memblock_alloc_base(size, align, end);
+ end = !end ? MEMBLOCK_ALLOC_ANYWHERE : end;
+ base = __memblock_alloc_base(size, align, end);
if (!base)
return -ENOMEM;
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member of the Code Aurora Forum, hosted by The Linux Foundation
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 7+ messages in thread[parent not found: <1454337867-5111-1-git-send-email-vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>]
* Re: [PATCH] of: alloc anywhere from memblock if range not specified [not found] ` <1454337867-5111-1-git-send-email-vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> @ 2016-02-19 8:28 ` Marek Szyprowski [not found] ` <56C6D21A.2050100-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 0 siblings, 1 reply; 7+ messages in thread From: Marek Szyprowski @ 2016-02-19 8:28 UTC (permalink / raw) To: Vinayak Menon, devicetree-u79uwXL29TY76Z2rM5mHXA Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, frowand.list-Re5JQEeQqe8AvxtiuMwx3w, grant.likely-QSEj5FYQhm4dnm+yROfE0A, vinayakm.list-Re5JQEeQqe8AvxtiuMwx3w Hello, On 2016-02-01 15:44, Vinayak Menon wrote: > early_init_dt_alloc_reserved_memory_arch passes end as 0 to > __memblock_alloc_base, when limits are not specified. But > __memblock_alloc_base takes end value of 0 as MEMBLOCK_ALLOC_ACCESSIBLE > and limits the end to memblock.current_limit. This results in regions > never being placed in HIGHMEM area, for e.g. CMA. > Let __memblock_alloc_base allocate from anywhere in memory if limits are > not specified. > > Signed-off-by: Vinayak Menon <vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> Acked-by: Marek Szyprowski <m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> You may need to resend it lkml to let someone to pick it for merging. devicetree ml is mainly for discussing the bindings. > --- > drivers/of/of_reserved_mem.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c > index 1a3556a..ed01c01 100644 > --- a/drivers/of/of_reserved_mem.c > +++ b/drivers/of/of_reserved_mem.c > @@ -32,11 +32,13 @@ int __init __weak early_init_dt_alloc_reserved_memory_arch(phys_addr_t size, > phys_addr_t align, phys_addr_t start, phys_addr_t end, bool nomap, > phys_addr_t *res_base) > { > + phys_addr_t base; > /* > * We use __memblock_alloc_base() because memblock_alloc_base() > * panic()s on allocation failure. > */ > - phys_addr_t base = __memblock_alloc_base(size, align, end); > + end = !end ? MEMBLOCK_ALLOC_ANYWHERE : end; > + base = __memblock_alloc_base(size, align, end); > if (!base) > return -ENOMEM; > Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <56C6D21A.2050100-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>]
* Re: [PATCH] of: alloc anywhere from memblock if range not specified [not found] ` <56C6D21A.2050100-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> @ 2016-02-22 13:48 ` vinayak menon 0 siblings, 0 replies; 7+ messages in thread From: vinayak menon @ 2016-02-22 13:48 UTC (permalink / raw) To: Marek Szyprowski Cc: Vinayak Menon, devicetree-u79uwXL29TY76Z2rM5mHXA, robh+dt-DgEjT+Ai2ygdnm+yROfE0A, frowand.list-Re5JQEeQqe8AvxtiuMwx3w, grant.likely-QSEj5FYQhm4dnm+yROfE0A On Fri, Feb 19, 2016 at 1:58 PM, Marek Szyprowski <m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> wrote: > Hello, > > On 2016-02-01 15:44, Vinayak Menon wrote: >> >> early_init_dt_alloc_reserved_memory_arch passes end as 0 to >> __memblock_alloc_base, when limits are not specified. But >> __memblock_alloc_base takes end value of 0 as MEMBLOCK_ALLOC_ACCESSIBLE >> and limits the end to memblock.current_limit. This results in regions >> never being placed in HIGHMEM area, for e.g. CMA. >> Let __memblock_alloc_base allocate from anywhere in memory if limits are >> not specified. >> >> Signed-off-by: Vinayak Menon <vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> > > > Acked-by: Marek Szyprowski <m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> > > You may need to resend it lkml to let someone to pick it for merging. > devicetree ml is mainly for discussing the bindings. > Thanks. I will resend it to lkml. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] of: alloc anywhere from memblock if range not specified
@ 2016-02-22 13:45 Vinayak Menon
[not found] ` <1456148744-7583-1-git-send-email-vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
0 siblings, 1 reply; 7+ messages in thread
From: Vinayak Menon @ 2016-02-22 13:45 UTC (permalink / raw)
To: devicetree-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
frowand.list-Re5JQEeQqe8AvxtiuMwx3w,
grant.likely-QSEj5FYQhm4dnm+yROfE0A,
m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ,
vinayakm.list-Re5JQEeQqe8AvxtiuMwx3w, Vinayak Menon
early_init_dt_alloc_reserved_memory_arch passes end as 0 to
__memblock_alloc_base, when limits are not specified. But
__memblock_alloc_base takes end value of 0 as MEMBLOCK_ALLOC_ACCESSIBLE
and limits the end to memblock.current_limit. This results in regions
never being placed in HIGHMEM area, for e.g. CMA.
Let __memblock_alloc_base allocate from anywhere in memory if limits are
not specified.
Acked-by: Marek Szyprowski <m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
Signed-off-by: Vinayak Menon <vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
---
drivers/of/of_reserved_mem.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c
index 1a3556a..ed01c01 100644
--- a/drivers/of/of_reserved_mem.c
+++ b/drivers/of/of_reserved_mem.c
@@ -32,11 +32,13 @@ int __init __weak early_init_dt_alloc_reserved_memory_arch(phys_addr_t size,
phys_addr_t align, phys_addr_t start, phys_addr_t end, bool nomap,
phys_addr_t *res_base)
{
+ phys_addr_t base;
/*
* We use __memblock_alloc_base() because memblock_alloc_base()
* panic()s on allocation failure.
*/
- phys_addr_t base = __memblock_alloc_base(size, align, end);
+ end = !end ? MEMBLOCK_ALLOC_ANYWHERE : end;
+ base = __memblock_alloc_base(size, align, end);
if (!base)
return -ENOMEM;
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member of the Code Aurora Forum, hosted by The Linux Foundation
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 7+ messages in thread[parent not found: <1456148744-7583-1-git-send-email-vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>]
* Re: [PATCH] of: alloc anywhere from memblock if range not specified [not found] ` <1456148744-7583-1-git-send-email-vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> @ 2016-03-03 22:52 ` Rob Herring 2017-01-10 16:16 ` Leonard Crestez 1 sibling, 0 replies; 7+ messages in thread From: Rob Herring @ 2016-03-03 22:52 UTC (permalink / raw) To: Vinayak Menon Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, frowand.list-Re5JQEeQqe8AvxtiuMwx3w, grant.likely-QSEj5FYQhm4dnm+yROfE0A, m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ, vinayakm.list-Re5JQEeQqe8AvxtiuMwx3w On Mon, Feb 22, 2016 at 07:15:44PM +0530, Vinayak Menon wrote: > early_init_dt_alloc_reserved_memory_arch passes end as 0 to > __memblock_alloc_base, when limits are not specified. But > __memblock_alloc_base takes end value of 0 as MEMBLOCK_ALLOC_ACCESSIBLE > and limits the end to memblock.current_limit. This results in regions > never being placed in HIGHMEM area, for e.g. CMA. > Let __memblock_alloc_base allocate from anywhere in memory if limits are > not specified. > > Acked-by: Marek Szyprowski <m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> > Signed-off-by: Vinayak Menon <vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> Applied and marked for stable. Rob -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] of: alloc anywhere from memblock if range not specified [not found] ` <1456148744-7583-1-git-send-email-vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2016-03-03 22:52 ` Rob Herring @ 2017-01-10 16:16 ` Leonard Crestez 2017-01-10 19:49 ` Laura Abbott 1 sibling, 1 reply; 7+ messages in thread From: Leonard Crestez @ 2017-01-10 16:16 UTC (permalink / raw) To: Vinayak Menon Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, robh+dt-DgEjT+Ai2ygdnm+yROfE0A, frowand.list-Re5JQEeQqe8AvxtiuMwx3w, grant.likely-QSEj5FYQhm4dnm+yROfE0A, m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ, vinayakm.list-Re5JQEeQqe8AvxtiuMwx3w, Octavian Purdila Hello, I have some trouble with this patch. It seems the intention is to allow CMA to be placed in highmem. If the CMA area is larger than highmem and no alloc-ranges is specified (just a size) it is possible to end up allocating a area that spans from multiple zones. This later breaks checks in cma_activate_area and makes most dma allocations fail. Am I missing something or this a bug? On Mon, Feb 22, 2016 at 3:45 PM, Vinayak Menon <vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> wrote: > > early_init_dt_alloc_reserved_memory_arch passes end as 0 to > __memblock_alloc_base, when limits are not specified. But > __memblock_alloc_base takes end value of 0 as MEMBLOCK_ALLOC_ACCESSIBLE > and limits the end to memblock.current_limit. This results in regions > never being placed in HIGHMEM area, for e.g. CMA. > Let __memblock_alloc_base allocate from anywhere in memory if limits are > not specified. > > Acked-by: Marek Szyprowski <m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> > Signed-off-by: Vinayak Menon <vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> > --- > drivers/of/of_reserved_mem.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c > index 1a3556a..ed01c01 100644 > --- a/drivers/of/of_reserved_mem.c > +++ b/drivers/of/of_reserved_mem.c > @@ -32,11 +32,13 @@ int __init __weak early_init_dt_alloc_reserved_memory_arch(phys_addr_t size, > phys_addr_t align, phys_addr_t start, phys_addr_t end, bool nomap, > phys_addr_t *res_base) > { > + phys_addr_t base; > /* > * We use __memblock_alloc_base() because memblock_alloc_base() > * panic()s on allocation failure. > */ > - phys_addr_t base = __memblock_alloc_base(size, align, end); > + end = !end ? MEMBLOCK_ALLOC_ANYWHERE : end; > + base = __memblock_alloc_base(size, align, end); > if (!base) > return -ENOMEM; > > -- > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a > member of the Code Aurora Forum, hosted by The Linux Foundation > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] of: alloc anywhere from memblock if range not specified 2017-01-10 16:16 ` Leonard Crestez @ 2017-01-10 19:49 ` Laura Abbott 0 siblings, 0 replies; 7+ messages in thread From: Laura Abbott @ 2017-01-10 19:49 UTC (permalink / raw) To: Leonard Crestez, Vinayak Menon Cc: devicetree, linux-kernel, robh+dt, vinayakm.list, Octavian Purdila, frowand.list, linux-arm-kernel, m.szyprowski On 01/10/2017 08:16 AM, Leonard Crestez wrote: > Hello, > > I have some trouble with this patch. > > It seems the intention is to allow CMA to be placed in highmem. If the CMA area is > larger than highmem and no alloc-ranges is specified (just a size) it is possible > to end up allocating a area that spans from multiple zones. This later breaks > checks in cma_activate_area and makes most dma allocations fail. > > Am I missing something or this a bug? > This has been discussed in previous threads https://marc.info/?l=linux-kernel&m=147990760506179&w=2 https://marc.info/?l=linux-kernel&m=147928325113103&w=2 I haven't seen any follow up since then though. > On Mon, Feb 22, 2016 at 3:45 PM, Vinayak Menon <vinmenon@codeaurora.org> wrote: >> >> early_init_dt_alloc_reserved_memory_arch passes end as 0 to >> __memblock_alloc_base, when limits are not specified. But >> __memblock_alloc_base takes end value of 0 as MEMBLOCK_ALLOC_ACCESSIBLE >> and limits the end to memblock.current_limit. This results in regions >> never being placed in HIGHMEM area, for e.g. CMA. >> Let __memblock_alloc_base allocate from anywhere in memory if limits are >> not specified. >> >> Acked-by: Marek Szyprowski <m.szyprowski@samsung.com> >> Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org> >> --- >> drivers/of/of_reserved_mem.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c >> index 1a3556a..ed01c01 100644 >> --- a/drivers/of/of_reserved_mem.c >> +++ b/drivers/of/of_reserved_mem.c >> @@ -32,11 +32,13 @@ int __init __weak early_init_dt_alloc_reserved_memory_arch(phys_addr_t size, >> phys_addr_t align, phys_addr_t start, phys_addr_t end, bool nomap, >> phys_addr_t *res_base) >> { >> + phys_addr_t base; >> /* >> * We use __memblock_alloc_base() because memblock_alloc_base() >> * panic()s on allocation failure. >> */ >> - phys_addr_t base = __memblock_alloc_base(size, align, end); >> + end = !end ? MEMBLOCK_ALLOC_ANYWHERE : end; >> + base = __memblock_alloc_base(size, align, end); >> if (!base) >> return -ENOMEM; >> >> -- >> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a >> member of the Code Aurora Forum, hosted by The Linux Foundation >> > -- > To unsubscribe from this list: send the line "unsubscribe devicetree" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-01-10 19:49 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-01 14:44 [PATCH] of: alloc anywhere from memblock if range not specified Vinayak Menon
[not found] ` <1454337867-5111-1-git-send-email-vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-02-19 8:28 ` Marek Szyprowski
[not found] ` <56C6D21A.2050100-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2016-02-22 13:48 ` vinayak menon
-- strict thread matches above, loose matches on Subject: below --
2016-02-22 13:45 Vinayak Menon
[not found] ` <1456148744-7583-1-git-send-email-vinmenon-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-03-03 22:52 ` Rob Herring
2017-01-10 16:16 ` Leonard Crestez
2017-01-10 19:49 ` Laura Abbott
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).