vandebergz Posted June 26, 2015 Share Posted June 26, 2015 Hello. I have a problem with my build, an Asus X555L notebook. Here's some info Processor: Intel i5 4210U Graphics: Intel HD4400 & NVIDIA GT 840M (optimus) RAM: 4GB DDR3L Bootloader: Clover UEFI The problem is it can't shutdown and restart properly after a certain hours of usage(let's say in this case it's 3 hours). So if I use it only for an hour or more but less than 3, the problem doesn't seem to occur and it shuts down or restart properly. But using it close to 3 hours or even more could lead to the problem of not being able to restart or shutdown. If I choose restart, it seems fine but after the screen goes black it doesn't go to bios screen(logo) and restart, rather it shuts down. If I choose shutdown, the screen goes black for eternity while and never shutdown(sytem is up because fat is spinning very slow and led indicator for power is on). Strangely it only happens when I use fixed DSDT I dumped from Clover, decompiled using Rehabman's iASL. I do nothing to it but fixes some error and enable my IGPU. Is there a way to fix this? Link to comment Share on other sites More sharing options...
Allan Posted June 26, 2015 Share Posted June 26, 2015 Try use "Shutdown" patches for Clover: http://clover-wiki.zetam.org/Configuration/ACPI#DSDT-/-Fixes Link to comment Share on other sites More sharing options...
vandebergz Posted June 28, 2015 Author Share Posted June 28, 2015 Try use "Shutdown" patches for Clover: http://clover-wiki.zetam.org/Configuration/ACPI#DSDT-/-Fixes I tried the combination of Fix Shutdown, SlpSmiAtWake, and SuspendOverwrite. But the problem persists... Link to comment Share on other sites More sharing options...
pokenguyen Posted June 28, 2015 Share Posted June 28, 2015 Disable your nVidia in DSDT/SSDT by calling _OFF function. 1 Link to comment Share on other sites More sharing options...
vandebergz Posted June 29, 2015 Author Share Posted June 29, 2015 Disable your nVidia in DSDT/SSDT by calling _OFF function. I thought changing GFX0 to IGPU alone would do it. How am I supposed to call the _OFF function? Link to comment Share on other sites More sharing options...
Allan Posted June 29, 2015 Share Posted June 29, 2015 See this: DSDT/SSDT: Disable dedicated GPU to extend battery life (Laptop-exclusive) 1 Link to comment Share on other sites More sharing options...
vandebergz Posted July 1, 2015 Author Share Posted July 1, 2015 See this: DSDT/SSDT: Disable dedicated GPU to extend battery life (Laptop-exclusive) Okay, I'm trying to understand it. If I were to do that, I need to put the SSDT that is modified into Clover's ACPI/patched/ folder right? But right now I'm using Drop OEM = Yes in Clover. Does it matter? Link to comment Share on other sites More sharing options...
Allan Posted July 1, 2015 Share Posted July 1, 2015 If I were to do that, I need to put the SSDT that is modified into Clover's ACPI/patched/ folder right? Yes, is right. But right now I'm using Drop OEM = Yes in Clover. Does it matter? No, read here why: http://clover-wiki.zetam.org/Configuration/ACPI#SSDT-/-DropOem Link to comment Share on other sites More sharing options...
vandebergz Posted July 1, 2015 Author Share Posted July 1, 2015 I tried calling the _OFF method and put the modified DSDT to ACPI/patched/ but NVDIA is still there in System Information. I attached the modified DSDT. Please take a lookI I meant SSDT SSDT-11.zip Link to comment Share on other sites More sharing options...
Allan Posted July 1, 2015 Share Posted July 1, 2015 You make this? Find the dedicated GPU’s _INI method, add _OFF ( ) at the end of the method Try find if IGPU/GFX0 are in SSDTs too. Link to comment Share on other sites More sharing options...
vandebergz Posted July 1, 2015 Author Share Posted July 1, 2015 You make this? Find the dedicated GPU’s _INI method, add _OFF ( ) at the end of the method Try find if IGPU/GFX0 are in SSDTs too. Yes, I did that. I also did the scope fix in the said post. Another GFX0 is my Intel, what to do with that? I have moved it to my DSDT and now turned into IGPU there to enable QE/CI. Link to comment Share on other sites More sharing options...
Allan Posted July 1, 2015 Share Posted July 1, 2015 Rename GFX0 > IGPU. After that, put in CLOVER/ACPI/patched Link to comment Share on other sites More sharing options...
vandebergz Posted July 1, 2015 Author Share Posted July 1, 2015 Rename GFX0 > IGPU. After that, put in CLOVER/ACPI/patched Did that, yet NVIDIA's still there in System Information.. Link to comment Share on other sites More sharing options...
Allan Posted July 2, 2015 Share Posted July 2, 2015 Ok, but you still have problems for Shutdown? Link to comment Share on other sites More sharing options...
vandebergz Posted July 2, 2015 Author Share Posted July 2, 2015 Ok, but you still have problems for Shutdown? Yes.. I think it needs NVIDIA completely shut off to get rid of this shutdown problem Link to comment Share on other sites More sharing options...
Allan Posted July 3, 2015 Share Posted July 3, 2015 Ok. Extract all your ACPI tables and send here. Link to comment Share on other sites More sharing options...
vandebergz Posted July 3, 2015 Author Share Posted July 3, 2015 Here it is ACPI.zip Link to comment Share on other sites More sharing options...
Allan Posted July 3, 2015 Share Posted July 3, 2015 The Nvidia card is in SSDT-10.aml If you follow the guide, you can disable it. Link to comment Share on other sites More sharing options...
vandebergz Posted July 3, 2015 Author Share Posted July 3, 2015 The Nvidia card is in SSDT-10.aml If you follow the guide, you can disable it. I checked with IOReg and NVIDIA is under RP05 But there is no RP05.PEGP there, so there is no _INI. I think SSDT-10 is for Intel's graphics.. And method _OFF is found on SSDT-12, but there is no _INI under SB.PCI0.RP05.PEGP Link to comment Share on other sites More sharing options...
RehabMan Posted July 3, 2015 Share Posted July 3, 2015 I think SSDT-10 is for Intel's graphics.. Correct. And method _OFF is found on SSDT-12, but there is no _INI under SB.PCI0.RP05.PEGP _SB.PCI0.RP05.PEGP._INI can be found in SSDT-11. Please note that _OFF cannot be called from _INI as it accesses the EC. The EC cannot be accessed until _REG is called (with appropriate params, see ACPI spec). You need to strip _EC related stuff from _OFF, move to _REG. And call _OFF from SSDT1's _INI. Link to comment Share on other sites More sharing options...
vandebergz Posted July 3, 2015 Author Share Posted July 3, 2015 _SB.PCI0.RP05.PEGP._INI can be found in SSDT-11. Please note that _OFF cannot be called from _INI as it accesses the EC. The EC cannot be accessed until _REG is called (with appropriate params, see ACPI spec). You need to strip _EC related stuff from _OFF, move to _REG. And call _OFF from SSDT1's _INI. So, it's right that _SB.PCI0.RP05.PEGP._INI is in SSDT-11. And _OFF method is in SSDT-12? There is only this EC0 related in _OFF method If (LEqual (CTXT, Zero)) { \_SB.PCI0.LPCB.EC0.SPIN (0x96, Zero) If (LNotEqual (GPRF, One)) { Store (VGAR, VGAB) } Store (One, CTXT) } But moving it to _REG would cause errors because of nonexisting objects Link to comment Share on other sites More sharing options...
RehabMan Posted July 4, 2015 Share Posted July 4, 2015 So, it's right that _SB.PCI0.RP05.PEGP._INI is in SSDT-11. And _OFF method is in SSDT-12? Yes. Plain to see. There is only this EC0 related in _OFF method If (LEqual (CTXT, Zero)) { \_SB.PCI0.LPCB.EC0.SPIN (0x96, Zero) If (LNotEqual (GPRF, One)) { Store (VGAR, VGAB) } Store (One, CTXT) } But moving it to _REG would cause errors because of nonexisting objects No. You move only the EC related code, and only execute it from _REG when Arg0==3 and Arg1==1. To remove it from _OFF (SSDT12): into method label _OFF parent_label \_SB.PCI0.RP05.PEGP code_regex .*EC.* removeall_matched; And to execute it from _REG instead (DSDT): into method label _REG parent_hid PNP0C09 insert begin //added to turn nvidia/radeon off\n If (LAnd(LEqual(Arg0,3),LEqual(Arg1,1)))\n {\n \_SB.PCI0.LPCB.EC0.SPIN (0x96, Zero)\n }\n end; And then to patch _INI (SSDT11): into method label _INI parent_label \_SB.PCI0.RP05.PEGP insert begin //added to turn nvidia/radeon off\n External(\_SB.PCI0.RP05.PEGP._OFF, MethodObj)\n _OFF()\n end; Of course, you have to then make sure all patched DSDT/SSDT "go together". Make sure no duplicate methods. Make sure renames are balanced across all files. Make sure you drop OEM SSDTs with bootloader. Make sure your patched SSDTs load in the original order (use original names/numbers, specify SortedOrder in config.plist if using Clover) In short, don't make any mistakes. Link to comment Share on other sites More sharing options...
vandebergz Posted July 4, 2015 Author Share Posted July 4, 2015 No. You move only the EC related code, and only execute it from _REG when Arg0==3 and Arg1==1. That one I don't quite get it... To remove it from _OFF (SSDT12): And to execute it from _REG instead (DSDT):And then to patch _INI (SSDT11): Of course, you have to then make sure all patched DSDT/SSDT "go together". Done those things. And DSDT, SSDT-11, SSDT-12 are under ACPI/patched/ Make sure renames are balanced across all files. Make sure you drop OEM SSDTs with bootloader. Make sure your patched SSDTs load in the original order (use original names/numbers, specify SortedOrder in config.plist if using Clover) Got these done too. Make sure no duplicate methods. There is this _OFF method in SSDT-11 in \.SB.PCI0.RP05._ON, what to do with it? Should I disable it? Method (_ON, 0, Serialized) // _ON_: Power On { \_SB.PCI0.RP05.PEGP.SGON () Store (0x07, CMDR) Store (Zero, D0ST) If (LEqual (VEID, 0x10DE)) { Store (HYSS, NVID) } If (LEqual (VEID, 0x1002)) { Store (HYSS, ATID) } Store (One, _STA) } Method (_OFF, 0, Serialized) // _OFF: Power Off { \_SB.PCI0.RP05.PEGP.SGOF () Store (Zero, _STA) } Link to comment Share on other sites More sharing options...
RehabMan Posted July 4, 2015 Share Posted July 4, 2015 ... There is this _OFF method in SSDT-11 in \.SB.PCI0.RP05._ON, what to do with it? Should I disable it? Method (_ON, 0, Serialized) // _ON_: Power On { \_SB.PCI0.RP05.PEGP.SGON () Store (0x07, CMDR) Store (Zero, D0ST) If (LEqual (VEID, 0x10DE)) { Store (HYSS, NVID) } If (LEqual (VEID, 0x1002)) { Store (HYSS, ATID) } Store (One, _STA) } Method (_OFF, 0, Serialized) // _OFF: Power Off { \_SB.PCI0.RP05.PEGP.SGOF () Store (Zero, _STA) } No. These are methods inside a PowerResource. You can leave as-is. Link to comment Share on other sites More sharing options...
vandebergz Posted July 4, 2015 Author Share Posted July 4, 2015 No. These are methods inside a PowerResource. You can leave as-is. But still no luck. Can't see where I'm doing it wrong. I did it all as mentioned. Link to comment Share on other sites More sharing options...
Recommended Posts