Re: kernel BUG at include/linux/mm.h:1020!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 22, 2019 at 12:54:01PM +0500, Mikhail Gavrilov wrote:
> On Fri, 22 Mar 2019 at 12:39, Oscar Salvador <osalvador@xxxxxxx> wrote:
> >
> > do you happen to have your config at hand?
> > Could you share it please?
> >
> 
> https://pastebin.com/4idrLvJQ

Thanks, could you boot up with below patch and send back the log please?

diff --git a/mm/debug.c b/mm/debug.c
index 1611cf00a137..31f71517b0fb 100644
--- a/mm/debug.c
+++ b/mm/debug.c
@@ -54,7 +54,12 @@ void __dump_page(struct page *page, const char *reason)
 	 * dump_page() when detected.
 	 */
 	if (page_poisoned) {
-		pr_warn("page:%px is uninitialized and poisoned", page);
+		unsigned long pfn = page_to_pfn(page);
+		unsigned long section_nr = pfn_to_section_nr(pfn);
+		bool online = online_section(__nr_to_section(section_nr));
+
+		pr_warn("page:%px (pfn: %lx section: %ld online: %d)is uninitialized and poisoned",
+								page, pfn, section_nr, online);
 		goto hex_only;
 	}
 
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 3eb01dedfb50..a7b54c5995a6 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1324,6 +1324,7 @@ void __meminit reserve_bootmem_region(phys_addr_t start, phys_addr_t end)
 {
 	unsigned long start_pfn = PFN_DOWN(start);
 	unsigned long end_pfn = PFN_UP(end);
+	unsigned long __pfn = start_pfn;
 
 	for (; start_pfn < end_pfn; start_pfn++) {
 		if (pfn_valid(start_pfn)) {
@@ -1342,6 +1343,7 @@ void __meminit reserve_bootmem_region(phys_addr_t start, phys_addr_t end)
 			__SetPageReserved(page);
 		}
 	}
+	pr_info("%s: %lx - %lx init\n", __func__, __pfn, end_pfn - 1);
 }
 
 static void __free_pages_ok(struct page *page, unsigned int order)
@@ -1617,6 +1619,7 @@ static unsigned long  __init deferred_init_pages(int nid, int zid,
 	unsigned long nr_pgmask = pageblock_nr_pages - 1;
 	unsigned long nr_pages = 0;
 	struct page *page = NULL;
+	unsigned long start_pfn = pfn;
 
 	for (; pfn < end_pfn; pfn++) {
 		if (!deferred_pfn_valid(nid, pfn, &nid_init_state)) {
@@ -1631,6 +1634,8 @@ static unsigned long  __init deferred_init_pages(int nid, int zid,
 		__init_single_page(page, pfn, zid, nid);
 		nr_pages++;
 	}
+
+	pr_info("%s: pfn: %lx - %lx init\n", __func__, start_pfn, end_pfn - 1);
 	return (nr_pages);
 }
 
@@ -5748,10 +5753,14 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
 		 * function.  They do not exist on hotplugged memory.
 		 */
 		if (context == MEMMAP_EARLY) {
-			if (!early_pfn_valid(pfn))
+			if (!early_pfn_valid(pfn)) {
+				pr_info("%s: skipping: %lx\n", __func__, pfn);
 				continue;
-			if (!early_pfn_in_nid(pfn, nid))
+			}
+			if (!early_pfn_in_nid(pfn, nid)) {
+				pr_info("%s: skipping: %lx\n", __func__, pfn);
 				continue;
+			}
 			if (overlap_memmap_init(zone, &pfn))
 				continue;
 			if (defer_init(nid, pfn, end_pfn))
@@ -5780,6 +5789,7 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,
 			cond_resched();
 		}
 	}
+	pr_info("%s: pfn: %lx - %lx init\n", __func__, start_pfn, end_pfn - 1);
 }
 
 #ifdef CONFIG_ZONE_DEVICE
@@ -5852,6 +5862,7 @@ void __ref memmap_init_zone_device(struct zone *zone,
 		}
 	}
 
+	pr_info("%s: %lx - %lx init\n", __func__, start_pfn, end_pfn - 1);
 	pr_info("%s initialised, %lu pages in %ums\n", dev_name(pgmap->dev),
 		size, jiffies_to_msecs(jiffies - start));
 }
@@ -6651,6 +6662,8 @@ static void __init free_area_init_core(struct pglist_data *pgdat)
 		setup_usemap(pgdat, zone, zone_start_pfn, size);
 		init_currently_empty_zone(zone, zone_start_pfn, size);
 		memmap_init(size, nid, j, zone_start_pfn);
+		pr_info("%s: zone: %s zone: %lx - %lx\n",
+			__func__, zone->name, zone_start_pfn, zone_end_pfn(zone));
 	}
 }
 
@@ -6765,6 +6778,8 @@ static u64 zero_pfn_range(unsigned long spfn, unsigned long epfn)
 		pgcnt++;
 	}
 
+	pr_info("%s: %lx - %lx zeroed\n", __func__, spfn, epfn - 1);
+
 	return pgcnt;
 }

-- 
Oscar Salvador
SUSE L3




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux