shoggoth wrote: Fri Jan 31, 2014 12:49 pm
mikro wrote:It doesn't require anything else. It just "limits" the amount of usable memory to 1 GB, then it perhaps crashes on an PMMU error because there are no PMMU entries for addresses between 0x40000000 and 0x7FFFFFFF (and these are no longer translated as copy back, they are illegal from now). So the correct solution would be of course to map the SV-RAM area (0xA0000000 - 0xA7FFFFFF) in the PMMU tree but it's too much work for too little (zero) effect. It's software, can be changed later ;)
Awesome. I'll make this optional for now in case it clashes with some other hardware (CTPCI?).
As I occasionally ask myself how exactly was this supposed to work, I'll make a public note here. :)
Before my "patch", the PMMU was set in the following way:
0x00000000 - 0x20EFFFFF: translated using the PMMU (527 MiB: 14 MiB ST RAM, 512 MiB TT RAM, I/O)
0x40000000 - 0x7FFFFFFF: marked as copyback (1 GiB)
0x80000000 - 0xFFFFFFFF: marked as cache-inhibited, precise (2 GiB: hardware regs)
After my "patch", the PMMU is set in the following way:
0x00000000 - 0x20EFFFFF: translated using the PMMU (527 MiB: 14 MB ST RAM, 512 MB TT RAM, I/O)
0x80000000 - 0xFFFFFFFF: marked as cache-inhibited, precise (2 GiB: hardware regs)
0xA0000000 - 0xA7FFFFFF: marked as cache-inhibited, imprecise (128 MiB: DDR2 SDRAM; overrides the previous one)
My statement from 2014 wasn't very precisely formulated: the change does not limit the amount of usable memory, just replaces the 1 GiB block with another (128 MiB) one. You might ask: doesn't this cause trouble for some (future?) hardware? And the answer is yes and no. ;)
If we are about to believe the
CTPCI memory map, 0x40000000 should be occupied by 512 MiB of PCI address space and 512 MiB of reserved space. 0x40000000 can't be cached (otherwise the hardware couldn't get fresh data to display immediately) and there is even the "No cache" note next to it. So most likely 0x40000000 is marked the same way as the SuperVidel block (which is wrongly positioned and even marked in that map, btw), i.e. "cache-inhibited, imprecise", I'm assuming using the same registers as I'd used for SuperVidel (I'll try to verify this on a CTPCI machine).
So... when booting Falcon+CT60+CTPCI+SuperVidel (if it is even possible) with SV_XBIOS.PRG + SV.INF with "pmmu_boost = true", then yes, any write to the CTPCI address space will lead to a crash as there wouldn't be any PMMU entries to mark it as active (most likely as soon as AUTO folder executes SV_BIOS.PRG because CTPCI TOS would like to write some pixels).
However: as SuperVidel uses either the original Videl registers (not used in CTPCI) or its own patched NVDI output (CTPCI uses its own fVDI), clearly, it's insane have both at the same time because their VDIs would fight against each other. I can't remember whether you can disable video output in CTPCI and use just, say, USB or network cards. If this is the case then "pmmu_boost = false" has its place.
But let's be honest, how many people use CTPCI these days, let alone with SuperVidel. I may be the only one left with at least a theoretical option to do that. :) (and maybe I will try it, just for the sake of curiosity).
And as for new (CT60) hardware... yes, if something takes the free address space at 0x40000000 (or anywhere else) and would like to use the same PMMU register for its own setting, then it would conflict with "pmmu_boost = true".
But before that happens... make sure the option is enabled, my ScummVM port counts on it heavily! (otherwise you'd get
worse performance with SuperVidel than without!)