On Mon, Jun 17, 2019 at 10:00:32PM +0200, Geert Uytterhoeven wrote:
> Hi Mike,
>
> On Thu, May 16, 2019 at 8:03 AM Mike Rapoport <[email protected]> wrote:
> > These pacthes replace DISCONTIGMEM with SPARSEMEM on m68k for systems with
> > !SINGLE_MEMORY_CHUNK set.
> >
> > With SPARSEMEM there is a single node for the entire physical memory and to
> > cope with holes in the physical address space it is divided to sections of
> > up to 16M.
> >
> > Each section has it's own memory map which size depends on actual populated
> > memory.
> >
> > The section size of 16M was chosen pretty much arbitrarily as I couldn't
> > find specs for systems with e.g. Zorro memory extensions.
>
> For an atari_defconfig kernel, bloat-o-meter says:
>
> add/remove: 33/26 grow/shrink: 17/234 up/down: 6801/-32284 (-25483)
> Function old new delta
>
> Nice!
>
> Unfortunately it crashes on my Amiga, cfr. the logs below.
>
> Then I realized the "section size of 16M". My Amiga has a single block
> of 12 MiB of FastRAM at 0x07400000, which is not aligned to 16 MiB.
> (Yes, base address of motherboard RAM is 0x08000000 - ramsize ;-)
>
> I've tried:
>
> -#define MAX_PHYSMEM_BITS 32
> -#define SECTION_SIZE_BITS 24
> +#define MAX_PHYSMEM_BITS 30
Why is this 30 bit? Does m68k limit physical address to 30 bits?
Did you try to change only the SECTION_SIZE_BITS?
> +#define SECTION_SIZE_BITS 22
>
> but that doesn't seem to make a difference.
>
> Do you have a clue? Thanks!
Not really, at least yet.
Can you please send the entire log with
"mminit_loglevel=4 memblock=debug debug"
in the command line?
> With initrd:
>
> [...]
> UDP hash table entries: 256 (order: 0, 4096 bytes)
> UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
> NET: Registered protocol family 1
> Unable to handle kernel NULL pointer dereference at virtual address (ptrval)
> Oops: 00000000
> Modules linked in:
> PC: [<000736fe>] get_page_from_freelist+0x776/0x7b8
> SR: 2004 SP: (ptrval) a2: 0041a490
> d0: 00000001 d1: 0000ffff d2: 00000001 d3: 000000fe
> d4: 00002000 d5: 00000000 a0: 00000000 a1: 004ad000
> Process kthreadd (pid: 2, task=(ptrval))
> Frame format=7 eff addr=00425dcc ssw=0485 faddr=00000000
> wb 1 stat/addr/data: 0005 004ac830 000731ba
> wb 2 stat/addr/data: 0085 00000000 00000000
> wb 3 stat/addr/data: 0085 00000004 00000000
> push data: 000731ba 004ac830 00000002 00000001
> Stack from 00425dec:
> 00400dc0 00000001 00000001 00000000 00000000 00000000 00425e9a
> 00072f88
> 0007b604 00425ed4 00000000 00000000 0034b06c 00000002 0034b622
> 0034b06c
> 00000000 0033875c 00000024 00000080 0033875c 00400dc0 00073b20
> 00400dc0
> 00000001 00000201 00425e9a 00000000 00800711 00000000 00000000
> 00000000
> 00000000 004aa960 0041a490 0007b604 00421050 00425ec0 0007b1d2
> 00040cc0
> 00000000 00000000 00000000 ffff0034 b6220000 00000034 b6220000
> 00000000
> Call Trace: [<00072f88>] get_page_from_freelist+0x0/0x7b8
> [<0007b604>] kmem_cache_alloc+0x0/0x7c
> [<00073b20>] __alloc_pages_nodemask+0x106/0x7e4
> [<0007b604>] kmem_cache_alloc+0x0/0x7c
> [<0007b1d2>] cache_alloc_refill+0x17e/0x512
> [<00040cc0>] run_posix_cpu_timers+0x1a4/0x53e
> [<00010000>] __mmdrop+0x84/0xe0
> [<0007b604>] kmem_cache_alloc+0x0/0x7c
> [<00029bd6>] __enqueue_entity.constprop.25+0x3e/0x6c
> [<0007b676>] kmem_cache_alloc+0x72/0x7c
> [<00010c04>] copy_process.isra.10.part.11+0x116/0xc96
> [<0007be64>] kfree+0x0/0x5a
> [<000118c2>] _do_fork+0x9e/0x1f4
> [<00023e42>] kthread+0x0/0xdc
> [<0002d09c>] complete+0x0/0x34
> [<0007be64>] kfree+0x0/0x5a
> [<0002d09c>] complete+0x0/0x34
> [<0007be64>] kfree+0x0/0x5a
> [<00011a3a>] kernel_thread+0x0/0x26
> [<00011a5a>] kernel_thread+0x20/0x26
> [<00023e42>] kthread+0x0/0xdc
> [<00024808>] kthreadd+0x8e/0xba
> [<00023e42>] kthread+0x0/0xdc
> [<000684e8>] __munlock_pagevec+0xb8/0x202
> [<0002477a>] kthreadd+0x0/0xba
> [<00002990>] ret_from_kernel_thread+0xc/0x14
> Code: 6000 fa78 52aa 0384 2056 4290 42a8 0004 <42a8> 0008 43e8 0010
> 42a8 000c 2203 f620 9000 5148 5148 51c9 fff6 53aa 0384 5280
> Disabling lock debugging due to kernel taint
>
> With old Debian root fs:
>
> [...]
> EXT4-fs (hda4): mounting ext3 file system using the ext4 subsystem
> EXT4-fs (hda4): mounted filesystem with ordered data mode. Opts: (null)
> VFS: Mounted root (ext3 filesystem) readonly on device 3:4.
> Freeing unused kernel memory: 136K
> This architecture does not have kernel memory protection.
> Run /sbin/init as init process
> INIT: version 2.86 booting
> random: crng init done
>
> Unable to handle kernel access at virtual address ff07c0c1
> Oops: 00000000
> Modules linked in:
> PC: [<001be3d4>] ide_input_data+0x4c/0x12e
> SR: 2708 SP: 38ac059a a2: 008c94f0
> d0: 00000000 d1: 0039d000 d2: 94ec4ab9 d3: 0000007f
> d4: 00930801 d5: 94ec4ab9 a0: 94ec4abb a1: 00930800
> Process kworker/0:1H (pid: 66, task=a61603df)
> Frame format=7 eff addr=0093bcec ssw=04c5 faddr=94ec4ab9
> wb 1 stat/addr/data: 0045 0000001b 000044a4
> wb 2 stat/addr/data: 00c5 94ec4ab9 ffff8009
> wb 3 stat/addr/data: 0045 94ec4ab9 ffff8009
> push data: 000044a4 00000001 001ad87a 00000001
> Stack from 0093bcd8:
> 00001000 00002000 00930800 94ec4ab9 0003c568 00930c90 001bceae
> 00930800
> 00930c90 94ec4ab9 00001000 00000000 00000009 00930c90 00032204
> 0003102c
> 00000002 00930800 00930800 008c8bc0 001bd4f2 001bcf26 00930800
> 00930c90
> 00000000 00002000 00000058 00000000 00930c00 001bd59e 00930800
> 00930c90
> 00000000 00000001 00000002 00000001 00032204 00930c00 00930800
> 008c8bc0
> 001b9f24 00930800 00000001 00000002 00000001 0003194a 0091f680
> 0033b614
> Call Trace: [<00001000>] kernel_pg_dir+0x0/0x1000
> [<00002000>] _start+0x0/0x8
> [<0003c568>] __do_adjtimex+0xf0/0x5bc
> [<001bceae>] ide_pio_bytes+0xd2/0xee
> [<00001000>] kernel_pg_dir+0x0/0x1000
> [<00032204>] __free_irq+0x106/0x1d0
> [<0003102c>] printk+0x0/0x18
> [<001bd4f2>] task_pio_intr+0x0/0x1be
> [<001bcf26>] ide_pio_datablock+0x5c/0x6a
> [<00002000>] _start+0x0/0x8
> [<001bd59e>] task_pio_intr+0xac/0x1be
> [<00032204>] __free_irq+0x106/0x1d0
> [<001b9f24>] ide_intr+0x166/0x1be
> [<0003194a>] __irq_wake_thread+0x0/0x40
> [<00012094>] warn_slowpath_fmt+0x0/0x36
> [<000319c8>] __handle_irq_event_percpu+0x3e/0xc8
> [<00031a6e>] handle_irq_event_percpu+0x1c/0x52
> [<0018a1e8>] sbitmap_any_bit_set+0x0/0x3c
> [<00031ac2>] handle_irq_event+0x1e/0x30
> [<00033f00>] handle_simple_irq+0x54/0x58
> [<00031428>] generic_handle_irq+0x18/0x22
> [<00002c00>] do_IRQ+0x20/0x32
> [<00002b10>] auto_irqhandler_fixup+0x4/0xc
> [<0016e532>] blk_mq_dequeue_from_ctx+0x0/0x1aa
> [<0016e798>] blk_mq_dispatch_rq_list+0x0/0x380
> [<0018a1e8>] sbitmap_any_bit_set+0x0/0x3c
> [<0001439a>] irq_exit+0x36/0x44
> [<00002c06>] do_IRQ+0x26/0x32
> [<00002b10>] auto_irqhandler_fixup+0x4/0xc
> [<0016e532>] blk_mq_dequeue_from_ctx+0x0/0x1aa
> [<0001e52a>] move_linked_works+0x0/0x5a
> [<00020080>] process_one_work+0x0/0x24c
> [<001721b6>] blk_mq_sched_dispatch_requests+0xcc/0xf4
> [<0016d9dc>] __blk_mq_run_hw_queue+0x92/0xa8
> [<000201fa>] process_one_work+0x17a/0x24c
> [<0027de66>] schedule_timeout_interruptible+0x0/0xa
> [<000202cc>] process_scheduled_works+0x0/0x2e
> [<0001e698>] set_pf_worker+0x0/0x36
> [<00020e6a>] worker_thread+0x27a/0x372
> [<0002c738>] __init_waitqueue_head+0x0/0xc
> [<00020bf0>] worker_thread+0x0/0x372
> [<00012e80>] do_exit+0x0/0x71c
> [<0002d09c>] complete+0x0/0x34
> [<00023f14>] kthread+0xd2/0xdc
> [<0007be64>] kfree+0x0/0x5a
> [<00023e42>] kthread+0x0/0xdc
> [<00002990>] ret_from_kernel_thread+0xc/0x14
> Code: 51c8 fffc 2408 4a83 6728 5383 2042 30d3 <30d3> 30d3 30d3 30d3
> 30d3 30d3 30d3 30d3 30d3 30d3 30d3 30d3 30d3 30d3 30d3 51cb
> Disabling lock debugging due to kernel taint
> Kernel panic - not syncing: Aiee, killing interrupt handler!
> ---[ end Kernel panic - not syncing: Aiee, killing interrupt handler! ]---
>
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 --
> [email protected]
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like
> that.
> -- Linus Torvalds
--
Sincerely yours,
Mike.