It thinks that the problem might be that the current code maps the framebuffer to ISA address 0x00400000 (4MB). However, ISA graphics cards typically decode their apertures much higher in memory space—commonly at '0x00C00000' (12MB) or '0x00E00000' (14MB). The ATI Mach64 BIOS documentation confirms the aperture location is software-configured during card initialization and stored in EEPROM, not hardwired.
Why It "Sometimes Works":
With the aperture mapped to the wrong ISA address:
- Most framebuffer writes hit unmapped space → no effect
- Occasional address decode quirks or ISA bus wraparound → pixels appear (low success rate)
- Inconsistent initialization → explains the unreliability and crashes
If the mapping was completely wrong, it would **never** display anything—the fact that it occasionally shows a desktop proves the TT driver itself is correct, just accessing the wrong physical location.
It's suggesting the following fixes:
The Corrected Mappings
Version 1: Try ISA aperture at 12MB:
Code: Select all
rv->mmu_Redirect(0xFEC00000UL, 0x82C00000UL, 0x00100000UL); /* ISA 0x00C00000 */
rv->mmu_Redirect(0xFED00000UL, 0x82D00000UL, 0x00100000UL); /* ISA 0x00D00000 */
rv->mmu_Redirect(0xFEE00000UL, 0x82E00000UL, 0x00100000UL); /* ISA 0x00E00000 */
rv->mmu_Redirect(0xFEF00000UL, 0x82F00000UL, 0x00100000UL); /* ISA 0x00F00000 */Code: Select all
rv->mmu_Redirect(0xFEC00000UL, 0x82E00000UL, 0x00100000UL); /* ISA 0x00E00000 */
rv->mmu_Redirect(0xFED00000UL, 0x82F00000UL, 0x00100000UL); /* ISA 0x00F00000 */
rv->mmu_Redirect(0xFEE00000UL, 0x83000000UL, 0x00100000UL); /* ISA 0x01000000 - might wrap */
rv->mmu_Redirect(0xFEF00000UL, 0x83100000UL, 0x00100000UL)