Hi, On Tuesday 1. January 2008, Michael Schmitz wrote:
I'm getting a bit confused - the good old mach_max_dma_address variable does not seem to get used in the recent kernels anymore at all. Could a mm expert please unravel this mystery?
It suffered from bit rot, as atari was the only real user. With the old virtual mapping it was also a bit bogus, as nothing guaranteed the order of how the memory chunks were mapped. With the new mapping it should be easy to add back. OTOH I would prefer the alternative approach by reserving a bit of ST-RAM.
for (i = 0; i < m68k_num_memory; i++) { - zones_size[ZONE_DMA] = m68k_memory[i].size >> PAGE_SHIFT; + /* MSch Hack */ + if ( m68k_memory[i].addr < mach_max_dma_addr + && (m68k_memory[i].addr+m68k_memory[i].size) <= mach_max_dma_addr ) { + zones_size[ZONE_DMA] = m68k_memory[i].size >> PAGE_SHIFT; + zones_size[ZONE_NORMAL] = 0; + } else { + zones_size[ZONE_DMA] = 0; + zones_size[ZONE_NORMAL] = m68k_memory[i].size >> PAGE_SHIFT; + } free_area_init_node(i, pg_data_map + i, zones_size, m68k_memory[i].addr >> PAGE_SHIFT, NULL); }
How big is the ST-RAM area? If it's 16MB this may not work as expected, as mach_max_dma_address is set to 0xffffff (0x1000000 <= 0xffffff). bye, Roman - To unsubscribe from this list: send the line "unsubscribe linux-m68k" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html