On Sat, May 11, 2019 at 08:39:12AM +1200, Michael Schmitz wrote: > Hi Mike, > > thanks for addressing this longstanding issue! > > Am 08.05.2019 um 22:09 schrieb Mike Rapoport: > >Hi, > > > >This is the first attempt to 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. > > I tested this using ARAnyM and it works both with kernel loaded to ST-RAM > (low address chunk) and FastRAM/TT-RAM (high address chunk). > > I do wonder though - is the DMA memory pool reserved in > atari_stram_map_pages() (which was left unmapped previously if the kernel > was loaded to FastRAM, due to constraints of the discontigmem memory model) > considered already allocated now with sparsemem, and won't be used in > 'normal'memory allocations?
The switch to sparse does not change this part. If the kernel is loaded in ST-RAM, the code around sparse_init() makes sure that the memory map is allocated from high physical addresses and then atari/stram.c is able to reserve the frame buffer memory. If the kernel is loaded to FastRAM, the ST-RAM remains unmapped as with discontigmem and the atari/stram.c maps it as IOMEM. I can't say I really understand the reason for inability to use ST-RAM as normal memory if the kernel was loaded into the FastRAM, maybe with sprase it would be easier to fix it. > Haven't seen any evidence to the contrary, but I've not put the system under > any kind of memory pressure. > > With these caveats: > > Tested-By: Michael Schmitz <[email protected]> Thanks! > Cheers, > > Michael > > >The section size of 16M was chosen pretty much arbitrarily as I couldn't > >find specs for systems with e.g. Zorro memory extensions. > > > >Mike Rapoport (3): > > m68k/mm: make node data and node setup depend on CONFIG_DISCONTIGMEM > > m68k/mm: enable use of generic memory_model.h for !DISCONTIGMEM > > m68k/mm: switch from DISCONTIGMEM to SPARSEMEM > > > > arch/m68k/Kconfig.cpu | 12 +++++-- > > arch/m68k/include/asm/page.h | 2 ++ > > arch/m68k/include/asm/page_mm.h | 6 +++- > > arch/m68k/include/asm/sparsemem.h | 8 +++++ > > arch/m68k/include/asm/virtconvert.h | 2 +- > > arch/m68k/mm/init.c | 8 ++--- > > arch/m68k/mm/motorola.c | 64 > > ++++++++++++++++++++++++++++++------- > > 7 files changed, 83 insertions(+), 19 deletions(-) > > create mode 100644 arch/m68k/include/asm/sparsemem.h > > > -- Sincerely yours, Mike.
