Re: [BISECTED][REGRESSION] 5.10.56 longterm kernel breakage on m68k/aranym

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

 



On Mon, Aug 09, 2021 at 03:40:04PM +0200, Geert Uytterhoeven wrote:
CC Mike

On Mon, Aug 9, 2021 at 3:32 PM Mikael Pettersson <mikpelinux@xxxxxxxxx> wrote:
On Mon, Aug 9, 2021 at 3:59 AM Finn Thain <fthain@xxxxxxxxxxxxxx> wrote:
On Sun, 8 Aug 2021, Mikael Pettersson wrote:
On Sun, Aug 8, 2021 at 1:20 AM Finn Thain <fthain@xxxxxxxxxxxxxx> wrote:
On Sat, 7 Aug 2021, Mikael Pettersson wrote:
I updated the 5.10 longterm kernel on one of my m68k/aranym VMs from
5.10.47 to 5.10.56, and the new kernel failed to boot:

ARAnyM 1.1.0
Using config file: 'aranym1.headless.config'
Could not open joystick 0
ARAnyM RTC Timer: /dev/rtc: Permission denied
ARAnyM LILO: Error loading ramdisk 'root.bin'
Blitter tried to read byte from register ff8a00 at 0077ee

At this point it kept running, but produced no output to the console,
and would never get to the point of starting user-space. Attaching gdb
to aranym showed nothing interesting, i.e. it seemed to be executing
normally.

My initial bisect was wrong. I tried reverting 8f34f1eac382 from
5.10.57 but that made no difference, so I re-ran the git bisect with
all known good points pre-marked. This landed on:
# first bad commit: [ce6ee46e0f39ed97e23ebf7b5a565e0266a8a1a3]
mm/page_alloc: fix memory map initialization for descending nodes

Reverting _that_ from 5.10.57 does unbreak that kernel.

Indeed there is a problem with that commit in 5.10. The memmap
initialization relies on availability of zone_to_nid() to link struct page
to a node. But in 5.10 zone_to_nid() is only defined for NUMA, but not for
DISCONTIGMEM.

Mikael, can you please try the patch below:

diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 9d0c454d23cd..63b550403317 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -445,7 +445,7 @@ struct zone {
 	 */
 	long lowmem_reserve[MAX_NR_ZONES];
 
-#ifdef CONFIG_NUMA
+#ifdef CONFIG_NEED_MULTIPLE_NODES
 	int node;
 #endif
 	struct pglist_data	*zone_pgdat;
@@ -896,7 +896,7 @@ static inline bool populated_zone(struct zone *zone)
 	return zone->present_pages;
 }
 
-#ifdef CONFIG_NUMA
+#ifdef CONFIG_NEED_MULTIPLE_NODES
 static inline int zone_to_nid(struct zone *zone)
 {
 	return zone->node;

-- 
Sincerely yours,
Mike.



[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux