Jump to content
3 posts in this topic

Recommended Posts

Hello guys !

Hope everything goods, I'm in trouble with my open core EFI while booting Windows I have one BSOD caused by ACPI... I'm a bit lost. I'm on a Razer Blade Base model 2018.

If someone have an idea about my bad open core's configuration, you'll be my hero !!

Thanks 

Have a nice day 

 

The attached file don't have my kexts (20mo) but you can see them on my config.plist

EFI.zip

Hey!
Opencore will inject ACPI into every OS it boots, so you will need to make each SSDT either compatible with Windows or at least check the current OS. You can check the currently booted OS in ACPI using the _OSI() call, where you pass in the OS you want to check for! _OSI("Darwin") for example would return true when running macOS and false in Windows/Linux. I went through the SSDTs real quick and I think you just need to do the following:

SSDT-BATT: I believe SSDT-BATT can be replaced with ECEnabler.kext.  I don't think this would cause issues with Windows as is though.
SSDT-DDGPU: Replace "If (CondRefOf (\_SB.PCI0.PEG0.PEGP._OFF))" with "If (CondRefOf (\_SB.PCI0.PEG0.PEGP._OFF) && _OSI("Darwin"))". I doubt you want to disable the dedicated GPU in windows but I guess you could if you really wanted to. Another option I think is surrounding the entire RMD1 device in an OS check. I'll attach this version below.
SSDT-GPI0: This shouldn't cause any harm as is. Can do something like the below if you want though to only enable the GPI0 device in macOS.
        Method (_STA, 0, NotSerialized)  // _STA: Status
        {

            If (_OSI("Darwin")) {
                Return (0x0F)
            }

            Return (0x00)

        }
SSDT-HPET: No changes needed I think
SSDT-PLUG: No changes needed
SSDT-PMC: No changes needed, this already checks for Darwin/macOS
SSDT-PNLFCFL: I would not be surprised if this is the one causing issues. I've ran into this specific SSDT causing issues before in Windows. Update to use the latest SSDT-PNLF from Acidanthera which checks for Windows and contains Coffeelake fixes https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/Source/SSDT-PNLF.dsl
SSDT-PTSWAK.dsl: Similar to SSDT-DDGPU, just add "&& _OSI("Darwin") in the If CondRefOf statements for both _WAK and _PTS. I doubt you want to disable the dedicated GPU in windows.
SSDT-RTEC: Is this doing anything? This just has an empty RTEC method which does not do anything.
SSDT-TPD0.dsl: At the beginning of the _CRS Method I would add:
If (_OSI("Darwin")) {
    Return(XCRS())
}

You will need to add the below above as well:
External (\_SB.PCI0.I2C0.TPD0.XCRS, MethodObj)

This makes it so that your new _CRS implementation which returns the GPIO based interrupt only runs in macOS. This goes hand in hand with SSDT-GPI0 above. If you decide to have the GPI0 device enabled all the time, I think you could leave this SSDT alone without adding the OS check at the beginning. If you make the GPI0 _STA method check for macOS though and only return 0x0F in macOS, you will need to make this modification here so prevent the GPIO device being used for interrupts in Windows/Linux where the GPI0 device is disabled.

SSDT-XOSI:
So I don't think this one will break Windows either, but this is another case where you probably don't want to be messing with things in windows too badly. I would just add the below at the beginning of the XOSI method
        If (!_OSI("Darwin")) {
            Return (_OSI(Arg0))
        }

Note: I modified the SSDTs I noted above and attached them. These are in the decompiled DSL format so you will need to use iasl or MaciASL to compile them real quick. I figured this was a bit easier to show the changes I made so you can compare the before and after. To compile with MaciASL, you just need to open up the DSL then do Save As and change the format to AML.

Any SSDTs that came from SSDTTime or Acidanthera will already be compatible with Windows so you should not need to mess with those fyi.
Last note, you will likely want to set Kernel->Quirks->CustomSMBIOSGuid to Yes/True and PlatformInfo->UpdateSMBIOSMode to "Custom". This will make sure that any changes to the reported model of your device (i.e. Razer Blade to MacBookPro16,1) will only affect macOS rather than all OSes. You could always install the bootcamp tools for fun though and get a startup disk utility in windows though :P 

SSDT-XOSI.dsl SSDT-PTSWAK.dsl SSDT-TPD0.dsl SSDT-GPI0.dsl SSDT-DDGPU.dsl

Edited by 1Revenger1
  • Like 3

I posted that giant post above and realized it was a lot. A lot of people here would probably recommend using Clover (which does not inject ACPI into Windows) or skipping any bootloader and booting straight to Windows from the BIOS picker. I myself do like using Opencore to boot all my OSes on my Lenevo X1 Extreme and I do use it to boot Windows regularly. I find the requirement to be mindful about ACPI changes and their effects results in smaller (better) patches which are easier to maintain across BIOS updates/changes to BIOS settings. Not everyone would agree though - and I won't be offended if you decide to skip all this and just use your BIOS picker haha.

  • Like 2
×
×
  • Create New...