On 22 December 2017 at 14:36, Greg Kroah-Hartman gregkh@linuxfoundation.org wrote:
On Fri, Dec 22, 2017 at 02:29:55PM +0530, Naresh Kamboju wrote:
On 22 December 2017 at 12:41, Greg Kroah-Hartman gregkh@linuxfoundation.org wrote:
On Thu, Dec 21, 2017 at 04:35:30PM -0600, Dan Rue wrote:
Hi Greg,
It looks like the pending v4.14.8-159-gc2a94d1a609 fails to boot on all arm64 boards. hikey and juno are failing for us, and I see similar arm64 boot failures reported by kernelci.
Still investigating root cause.
Any help in bisecting to find the problem here would be great...
Booting now on arm64 Hikey board. After reverting 83e3c48729d.
git revert 83e3c48729d9ebb7af5a31a504f3fd6aff0348c4
Any hint as to what the name of that commit is? The tree is rebased a lot, that commit is long gone :(
After reverting the below commit the boot successful.
commit 83e3c48729d9ebb7af5a31a504f3fd6aff0348c4 mm/sparsemem: Allocate mem_section at runtime for CONFIG_SPARSEMEM_EXTREME=y
From the history of linux-next,
I have reported linux-next 20171102 boot failure on arm64 on November 2nd Bug 3404 - linux-next-20171102 doesn't boot on HiKey https://bugs.linaro.org/show_bug.cgi?id=3404
one of the comments from bug says "This bug is been fixed by applying this patch." [PATCH] mm, sparse: Fix boot on arm64
[start quote] Since 83e3c48729d9 ("mm/sparsemem: Allocate mem_section at runtime for CONFIG_SPARSEMEM_EXTREME=y") we allocate mem_section dynamically in sparse_memory_present_with_active_regions(). But some architectures, like arm64, don't use the routine to initialize sparsemem.
Let's move the initialization into memory_present() it should cover all architectures.
Signed-off-by: Kirill A. Shutemov kirill.shute...@linux.intel.com Fixes: 83e3c48729d9 ("mm/sparsemem: Allocate mem_section at runtime for CONFIG_SPARSEMEM_EXTREME=y") --- mm/page_alloc.c | 10 ---------- mm/sparse.c | 10 ++++++++++ 2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 8dfd13f724d9..77e4d3c5c57b 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5646,16 +5646,6 @@ void __init sparse_memory_present_with_active_regions(int nid) unsigned long start_pfn, end_pfn; int i, this_nid;
-#ifdef CONFIG_SPARSEMEM_EXTREME - if (!mem_section) { - unsigned long size, align; - - size = sizeof(struct mem_section) * NR_SECTION_ROOTS; - align = 1 << (INTERNODE_CACHE_SHIFT); - mem_section = memblock_virt_alloc(size, align); - } -#endif - for_each_mem_pfn_range(i, nid, &start_pfn, &end_pfn, &this_nid) memory_present(this_nid, start_pfn, end_pfn); } diff --git a/mm/sparse.c b/mm/sparse.c index b00a97398795..d294148ba395 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -206,6 +206,16 @@ void __init memory_present(int nid, unsigned long start, unsigned long end) { unsigned long pfn;
+#ifdef CONFIG_SPARSEMEM_EXTREME + if (unlikely(!mem_section)) { + unsigned long size, align; + + size = sizeof(struct mem_section) * NR_SECTION_ROOTS; + align = 1 << (INTERNODE_CACHE_SHIFT); + mem_section = memblock_virt_alloc(size, align); + } +#endif + start &= PAGE_SECTION_MASK; mminit_validate_memmodel_limits(&start, &end); for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) {
[end quote]
Please refer this link for more information, Re: [tip:x86/mm] mm/sparsemem: Allocate mem_section at runtime for CONFIG_SPARSEMEM_EXTREME=y https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1527427.html#na...
Linux version 4.14.9-rc1-00160-gb610c43 (naresh@linaro) (gcc version 4.9.2 20140904 (prerelease) (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.9- 2014.09)) #1 SMP PREEMPT Fri Dec 22 14:21:46 IST 2017
Ref:
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1527427.html#na... https://bugs.linaro.org/show_bug.cgi?id=3404
What does this mean?
It was additional information. Reference thread and bug links about this commit and bug investigation.
confused,
greg k-h