noname33 Posted July 25, 2023 Share Posted July 25, 2023 Hi, Sorry my English. It's true this is a old topic, but for my, never worked properly. With the help of some kexts I could middle-solve the problem, but never ended for work fine 100% stable. Well, now I have a few of free time, and I searched in the dsdt all the code related with the BRT6. And what a found, gives me a clear explanation to what happen here. There are two post related with this. One is here: https://osxlatitude.com/forums/topic/19433-latitude-e6420-dsdt-review/#comment-120052. The other is the code showed by Hervé about the brightness (here: And this is the code of mi Latitude E6420 Method (SMEE, 1, NotSerialized) { Store (Arg0, Local0) Store (GENS (0x11, 0x00, 0x00), Local0) If (LGreaterEqual (\_SB.OSID (), 0x20)) { If (And (Local0, 0x04)) { \EV13 (0x01, 0x00) } If (And (Local0, 0x02)) { \EV13 (0x02, 0x00) } } If (And (Local0, 0x08)) { Store (GENS (0x1D, 0x00, 0x00), Local0) \EV14 (Local0, 0x00) } } If we follow a bit the code, we will have this: Method (SMEE, 1, NotSerialized) { Store (Arg0, Local0) Store (GENS (0x11, Zero, Zero), Local0) If (And (Local0, 0x04)) { \_SB.PCI0.PEG0.VID.BRT6 (One, Zero) \_SB.PCI0.VID.BRT6 (One, Zero) } Else { If (And (Local0, 0x02)) { \_SB.PCI0.PEG0.VID.BRT6 (0x02, Zero) \_SB.PCI0.VID.BRT6 (0x02, Zero) } } If (And (Local0, 0x08)) { \_SB.PCI0.IGPU.IBL1 (GENS (0x1D, Zero, Zero), Zero) } } Then you can see this: Store (GENS (0x11, Zero, Zero), Local0) And GENS is the 'manager' of the SNVP, SNVG, SNWB, SNRB, SNVC, etc functions what we already know. (see the first link). And know come the spectacle. Method (GENS,3) { //here arg0 = 17, arg1=0, and arg2=0, then: Store (Arg1, Local0)//<-- well, Local0 is 0 now. if type of Arg1 is equal to number { //we enter here, because 0 is a number type Store (SMBI (Arg0, Arg1), Local0) Now, we go to see 'Store (SMBI (Arg0, Arg1), Local0)' to know which value takes Local0. Method (SMBI, 2, NotSerialized) { SNVC (Arg0) //<-- we already know snvc Add (SMIB, 0x04, Local0) OperationRegion (WWPR, SystemMemory, Local0, 0x04) //we already know this Region Field (WWPR, ByteAcc, Lock, Preserve) { SDW0, 32 } Store (Arg1, SDW0) ASMI () Return (SDW0) } Then: //1 SNVC (Arg0) => Method (SNVC, 1, NotSerialized) { OperationRegion (WWPR, SystemMemory, SMIB, 0x04) Field (WWPR, DWordAcc, Lock, Preserve) { SCDW, 32 } Store (Arg0, SCDW)//<-- here we store 00 00 00 11 (0x11 in Dword)in SMIB pos } //2 OperationRegion (WWPR, SystemMemory, Local0, 0x04) //we already know this Reg Field (WWPR, ByteAcc, Lock, Preserve) { SDW0, 32 } Store (Arg1, SDW0)//<-- here we store 00 00 00 00 in SMIB + 4 position //3 ASMI() => OperationRegion (SMIR, SystemIO, PSMI, 0x01) Field (SMIR, ByteAcc, Lock, Preserve) { SCMD, 8 } Store (0x04, SCMD)// here we store 0x04 always and nothing more //4, The surprise! Return (SDW0) //<-- we two steep before, did something like Store (Arg1, SDW0), and Arg1 was 0. //this means return 0x00000000 Well, now we know that inside of GENS ' Store (SMBI (Arg0, Arg1), Local0) ' assign 0 to that Local0 when GENS is called, and GENS always return its Local0 to the Local0 of SMME, and you can see at the start of this mess-up that SMME expects three valid values, 2, 4, or 8. What happen?, well, Local0 of SMME always is 0 since GENS always return 0, and in this case, the call for BRT6 never will be triggered. In conclusion, the brightness never will can work. I don't say could work good or bad, it's more simple still, never will can work. Link to comment Share on other sites More sharing options...
noname33 Posted July 25, 2023 Author Share Posted July 25, 2023 Well, then I think, so, I go to try remove the GENS and make the evaluation directly with Arg0 instead of Local0, but is not easy even do that. how you can see here in other post by Hervé again: That function called SMME is called once from SMIE, and SMIE start by: Store (GENS (0x10, 0x00, 0x00), Local0) //<--- we already learned this return 0 alway while arg0 is a number and arg1 is 0 And later make a evaluation If Else, of Local0, where it expect Local0 will take the value of 0x02, 0x08, 0x10, 0x40 or 0x80, but never 0x00, and then, no one of the clause in this function works. It enter, and exit, without doing any single thing more. Link to comment Share on other sites More sharing options...
Administrators Hervé Posted July 25, 2023 Administrators Share Posted July 25, 2023 The brightness keys ACPI patch I posted does not apply to the Sandy Bridge Latitude E6x20 as is. I tried it to no avail on my E6220, whether BIOS operating in legacy of UEFI mode. Instead, I called on a different patch I had found on the web that I adapted for my E6220. I posted the details in my E6220 Mojave guide; look it up. It's a simple ACPI renaming patch in the Clover config file + a patched SSDT-Q66 table. With Mojave, I completely moved away from a patched DSDT to a simple and basic set of a few patched SSDTs + associated ACPI patches in the bootloader's config file. It's very minimal and very efficient. In a nutshell, all you do is replace the original _Q66 event handling method: Method (_Q66, 0, NotSerialized) // _Qxx: EC Query { If (LNotEqual (ECRD, One)) { Return (Zero) } NEVT () Return (Zero) } by this revised code: Method (_Q66, 0, NotSerialized) // _Qxx: EC Query { If (LNotEqual (\ECRD, One)) { Return (Zero) } NEVT () \_SB.AMW0.WED0 (One) Mid (\_SB.AMW0._WED (0xD0), Zero, 0x06, Local2) If (LEqual (Local2, Buffer (0x06) { 0x02, 0x00, 0x10, 0x00, 0x50, 0x00 })) { Notify (\_SB.PCI0.LPCB.PS2K, 0x0365) } If (LEqual (Local2, Buffer (0x06) { 0x02, 0x00, 0x10, 0x00, 0x48, 0x00 })) { Notify (\_SB.PCI0.LPCB.PS2K, 0x0366) } Return (Zero) } making sure not to forget the ACPI renaming in your config file which is necessary to bypass the original _Q66 method of the (native) DSDT table and inject its replacement through SSDT: Find: 5F513636 (="_Q66") Replace: 5F583636 (="_X66") And that's it. Link to comment Share on other sites More sharing options...
noname33 Posted July 25, 2023 Author Share Posted July 25, 2023 For end the Story, I would swore that I remember get different result inside of BRT6 according to the order that I put LCD and PS2K notification. So in the other hand we can see a lot of event that never will execute via DSDT. Then I guess BRT6 is called from the BIOS directly like _SB.PCI0.VID.BRT6, and skip SMME and SMIE. Then probably this would be an aware bug for try to make difficult install other OS that Windows. I bought this laptop over 2012 and over 2017 the BIOS A24 was release, so I don't believe the people of Dell don't Know that all these functions don't works via AML ACPI. Link to comment Share on other sites More sharing options...
Administrators Hervé Posted July 25, 2023 Administrators Share Posted July 25, 2023 in 2023, it's kind of irrelevant... There are many PCs with bugged BIOS tables (DSDT and/or otherwise), Dell is not a unique actor in that respect. Yet, Dell laptops remain ideal platforms by far and large (especially Latitude laptops) when it comes to running OS X/macOS on them. Link to comment Share on other sites More sharing options...
noname33 Posted July 25, 2023 Author Share Posted July 25, 2023 Yes you are right I think, even I believe in 2013 already should be irrelevant for them. The principal reason why I believe that is because my eyes can see that code, so of course they knew what thy made, and of course I don't go to enter to evaluate their corporation motivates. We were who decided bought Dell, I don't go to blame anybody for my decision. Link to comment Share on other sites More sharing options...
noname33 Posted August 9, 2023 Author Share Posted August 9, 2023 I put your provided code in my DSDT, and nothing happened. It seem a good code, thank you. But it doesn't work to me, and at this moment, I hesitate seriously about that code gets work in any Dell. Well, the code seem to be good, at least I think so, but the issue is that the method _Q66 never is triggered!. This method's _Qxx, are called from the BIOS or embedded controller, and, I thought your code should work, fine or bad, but it should work in some way because it's under the unique _Q that exist ion this DSDT. Then, because it's doesn't work, I made a script, which add a debug store inside every thing, and I run it. The result was very very disappointed, but in the other hand this help me to understand better what happen here. This is a example of the debug code that I added almost in every line: Spoiler Method (ECM8, 1, NotSerialized) { Store("myACPIDebug In root.Scope.ECM8 (Method) [id:7736]", Debug) // add for debug ECWB (0x04, Arg0) Name (LBUF, Buffer (0x21) {}) Store (Zero, Local0) While (LLess (Local0, 0x20)) { If(LNotEqual(ZZZZ, One))// add for debug {// add for debug Store("myACPIDebug In root.Scope.ECM8.While [id:7741]", Debug)// add for debug Store(One, ZZZZ)// add for debug }// add for debug Store (ECRB (0x2A), Local1) Store (Local1, Index (LBUF, Local0)) If (LEqual (Local1, Zero)) { Store("myACPIDebug In root.Scope.ECM8.While.If [id:7745]", Debug)// add for debug Break } Increment (Local0) } If(LEqual(ZZZZ , One))// add for debug {// add for debug Store("myACPIDebug Out While [id:31]", Debug)// add for debug Store(Zero, ZZZZ)// add for debug }// add for debug Else// add for debug {// add for debug Store("myACPIDebug Avoid While [id:31]", Debug)// add for debug }// add for debug If (LNotEqual (Local1, Zero)) { Store("myACPIDebug In root.Scope.ECM8.If [id:7753]", Debug)// add for debug Store (Zero, Index (LBUF, Local0)) Increment (Local0) Store("myACPIDebug Out If [id:7753]", Debug)// add for debug } Increment (Local0) Name (OBUF, Buffer (Local0) {}) Store (LBUF, OBUF) Store("myACPIDebug Return Method.ECM8 [id:7736]", Debug)// add for debug Return (OBUF) } And this is the poor result I got: Spoiler 311779 In root._SB.PCI0._BBN (Method) [id:2195] 324245 Return from Method._BBN [id:2195] 336921 In root._SB.PCI0.^BN00 (Method) [id:2190] 349860 Return from Method.^BN00 [id:2190] 365498 _INI root.Scope [id:5572] 378128 _INI root._SB (Scope) [id:147] 575106 In root._SB.PCI0._INI (Method) [id:12711] 591916 In root.EV1 (Method) [id:12767] 608947 In root._SB.PCI0.IINI (Method) [id:5494] 626394 In root._SB.PCI0.IINI.If [id:5502] 643716 In root._SB.PCI0.IINI.If.Else [id:5508] 661361 In root._SB.PCI0.IINI.If.Else.Else [id:5514] 679450 In root._SB.PCI0.IINI.If.Else.Else.Else [id:5520] 697965 In root._SB.PCI0.IINI.If.Else.Else.Else.Else [id:5526] 715619 Out Else [id:5526] 732116 Out Else [id:5520] 748562 Out Else [id:5514] 764905 Out Else [id:5508] 781231 Out If [id:5502] 797807 Return from Method.IINI [id:5494] 815340 In root._SB.PCI0.LPCB.EINI (Method) [id:8120] 833457 In root._SB.PCI0.LPCB.EINI.If [id:8122] 851582 In root.ECG5 (Method) [id:7685] 869618 Return from Method.ECG5 [id:7685] 887876 In root.ECRB (Method) [id:7650] 906424 Return from Method.ECRB [id:7650] 925618 In root._SB.PCI0.LPCB.EC.ECR1 (Method) [id:7123] 945590 In root._SB.PCI0.LPCB.EC.ECR1.If [id:7125] 964910 Return If [id:7125] 984249 In root.EISC (Method) [id:7614] 004298 In root.GENS (Method) [id:10100] 024196 In root.GENS.Else [id:10108] 043963 In root.GENS.Else.If [id:10110] 063840 In root.SMBF (Method) [id:10135] 083749 In root.SNVC (Method) [id:10039] 103211 Out Method.SNVC [id:10039] 121894 Avoid While [id:10150] 140613 In root.SMBF.While [id:10156] 159915 In root.SNVP (Method) [id:10075] 179141 Out Method.SNVP [id:10075] 197837 Out While [id:10156] 216964 In root.ASMI (Method) [id:10179] 236544 Out Method.ASMI [id:10179] 255437 Avoid While [id:10164] Then I traced that log in the dsdt, and this is the result. ( You can follow the steps, they are ordered by //number_step, there are only 32 ) Spoiler Device (PCI0) { Method (^BN00, 0, NotSerialized) // 1 { Return (Zero) } Method (_BBN, 0, NotSerialized) // 0 { Return (BN00 ()) } Scope (\) { Method(_INI,0) // 2 Scope (_SB) { Method(_INI,0){ // 3 SSDT-cpu // 4 Scope (_SB.PCI0) { Method (_INI, 0, NotSerialized) // 5 { EV1 (0x02, Zero) // 6 Method (EV1, 2, NotSerialized) // 7 { \_SB.PCI0.IINI (Arg0, Arg1) // (0x02, Zero) // 8 \_SB.PCI0.LPCB.EINI (Arg0, Arg1) // 11 Method (IINI, 2, NotSerialized) // 9 { If (LNotEqual (Arg0, 0x02)){Return (Zero)} //Arg0 = 0x02 Store (0x07D0, OSYS) // 10 Method (EINI, 2, NotSerialized) // 12 { If (LEqual (Arg0, 0x02)) //Arg0 = 0x02 { Store (ECG5 (), APRE) // 13 And (APRE, 0x2B, APRE) Method (ECG5, 0, NotSerialized) // 14 { Return (ECRB (0x06)) // 15 Method (ECRB, 1, NotSerialized) // 16 { Return (\_SB.PCI0.LPCB.EC.ECR1 (Arg0)) //Arg0 = 0x06// 17 Method (ECR1, 1, NotSerialized) // 18 { If (LEqual (ECRD, Zero)) // Name (ECRD, 0x00), enter here { Return (EISC (0x80, Arg0, Zero)) // 19 Method (EISC, 3, NotSerialized) // 20 { Acquire (ECSX, 0xFFFF)//acquire 1 Name (ECIB, Buffer (0x04) {}) CreateByteField (ECIB, Zero, ECIC) CreateByteField (ECIB, One, ECP1) CreateByteField (ECIB, 0x02, ECP2) Store (Arg0, ECIC) //<— here ECIB[0]=0x80 Store (Arg1, ECP1)//<— here ECIB[1]=0x06 Store (Arg2, ECP2)//<— here ECIB[2]=0x00 Store (GENS (0x08, ECIB, SizeOf (ECIB)), ECIB) // 21 //<-- Never return here Method (GENS, 3, NotSerialized) // 22 { Acquire (SMIX, 0xFFFF)//acquire 2 Store (Arg1, Local0) If (LEqual (ObjectType (Arg1), 0x03)) //<— obj type 3. Enter here { Store (SMBF (Arg0, Arg1, Arg2), Local0) // 23 Method (SMBF, 3, NotSerialized) //24 { SNVC (Arg0) // 25 Divide (Arg2, 0x04, Local0, Local1)//Arg2=4, then l0=0,l1=1 Store (Zero, Local1) While (LLess (Local1, Local0))//not { SNWB (Arg1, Local1) Increment (Local1) } While (LLess (Local1, Arg2))//enter here { SNVP (Arg1, Local1) // 27 Add (Local1, 0x04, Local1) } ASMI () // 29 Store (Zero, Local1) While (LLess (Local1, Local0)) { Store (SNRB (Arg1, Local1), Arg1) Increment (Local1) } // 31. Here is the last debug store written, here it's alive still <------ While (LLess (Local1, Arg2)) { // here there is a debug store which is not written // any case here 'LLess (Local1, Arg2)' is false // any case it doesn't should enter here Store (SNVG (Arg1, Local1), Arg1) Add (Local1, 0x04, Local1) } // 32. END HERE, here doesn't write anything more. <--------- Here is dead Method (SNVC, 1, NotSerialized) // 26 { OperationRegion (WWPR, SystemMemory, SMIB, 0x04) Field (WWPR, DWordAcc, Lock, Preserve){SCDW, 32} Store (Arg0, SCDW) // store 00 00 00 08 In smib } Method (SNVP, 2, NotSerialized) // 28 { OperationRegion (WWPR, SystemMemory, Add (Add (SMIB, Arg1), 0x04), 0x04) Field (WWPR, ByteAcc, Lock, Preserve){SDW0, 32} CreateDWordField (Arg0, Arg1, SVAL) Store (SVAL, SDW0) } Method (ASMI, 0, NotSerialized) // 30 { OperationRegion (SMIR, SystemIO, PSMI, One) Field (SMIR, ByteAcc, Lock, Preserve){SCMD, 8} Store (0x04, SCMD) } And that is all. It's like the aliens do something. It stooping abruptly without a clear reason and disappears in the middle of code execution. No longer will back to work anything of the ACPI. No longer a line of ACPI debug is written. The ACPI dead there, and you can connect or disconnect what you want, usb, display, etc.. but the ACPI doesn't work anymore. In this point, I can see the ACPI code is used for the OS (not Windows) like a schedule of the hardware tree, but given the conditions, the OS do not used that ACPI code anymore. And the BIOS neither, simply the ACPI doesn't exist because doesn't work, and nobody use it. Before that, you don't back to get a debug line about the ACPI. Of course that include the _Q66 method, which never is called. I made some progress about the topic, by adding a ECDT table which achieve that the _Q66 works in the ACPI events, and now I'm rebuilding the .dsl for make it works, and also I had to change the method PCI0._INI for avoid it works beyond of OSYS=0x2710. Now I have a big load of ACPI methods that are loaded in the logs, and when the display turn off or on, and when I plug and play any usb, the logs show the ACPI works. This is very short log of the log that now I got from the ACPI when plug and USB (The _Q66 works activated by the BIOS): Spoiler 2023-08-09 05:44:40.797572+0200 localhost kernel[0]: (AppleACPIPlatform) "myACPIDebug In root._SB.PCI0.IGPU.GNOT.If [id:4589]" 2023-08-09 05:44:40.797612+0200 localhost kernel[0]: (AppleACPIPlatform) "myACPIDebug Return If [id:4589]" 2023-08-09 05:44:40.797686+0200 localhost kernel[0]: (AppleACPIPlatform) "myACPIDebug Out If [id:10319]" 2023-08-09 05:44:40.797731+0200 localhost kernel[0]: (AppleACPIPlatform) "myACPIDebug Out Method.NEVT [id:10228]" 2023-08-09 05:44:40.797783+0200 localhost kernel[0]: (AppleACPIPlatform) "myACPIDebug Return from Method._Q66 [id:9515]" 2023-08-09 05:46:58.864790+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 23:{ICWiredBrowser.m} (USB Device first match) 2023-08-09 05:46:58.866111+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 388:{ICWiredBrowser.m} (7 USB Descriptions Managed) 2023-08-09 05:46:58.868117+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 457:{ICDDMessageCenter.m} (+Add IOUSBHostDevice - 0x0/0x0/0x0 - 0x1d140000 - ICDeviceDescriptionSUQuery) 2023-08-09 05:46:58.868384+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 205:{ICResourceManager.m} (00000000-0000-0000-3534-443045313346|IOUSBHostDevice|(null)|SW=FALSE|) 2023-08-09 05:46:58.869830+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 457:{ICDDMessageCenter.m} (+Add IOUSBHostDevice - 0x0/0x0/0x0 - 0x1d140000 - ICDeviceDescriptionAdded) 2023-08-09 05:47:05.151705+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 37:{ICWiredBrowser.m} (USB Interface first match) 2023-08-09 05:47:05.152405+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 388:{ICWiredBrowser.m} (8 USB Descriptions Managed) 2023-08-09 05:47:05.153706+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 457:{ICDDMessageCenter.m} (+Add IOUSBHostDevice - 0x8/0x6/0x50 - 0x1d140000 - ICDeviceDescriptionSUQuery) 2023-08-09 05:47:05.153730+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 205:{ICResourceManager.m} (00000000-0000-0000-0000-0000058F6387|IOUSBHostDevice|(null)|SW=FALSE|) 2023-08-09 05:47:05.155862+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 457:{ICDDMessageCenter.m} (+Add IOUSBHostDevice - 0x8/0x6/0x50 - 0x1d140000 - ICDeviceDescriptionUndefined) 2023-08-09 05:47:11.356712+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 178:{ICDiskBrowser.m} (Disk Appeared) 2023-08-09 05:47:11.363424+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 178:{ICDiskBrowser.m} (Disk Appeared) 2023-08-09 05:47:11.877030+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 119:{ICDiskBrowser.m} (Disk Changed) 2023-08-09 05:47:11.877054+0200 localhost icdd[520]: (ICALogging) [com.apple.imagecapture:icdd] #ICDebug - 178:{ICDiskBrowser.m} (Disk Appeared) Well, now you know your Dell DSDT does't work anything, and it's readed by the OS like a 'boot component' for have some idea of the hardware system, but the ACPI Dell computer, are designed aware for it doesn't work, and probably after running, if you don't use windows and you use Linux, BSD, Mac , you don't have ACPI anymore, because Dell think you are Idiot and they know what is the better for you, and what OS can you use and what you can not use. Link to comment Share on other sites More sharing options...
noname33 Posted August 19, 2023 Author Share Posted August 19, 2023 Definitely I abandon Hackintosh. Well, I tried to fix it, but it is highly designed for not working out of the OEM OS. For example this a short list of the GNVS. The GNVS take values different according to the combination ACOS-OSYS. The worse case is given when you select OSYS=0x2710. If you write 2710 in the OSYS reg, the fields of the IGDM, GNVS, and others OperationRegion, will take at least 3 values before 'crash' and corrupt all the OperationsRegion fields. The next are 3 logs of the same boot with OSYS=0x2710. The first is the value of several fields of GNVS before make any other thing, the first thing that the dsdt do is take the fields value. The second logs, are the same, but the values are read just after running the OS. And the 3, is the same, but the values were read 5 min after run. (There is a lot of fields, so I omit a lot, but the changes are similar some other hundred of fields) This is before Write any thing (OSYS yet hasn't written, It's the default values): Spoiler OSYS: 0000000000003A29 SMIF: 000000000000000D PRM0: 0000000000000049 PRM1: 0000000000000066 SCIF: 00000000000000C7 PRM2: 000000000000001E PRM3: 000000000000004E LCKF: 00000000000000E5 PRM4: 00000000000000D1 PRM5: 00000000000000EB P80D: 00000000673D95BC LIDS: 00000000000000B3 PWRS: 00000000000000BD DBGS: 000000000000004F THOF: 0000000000000032 ACT1: 000000000000007B ACTT: 00000000000000CA PSVT: 0000000000000053 TC1V: 0000000000000091 TC2V: 0000000000000082 TSPV: 00000000000000A7 CRTT: 000000000000004C DTSE: 000000000000004A DTS1: 0000000000000072 DTS2: 00000000000000C5 DTSF: 000000000000009A REVN: 0000000000000014 APIC: 00000000000000DD TCNT: 00000000000000C5 PCP0: 0000000000000032 PCP1: 000000000000009C PPCM: 000000000000006C PPMF: 000000000F2FC441 Now, is just running the OS, OSYS is 2710 how you can see. Also all the values of GNVS have take changes: Spoiler OSYS: 0000000000002710 SMIF: 00000000000000C0 PRM0: 0000000000000032 PRM1: 00000000000000CC SCIF: 0000000000000048 PRM2: 0000000000000092 PRM3: 0000000000000068 LCKF: 0000000000000096 PRM4: 0000000000000001 PRM5: 0000000000000061 P80D: 0000000032CB9C14 LIDS: 0000000000000021 PWRS: 000000000000007C DBGS: 00000000000000CC THOF: 00000000000000E9 ACT1: 00000000000000EF ACTT: 00000000000000EB PSVT: 000000000000006B TC1V: 0000000000000090 TC2V: 00000000000000FF TSPV: 00000000000000A7 CRTT: 00000000000000BF DTSE: 00000000000000F0 DTS1: 000000000000005E DTS2: 00000000000000DC DTSF: 000000000000003E REVN: 0000000000000099 APIC: 000000000000001A TCNT: 0000000000000053 PCP0: 000000000000002E PCP1: 00000000000000C6 PPCM: 000000000000006C PPMF: 00000000E705F1D9 And this is over 5 min after running the OS. All fields are corrupt: Spoiler OSYS: 000000000000F0F0 SMIF: 00000000000000F0 PRM0: 00000000000000FF PRM1: 00000000000000F0 SCIF: 00000000000000F0 PRM2: 00000000000000F0 PRM3: 00000000000000FF LCKF: 00000000000000F0 PRM4: 00000000000000F0 PRM5: 00000000000000F0 P80D: 00000000F0F0F0FF LIDS: 00000000000000FF PWRS: 00000000000000F0 DBGS: 00000000000000F0 THOF: 00000000000000F0 ACT1: 00000000000000FF ACTT: 00000000000000F0 PSVT: 00000000000000F0 TC1V: 00000000000000F0 TC2V: 00000000000000FF TSPV: 00000000000000F0 CRTT: 00000000000000F0 DTSE: 00000000000000F0 DTS1: 00000000000000FF DTS2: 00000000000000F0 DTSF: 00000000000000F0 REVN: 00000000000000F0 APIC: 00000000000000F0 TCNT: 00000000000000F0 PCP0: 00000000000000F0 PCP1: 00000000000000FF PPCM: 00000000000000F0 PPMF: 00000000F0FFF0F0 And this still is worse with the long field, for example it's a show other simple comparative example of some fields in the IGDM (Intel Graphics Device): Before running: Spoiler ASLC:00000000FADE87F4 TCHE:000000009F7A6119 ALSI:000000005364DCDF BCLP:000000008FE4E25E PFIT:00000000A5F26445 CBLV:0000000076BFE5AC BCLM:B84A222F8F32F9A646B47E2590A324EDE9AEBE19887940CE514A5AD82CD9A79BB4D12C5B7F746007 CPFM:00000000593C4AD5 EPFM:00000000A04A9437 PLUT:43FB06A77C535A47E1F1CA20F4CA13885FFDCF2CEC77922882ECE71E9AAD6F509FD3400039EFDEBE194E77FE471EBFEB1CDD0DE9DAA9F5EA09188F3BA93BC3FE6CFA16AC72AA28251C0C PFMB:00000000EAFC8E54 CCDV:000000009A531000 PCFT:00000000690A8EC4 SROT:00000000E88A4228 the same, little time after running: Spoiler ASLC:00000000FFFFFFFF TCHE:00000000FFFFFFFF ALSI:00000000FFFFFFFF BCLP:00000000FFFFFFFF PFIT:00000000FFFFFFFF CBLV:00000000FFFFFFFF BCLM:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CPFM:00000000FFFFFFFF EPFM:00000000FFFFFFFF PLUT:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PFMB:00000000FFFFFFFF CCDV:00000000FFFFFFFF PCFT:00000000FFFFFFFF SROT:00000000FFFFFFFF And, at least for my, the best case is when I select OSYS=Windows 2006 and ACOS 0x20. If I try OSYS=Linux and ACOS 0x40, the fields are corrupt in the same way, but with C0 instead of FF,. Almost all the fields take C0C0C0 etc as its value. If try OSYS=WinXP, then all the digits becomes to 0 and F. So, Ok, it's no viable, and I rather abandon because it could works very fine, but it's designed highly to it not work if the OS is not a Windows, and ok, I can see the display and I can use other OS, but none will work properly, and well, it's all Link to comment Share on other sites More sharing options...
Recommended Posts