On 26.2.2013 22:10, Ján Veselý wrote: > -/* > -* Create 1:1 virtual-physical mapping in kernel space > -* (upper 2 GB), physical addresses start from 0. > -*/ > -/* BeagleBoard-xM (DM37x) memory starts at 2GB border, > -* thus mapping only lower 2GB is not not enough. > -* Map entire AS 1:1 instead and hope it works. */ > -for (page = split_page; page < PTL0_ENTRIES; page++) > -#ifndef MACHINE_beagleboardxm > -init_ptl0_section(&boot_pt[page], page - split_page); > -#else > -init_ptl0_section(&boot_pt[page], page); > -#endif > > I agree that the loop is redundant, given the bug that sets split_page > to PTL0_ENTRIES. > The bug was introduced long time ago with initial bbxm support. The > problem is that > not all devices have ram memory accessible in upper 2GB. It looks like a > pattern for am(dm) chips, > integrator cp is ok too, because there is a RAM mirror at the same > location in upper and lower 2GB. > However, gta02 should not work at all. If someone (jakub?) can confirm > that gta02 worked ok after the introduction of this bug, > and that the current problems are unrelated, we can assume there is an > (undocumented) mirror on gta02 as well. > I don't know what the best solution would be at the moment but at least > a comment/TODO would make sure that the problem not hidden.
Well, I think there were several tests on GTA02 with both the bbxm and bbone branch bits and besides the recent userspace task crashes, everything seems to be working fine. I have done some research on this and according to [1], it appears to me that the gta02 CPU (S3C2442B) may indeed have only 2G physical address space and completely ignore the highest bit in the physical address. [1] says that its memory controller can address only 1G of memory ([2] supports this idea), IO registers sit above 1G, but always below 2G. I would expect, however, that accessing physical addresses beyond the end of the supported address space would result in some form of punishment. We still need to fix the comment at the beginning of init_boot_pt() which confusingly says it is going to do the identity mapping for only the lower 2G while in fact it identity maps the entire 4G. Jakub [1] http://www.datasheetarchive.com/indexer.php?file=DSASW00344509.pdf&dir=Datasheets-SW18&keywords=S3C2442B&database=user-highscore# [2] http://wiki.openmoko.org/wiki/Neo_FreeRunner_Memory_Mapping _______________________________________________ HelenOS-devel mailing list [email protected] http://lists.modry.cz/cgi-bin/listinfo/helenos-devel
