SweetLow Posted 16 hours ago Posted 16 hours ago 8 hours ago, sk9392 said: Please let me know if there's any other info you need. No. As I expected it IS MTRR problem: this in 4GiB and 12GiB: 00000200 0000000000000006 0000000F00000800 4G @ 0 / WB 00000202 00000000C0000000 0000000FC0000800 1G @ 3G / UC prevents working this: 00000204 0000000010000001 0000000FF0000800 256M @ 256M / WC 0000020A 00000000E0000001 0000000FF0000800 256M @ 3G 512M / WC as I said above it can be corrected, but in this case not so simple as running some tools in automatical mode. And i saw the SECOND problem too: this BIOS does NOT program MTRR to cache memory above 4GiB. This is unrelated to Windows 9x (if you do not use some 64-bit RAM drive like RAMDSK64/RAMDRV4M, of course), but definitely touch any OS using the 64-bit RAM in PAE mode. Are your interested enough to try to correct? 1
sk9392 Posted 15 hours ago Author Posted 15 hours ago 32 minutes ago, SweetLow said: No. As I expected it IS MTRR problem: this in 4GiB and 12GiB: 00000200 0000000000000006 0000000F00000800 4G @ 0 / WB 00000202 00000000C0000000 0000000FC0000800 1G @ 3G / UC prevents working this: 00000204 0000000010000001 0000000FF0000800 256M @ 256M / WC 0000020A 00000000E0000001 0000000FF0000800 256M @ 3G 512M / WC as I said above it can be corrected, but in this case not so simple as running some tools in automatical mode. And i saw the SECOND problem too: this BIOS does NOT program MTRR to cache memory above 4GiB. This is unrelated to Windows 9x (if you do not use some 64-bit RAM drive like RAMDSK64/RAMDRV4M, of course), but definitely touch any OS using the 64-bit RAM in PAE mode. Are your interested enough to try to correct? Absolutely interested in trying to correct it. Just let me know what to do. One thing though - I don't have your level of technical knowledge on this, so you'll have to phrase your instructions so that a layperson like me can understand.
SweetLow Posted 15 hours ago Posted 15 hours ago 18 minutes ago, sk9392 said: Just let me know what to do. Ok. 1. Select one config (4 or 12 GiB) to continue (and don't change it till the end). 2. Show me results of MTRR_VAR.EXE and EXTINFO.EXE /L (from BURNMEM package) now under DOS, better in Safe Mode Command Prompt.
sk9392 Posted 14 hours ago Author Posted 14 hours ago 1 hour ago, SweetLow said: Ok. 1. Select one config (4 or 12 GiB) to continue (and don't change it till the end). 2. Show me results of MTRR_VAR.EXE and EXTINFO.EXE /L (from BURNMEM package) now under DOS, better in Safe Mode Command Prompt. So with the triple 4 gb sticks, a weird effect I was seeing - the BIOS POST screen itself would report either 4 gb RAM (even with three 4 gb sticks) or 8 gb RAM - depending on which order I put those sticks in the slots even though the sticks are same brand and same model. This was frustrating me so I changed the sticks. Now it is - Slot A - one 4 gb 1333 RAM, slots B and C - 4 gb 1600 RAM. The two 1600 4 gb sticks are the same model, but obviously different from the 1333 4 gb stick in slot A. With this config the BIOS correctly reports 12 GB memory during POST. Here are the outputs you requested: MTRR_VAR output MTRRcap Register: 000000FE 0000000000000D0A Variable MTRR Count: 10 Fixed MTRR Supported: TRUE Write-combining (WC) Memory Type Supported: TRUE SMM Memory Range Registers (SMRR) Supported: TRUE MTRRdefType Register: 000002FF 0000000000000C00 Default Cache Type: 00h Uncacheable MTRR Enabled: TRUE Fixed MTRR Enabled: TRUE Reported Processor Physical Address Size (bits): 36 Variable MTRRs - Base, Mask and Decription: 00000200 0000000000000006 0000000F00000800 4G @ 0 / WB 00000202 00000000C0000000 0000000FC0000800 1G @ 3G / UC 00000204 0000000100000006 0000000F00000800 4G @ 4G / WB 00000206 0000000200000006 0000000E00000800 8G @ 8G / WB 00000208 0000000300000006 0000000FC0000800 1G @ 12G / WB 0000020A 0000000000000000 0000000000000000 Not used 0000020C 0000000000000000 0000000000000000 Not used 0000020E 0000000000000000 0000000000000000 Not used 00000210 0000000000000000 0000000000000000 Not used 00000212 0000000000000000 0000000000000000 Not used EXTINFO.EXE /L output Conventional Memory: Int 12h Memory below 1M: 636 KB (00000000 - 0009F000 : 0009F000), 636K Extended Memory: Int 15h, AH=88h Memory above 1M: 0 KB when OS booting: 65472 KB (00100000 - 040F0000 : 03FF0000), 63M 960K Int 15h, AX=E801h Free between 1M and 16M: 0 KB Free above 16M: 0 KB Configured between 1M and 16M: 15360 KB (00100000 - 01000000 : 00F00000), 15M Configured above 16M: 3128192 KB (01000000 - BFEE0000 : BEEE0000), 2G 1006M 896K Int 15h, EAX=0000E820h 0000000000000000 - 000000000009F800 : 000000000009F800 1 (Available), 638K 00000000000F0000 - 0000000000100000 : 0000000000010000 2 (Reserved), 64K 00000000FEC00000 - 0000000100000000 : 0000000001400000 2 (Reserved), 20M 00000000F0000000 - 00000000F4000000 : 0000000004000000 2 (Reserved), 64M 000000000009F800 - 00000000000A0000 : 0000000000000800 2 (Reserved), 2K 00000000BFEF0000 - 00000000BFF00000 : 0000000000010000 2 (Reserved), 64K 0000000000100000 - 00000000BFEE0000 : 00000000BFDE0000 1 (Available), 2G 1021M 896K 00000000BFEE1000 - 00000000BFEF0000 : 000000000000F000 3 (ACPI Reclaim), 60K 00000000BFEE0000 - 00000000BFEE1000 : 0000000000001000 4 (ACPI NVS), 4K 0000000100000000 - 0000000340000000 : 0000000240000000 1 (Available), 9G Available: Bytes KiB MiB GiB TiB Below 4GiB: 3219650560 3144190 3070.5 3.0 0.0 Above 4GiB: 9663676416 9437184 9216.0 9.0 0.0 Total: 12883326976 12581374 12286.5 12.0 0.0
SweetLow Posted 10 hours ago Posted 10 hours ago 1. Run this .BAT file before Windows start: @echo off ::MTRR 0 - 256M UC @ F0000000 msr_set.exe 201 0000000F F0000800 msr_set.exe 200 00000000 F0000000 ::MTRR 2 - 256M WC @ E0000000 msr_set.exe 205 00000000 00000000 msr_set.exe 204 00000000 E0000001 msr_set.exe 205 0000000F F0000800 ::MTRR 1 - 512M UC @ C0000000 msr_set.exe 203 0000000F E0000800 msr_set.exe 202 00000000 C0000000 ::set Default Cache Type to 06h WB msr_set.exe /W 2FF 00000000 00000C06 ::MTRR 3 - Unused msr_set.exe 207 00000000 00000000 msr_set.exe 206 00000000 00000000 ::MTRR 4 - Unused msr_set.exe 209 00000000 00000000 msr_set.exe 208 00000000 00000000 then run Windows and if nothing bad will happen show me the output of MTRR_VAR under Windows 2. The default driver behaviour under Windows 9x so disastrous that it overwrites all WB registers from BIOS - so no, under 64-bit OSes all will work fine, BIOS works correctly here. 3. > 00000000BFEF0000 - 00000000BFF00000 : 0000000000010000 2 (Reserved), 64K And just for completeness - you BIOS has the bug described as Problem 2 here: https://msfn.org/board/topic/186768-bug-fix-vmmvxd-on-handling-4gib-addresses-and-description-of-problems-with-resource-manager-on-newer-bioses/ 1
sk9392 Posted 10 hours ago Author Posted 10 hours ago 17 minutes ago, SweetLow said: 1. Run this .BAT file before Windows start: @echo off ::MTRR 0 - 256M UC @ F0000000 msr_set.exe 201 0000000F F0000800 msr_set.exe 200 00000000 F0000000 ::MTRR 2 - 256M WC @ E0000000 msr_set.exe 205 00000000 00000000 msr_set.exe 204 00000000 E0000001 msr_set.exe 205 0000000F F0000800 ::MTRR 1 - 512M UC @ C0000000 msr_set.exe 203 0000000F E0000800 msr_set.exe 202 00000000 C0000000 ::set Default Cache Type to 06h WB msr_set.exe /W 2FF 00000000 00000C06 ::MTRR 3 - Unused msr_set.exe 207 00000000 00000000 msr_set.exe 206 00000000 00000000 ::MTRR 4 - Unused msr_set.exe 209 00000000 00000000 msr_set.exe 208 00000000 00000000 then run Windows and if nothing bad will happen show me the output of MTRR_VAR under Windows 2. The default driver behaviour under Windows 9x so disastrous that it overwrites all WB registers from BIOS - so no, under 64-bit OSes all will work fine, BIOS works correctly here. 3. > 00000000BFEF0000 - 00000000BFF00000 : 0000000000010000 2 (Reserved), 64K And just for completeness - you BIOS has the bug described as Problem 2 here: https://msfn.org/board/topic/186768-bug-fix-vmmvxd-on-handling-4gib-addresses-and-description-of-problems-with-resource-manager-on-newer-bioses/ Thanks. I have a few clarifications: regarding point 1, do you mean I should press F8 -> start in command line only mode -> run the .bat above -> and then type "win" and generate output for MTRR_VAR? And regarding your point 3, I saw the linked thread. For now I won't install the vmm4gfix patch. For now I will just share the MTRR_VAR output with you using the procedure I said above. Hope that is fine
SweetLow Posted 9 hours ago Posted 9 hours ago 24 minutes ago, sk9392 said: press F8 -> start in command line only mode -> run the .bat above -> and then type "win" and generate output for MTRR_VAR? Yes, this will work and is good for test. But for constant using call of this .bat file could be put to autoexec.bat 26 minutes ago, sk9392 said: I will just share the MTRR_VAR output with you using the procedure I said above True. But the Problem 2 unrelated to vmm4gfix itself in any case.
sk9392 Posted 9 hours ago Author Posted 9 hours ago 30 minutes ago, SweetLow said: Yes, this will work and is good for test. But for constant using call of this .bat file could be put to autoexec.bat True. But the Problem 2 unrelated to vmm4gfix itself in any case. Sorry for the delay. I pressed F8 -> command prompt only. Then navigated to msr/DOS_RM, pasted the .bat there. Then I executed the .bat file. Typed "win" and windows started normally. Then I ran msr/Win9x/MTRR_VAR and here is the output: MTRRcap Register: 000000FE 0000000000000D0A Variable MTRR Count: 10 Fixed MTRR Supported: TRUE Write-combining (WC) Memory Type Supported: TRUE SMM Memory Range Registers (SMRR) Supported: TRUE MTRRdefType Register: 000002FF 0000000000000C06 Default Cache Type: 06h Writeback - !!! Warning MTRR Enabled: TRUE Fixed MTRR Enabled: TRUE Reported Processor Physical Address Size (bits): 36 Variable MTRRs - Base, Mask and Decription: 00000200 00000000F0000000 0000000FF0000800 256M @ 3G 768M / UC 00000202 00000000C0000000 0000000FE0000800 512M @ 3G / UC 00000204 00000000E0000001 0000000FF0000800 256M @ 3G 512M / WC 00000206 0000000010000001 0000000FF0000800 256M @ 256M / WC 00000208 0000000000000000 0000000000000000 Not used 0000020A 0000000000000000 0000000000000000 Not used 0000020C 0000000000000000 0000000000000000 Not used 0000020E 0000000000000000 0000000000000000 Not used 00000210 0000000000000000 0000000000000000 Not used 00000212 0000000000000000 0000000000000000 Not used
sk9392 Posted 8 hours ago Author Posted 8 hours ago @SweetLow Dude you're a wizard! After running that BAT file the game performance is back to same levels as it was with 2 Gb RAM. I feel stupid for just giving up and abandoning this thread way back. I should have followed up with you. I want to know a few things if it's okay with you: 1. Any further steps you think I should take, apart from adding the .BAT code to autoexec? 2. Suppose I add 3 more RAM sticks, taking up the total RAM to 24 gb (since I want to dual boot this along with Win10). In this new 24 Gb setup, would the .BAT code remain the same? 3. Is there any resource from where I can learn exactly how all this memory addressing, MTRR, code in .bat file works? I'm genuinely curious to get up to same level of knowledge, if feasible
SweetLow Posted 3 hours ago Posted 3 hours ago 4 hours ago, sk9392 said: Suppose I add 3 more RAM sticks, taking up the total RAM to 24 gb (since I want to dual boot this along with Win10). In this new 24 Gb setup, would the .BAT code remain the same? You can add ::MTRR 5 - Unused msr_set.exe 20B 00000000 00000000 msr_set.exe 20A 00000000 00000000 It will work without this but for clean result. 4 hours ago, sk9392 said: Is there any resource from where I can learn exactly how all this memory addressing, MTRR, code in .bat file works? I'm genuinely curious to get up to same level of knowledge, if feasible Yes, of course. AMD64 Architecture Programmer's Manual. MTRR (Memory Type Range Registers) description particulary. 4 hours ago, sk9392 said: I feel stupid for just giving up and abandoning this thread way back. I should have followed up with you. You should just be a jentleman and don't stop conversation if YOU asked for. 4 hours ago, sk9392 said: 1. Any further steps you think I should take Rename this thread to reflect the REAL problem you have, give other people chance to solve the same problems.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now