Contribute
Register

MSI GS70 Development Thread

Status
Not open for further replies.
I'd assume so. I found this in the spec:

"If the_STA method indicates that the device is present, OSPM will evaluate the _INI for the device (if the_INI method exists) "

So could I in theory, just declare an _INI method for say, BAT1 or ADP1 and expect the OS to execute it? And if so, could I just piggyback PINI to it?

Edit:
Tried adding _INIs to BAT1, PS2K, SOI1 and EC. They all load before _REG (3,1). The only thing I can think of is to perhaps try adding it to a thermal zone.
 
I think what I would do:
- call _OFF from _INI
- edit _OFF so it does not touch EC
- add code to_REG to do the EC things that would have normally been done in_OFF
 
I think what I would do:
- call _OFF from _INI
- edit _OFF so it does not touch EC
- add code to_REG to do the EC things that would have normally been done in_OFF

Yeah I tried that last night, no dice unfortunately.

_OFF in SSDT-11.dsl:
Code:
Method (_OFF, 0, Serialized)  // _OFF: Power Off        {
            //\_SB.PCI0.LPCB.EC.ESGX (Zero)
            If (LEqual (CTXT, Zero))
            {
                If (LNotEqual (GPRF, One))
                {
                    Store (VGAR, VGAB)
                }


                Store (One, CTXT)
            }


            SGOF ()
        }

EC._REG:
Code:
If (LAnd (LEqual (Arg0, 3), Arg1) )
                {
                    \_SB.PCI0.LPCB.EC.ESGX (Zero)
                }

_WAK
Code:
\_SB.PCI0.LPCB.EC.ESGX (Zero)
        PINI ()

It's gone back to the original behaviour now. Like this:
Commented out and called from _INI

  • Card turns off
  • Doesn't show up in System Profiler
  • LED white
  • LED orange after sleep

So _INI currently looks like this:
Code:
Store (0x07D0, OSYS)
PINI ()

The thing is. As soon as I change it to:
Code:
Store (0x07D0, OSYS)
\_SB.PCI0.LPCB.EC.ESGX (Zero)
PINI ()

It behaves the way mentioned in post 80 where the GPU is fully powered and loaded at boot and the LED turns white after sleep before crashing.

Maybe this is just a red herring. I'll add pushes throughout _OFF today and compare the outputs for calls from _REG and _INI.
 
Well this sucks. I just added pushes to SSDT-10/11 and called PINI from _INI to determine if _OFF was completing before the system crashed. Nothing. I don't even see "Entering PINI:_WAK" let alone "Entering _OFF. In fact, the system basically doesn't log ANYTHING after waking from sleep. I don't even get a wake reason. Last thing in console before reboot is "WindowServer: device_generate_desktop_screenshot", which is, correct me if I'm wrong, pre-sleep. If the driver was crashing, we'd at least see a panic or "FATAL". Something else is wrong here...
 
Yeah I tried that last night, no dice unfortunately.

Only problem is on wake from sleep, right?

_WAK
Code:
\_SB.PCI0.LPCB.EC.ESGX (Zero)
        PINI ()

Where in _WAK are you inserting this code?
 
Well this sucks. I just added pushes to SSDT-10/11 and called PINI from _INI to determine if _OFF was completing before the system crashed. Nothing. I don't even see "Entering PINI:_WAK" let alone "Entering _OFF. In fact, the system basically doesn't log ANYTHING after waking from sleep. I don't even get a wake reason. Last thing in console before reboot is "WindowServer: device_generate_desktop_screenshot", which is, correct me if I'm wrong, pre-sleep. If the driver was crashing, we'd at least see a panic or "FATAL". Something else is wrong here...

I didn't realize you're crashing after sleep... Keep in mind that you may not see logs in the event of a crash...

Do you have sleep/wake working without nvidia turnoff? If so, does your _PTS and _WAK execute from beginning to end?

Sometimes crashes just cause reboot (or hard hang...)
 
Only problem is on wake from sleep, right?

That's right. LED turns orange after waking. Before sleep _BST[1] is reading 1.26 - 1.596A while after sleep, the steady-state reading is about 2.565A. GPU is definitely powered.

Where in _WAK are you inserting this code?

Code:
Method (_WAK, 1, Serialized)  // _WAK: Wake
    {
        P8XH (One, 0xAB)
        \_SB.PCI0.IGPU.GLID (One)
        PINI ()
        WAK (Arg0)

I also tried it after the _OSI. No different. Though nothing in SSDT-10/11 call _OSI or depend on OSVR.
 
I didn't realize you're crashing after sleep... Keep in mind that you may not see logs in the event of a crash...

Yeah, the system must be getting hit hard.

Do you have sleep/wake working without nvidia turnoff? If so, does your _PTS and _WAK execute from beginning to end?

Sure do. I'm fairly sure they execute all the way through. I'll check after posting this. It only crashes if PINI is in _WAK and in _INI without ESGX being removed.

So... If I have this in _WAK:
Code:
[COLOR=#3E3E3E]\_SB.PCI0.LPCB.EC.ESGX (Zero)
[/COLOR][COLOR=#3E3E3E]PINI ()[/COLOR]
And only PINI () in _INI. It does the original behaviour. i.e. White LED and completely disabled GPU on boot but orange LED after sleep with higher current draw.

If I add \_SB.PCI0.LPCB.EC.ESGX (Zero) to _INI, it'll crash on wake. Again, in this case, I'm not sure where it crashes since it's gone before anything can be logged.
 
With ESGX commented out, PINI called from _INI and _WAK and _ON called from _PTS, _WAK and _PTS execute all the way through.
 
That's right. LED turns orange after waking. Before sleep _BST[1] is reading 1.26 - 1.596A while after sleep, the steady-state reading is about 2.565A. GPU is definitely powered.



Code:
Method (_WAK, 1, Serialized)  // _WAK: Wake
    {
        P8XH (One, 0xAB)
        \_SB.PCI0.IGPU.GLID (One)
        PINI ()
        WAK (Arg0)

I also tried it after the _OSI. No different. Though nothing in SSDT-10/11 call _OSI or depend on OSVR.

Try calling PINI as late as possible in _WAK. The idea is you want to be certain all state changed by _PTS has been restored by _WAK before using _OFF.
 
Status
Not open for further replies.
Back
Top