Jump to content

Clover Problems and Solutions


ErmaC
3,206 posts in this topic

Recommended Posts

I tried that too (it's how I'm injecting my GFX). It injects the device properties (layout etc) but not the device name. So as there's no device called HDEF it still doesn't work.

 

I hoped it might help to get Clover to put the device in the right place, but it didn't.

Link to comment
Share on other sites

since clover can dump the acpi tables using F4 can't it also use the proper iasl utility flags to merge all missing dsdt/ssdt tables missing in dsdt so that we can get a proper compilable dsdt without errors. iasli can also be compiled as an EFI binary.

* Intel ACPI Component Architecture * AML/ASL+ Disassembler version 20150930-64
 * Copyright (c) 2000 - 2015 Intel Corporation
/*
     * iASL Warning: There were 1 external control methods found during
     * disassembly, but additional ACPI tables to resolve these externals
     * were not specified. This resulting disassembler output file may not
     * compile because the disassembler did not know how many arguments
     * to assign to these methods. To specify the tables needed to resolve
     * external control method references, the -e option can be used to
     * specify the filenames. Note: SSDTs can be dynamically loaded at
     * runtime and may or may not be available via the host OS.
     * Example iASL invocations:
     *     iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml
     *     iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml
     *     iasl -e ssdt*.aml -d dsdt.aml
     *
     * In addition, the -fe option can be used to specify a file containing
     * control method external declarations with the associated method
     * argument counts. Each line of the file must be of the form:
     *     External (<method pathname>, MethodObj, <argument count>)
     * Invocation:
     *     iasl -fe refs.txt -d dsdt.aml
     *
     * The following methods were unresolved and many not compile properly
     * because the disassembler had to guess at the number of arguments
     * required for each:
     */
Link to comment
Share on other sites

I tried that too (it's how I'm injecting my GFX). It injects the device properties (layout etc) but not the device name. So as there's no device called HDEF it still doesn't work.

 

I hoped it might help to get Clover to put the device in the right place, but it didn't.

 

FWIW my Asus Z97 Gryphon uses `HDAU` and I edit Toleda's script to replace occurrences of `HDEF` with `HDAU` instead and my audio would work fine, but I'm using an SSDT-based method of configuring devices (via RampageDev's method)

Link to comment
Share on other sites

@Slice: I've no idea what it is. But that's where Clover has decided to inject the HDEF device.

 

I know it can be fixed by DSDT/SSDT injection but I've managed to move all of the fixes I made using SSDT to Clover's config.plist. Now the only fix I still need a SSDT for is HDEF because of this path issue.

 

@WinstonAce: I tried with just Devices\Audio\Inject=1 but as I suspected, it didn't work. The core of the issue is lack of a HDEF device.

Give me your native DSDT to analyze why Clover choose bad path.

 

 

 

since clover can dump the acpi tables using F4 can't it also use the proper iasl utility flags to merge all missing dsdt/ssdt tables missing in dsdt so that we can get a proper compilable dsdt without errors. iasli can also be compiled as an EFI binary.

* Intel ACPI Component Architecture * AML/ASL+ Disassembler version 20150930-64
 * Copyright (c) 2000 - 2015 Intel Corporation
/*
     * iASL Warning: There were 1 external control methods found during
     * disassembly, but additional ACPI tables to resolve these externals
     * were not specified. This resulting disassembler output file may not
     * compile because the disassembler did not know how many arguments
     * to assign to these methods. To specify the tables needed to resolve
     * external control method references, the -e option can be used to
     * specify the filenames. Note: SSDTs can be dynamically loaded at
     * runtime and may or may not be available via the host OS.
     * Example iASL invocations:
     *     iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml
     *     iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml
     *     iasl -e ssdt*.aml -d dsdt.aml
     *
     * In addition, the -fe option can be used to specify a file containing
     * control method external declarations with the associated method
     * argument counts. Each line of the file must be of the form:
     *     External (<method pathname>, MethodObj, <argument count>)
     * Invocation:
     *     iasl -fe refs.txt -d dsdt.aml
     *
     * The following methods were unresolved and many not compile properly
     * because the disassembler had to guess at the number of arguments
     * required for each:
     */

 

Clover has no deal with compiling/decompiling AML.

All it does at F4 is just copy ACPI memory into files.

Files extracted with Clover are exactly the same as extracted by AIDA64 in Windows or some command in Linux because the amls just contained in BIOS.

Link to comment
Share on other sites

Here it is Slice. I plugged some of the device IDs that appear under ^UNC0 in IOReg into Google and they all came back as CPU-related devices.

Yes, this is the same PCI bus

                Name (_HID, EisaId ("PNP0A03") /* PCI Bus */)  // _HID: Hardware ID

                Name (UBN0, 0xFF)
                Method (_UID, 0, NotSerialized)  // _UID: Unique ID
                {
                    Return (UBN0) /* \_SB_.UNC0.UBN0 */
                }
 
                Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number
                {
                    Return (UBN0) /* \_SB_.UNC0.UBN0 */
                }
 
                Name (_ADR, Zero)  // _ADR: Address
 

Compare to

        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */)  // _HID: Hardware ID
            Name (_CID, EisaId ("PNP0A03") /* PCI Bus */)  // _CID: Compatible ID
            Name (_ADR, Zero)  // _ADR: Address
            Method (^BN00, 0, NotSerialized)
            {
                Return (Zero)
            }

            Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number
            {
                Return (BN00 ())
            }
So device PCI0 has BIOS bus number=0

while UNC0 = 0xFF

But Clover searches Adr=0 which is the same for both devices and I have no idea how to make more deep analysis.

I will recommend you to patch the DSDT manually and erase this device.

Then you can allow Clover to make other fixes.

For example this 

DSDT.aml-corrected.zip

Link to comment
Share on other sites

Thanks for looking Slice. If it's a case of having to fix the DSDT to get Clover to inject HDEF correctly, I'd rather just stick to using a SSDT to inject the device.

 

I just thought there might be a way to get Clover to make sure it's putting HDEF in the right place.

Link to comment
Share on other sites

Thanks for looking Slice. If it's a case of having to fix the DSDT to get Clover to inject HDEF correctly, I'd rather just stick to using a SSDT to inject the device.

 

I just thought there might be a way to get Clover to make sure it's putting HDEF in the right place.

Calculated return from _BBN?

Link to comment
Share on other sites

  • 2 weeks later...

KernelPm change for 10.11.1 beta (15B38b)

 

 

u430:Clover Admin$ svn diff
Index: rEFIt_UEFI/Platform/kernel_patcher.c
===================================================================
--- rEFIt_UEFI/Platform/kernel_patcher.c (revision 3291)
+++ rEFIt_UEFI/Platform/kernel_patcher.c (working copy)
@@ -655,6 +655,12 @@
       DBG("Kernel power management patch 10.10(data3) found and patched\n");
       return TRUE;
     }
+    // rehabman: change for 10.11.1 beta 15B38b
+    else if (0x00001390000000E2ULL == (*((UINT64 *)Ptr))) {
+        (*((UINT64 *)Ptr)) = 0x0000000000000000ULL;
+        DBG("Kernel power management patch 10.11.1(beta 15B38b)(data3) found and patched\n");
+        return TRUE;
+    }
     Ptr += 16;
   }
   DBG("Kernel power management patch region not found!\n");
  • Like 3
Link to comment
Share on other sites

To get rid of the early centered messages such as "Welcome to Clover" and others, I added option config.plist/Boot/NoEarlyProgress.

 

Default false, but set to true, will eliminate these messages and result in a cleaner startup.

 

Speedy-OSX:Clover RehabMan$ svn diff
Index: rEFIt_UEFI/Platform/Settings.c
===================================================================
--- rEFIt_UEFI/Platform/Settings.c	(revision 3295)
+++ rEFIt_UEFI/Platform/Settings.c	(working copy)
@@ -1830,6 +1830,11 @@
         GlobalConfig.FastBoot       = TRUE;
       }
 
+      Prop = GetProperty (DictPointer, "NoEarlyProgress");
+      if (IsPropertyTrue (Prop)) {
+          GlobalConfig.NoEarlyProgress = TRUE;
+      }
+
       Prop = GetProperty (DictPointer, "NeverHibernate");
       if (IsPropertyTrue (Prop)) {
         GlobalConfig.NeverHibernate = TRUE;
Index: rEFIt_UEFI/refit/lib.h
===================================================================
--- rEFIt_UEFI/refit/lib.h	(revision 3295)
+++ rEFIt_UEFI/refit/lib.h	(working copy)
@@ -435,6 +435,7 @@
   INTN        TileXSpace;
   INTN        TileYSpace;
   BOOLEAN     Proportional;
+  BOOLEAN     NoEarlyProgress;
 } REFIT_CONFIG;
 
 // types
Index: rEFIt_UEFI/refit/main.c
===================================================================
--- rEFIt_UEFI/refit/main.c	(revision 3295)
+++ rEFIt_UEFI/refit/main.c	(working copy)
@@ -2032,7 +2032,7 @@
     return Status;
   }
   //  DBG("DBG: messages\n");
-  if (!GlobalConfig.FastBoot  && GlobalConfig.Timeout>0) {
+  if (!GlobalConfig.NoEarlyProgress && !GlobalConfig.FastBoot  && GlobalConfig.Timeout>0) {
     FirstMessage = PoolPrint(L"   Welcome to Clover %s   ", FIRMWARE_REVISION);
     i = (UGAWidth - StrLen(FirstMessage) * GlobalConfig.CharWidth) >> 1;
     DrawTextXY(FirstMessage, i, UGAHeight >> 1, X_IS_CENTER);
@@ -2075,7 +2075,7 @@
   gCPUStructure.ExternalClock = (UINT32)DivU64x32(gCPUStructure.FSBFrequency, kilo);
   gCPUStructure.MaxSpeed = (UINT32)DivU64x32(gCPUStructure.TSCFrequency + (Mega >> 1), Mega);
 
-  if (!GlobalConfig.FastBoot && GlobalConfig.Timeout>0) {
+  if (!GlobalConfig.NoEarlyProgress && !GlobalConfig.FastBoot && GlobalConfig.Timeout>0) {
     FirstMessage = PoolPrint(L"... user settings ...");
     i = (UGAWidth - StrLen(FirstMessage) * GlobalConfig.CharWidth) >> 1;
     DrawTextXY(FirstMessage, i, (UGAHeight >> 1) + 20, X_IS_CENTER);
@@ -2141,7 +2141,7 @@
      GetEfiBootDeviceFromNvram();
   }
   
-  if (!GlobalConfig.FastBoot && GlobalConfig.Timeout>0) {
+  if (!GlobalConfig.NoEarlyProgress && !GlobalConfig.FastBoot && GlobalConfig.Timeout>0) {
     FirstMessage = PoolPrint(L"... scan entries ...");
     i = (UGAWidth - StrLen(FirstMessage) * GlobalConfig.CharWidth) >> 1;
     DrawTextXY(FirstMessage, i, (UGAHeight >> 1) + 20, X_IS_CENTER);
@@ -2230,7 +2230,7 @@
         AddMenuEntry(&MainMenu, &MenuEntryShutdown);
       }
 
-      if (GlobalConfig.Timeout>0) {
+      if (!GlobalConfig.NoEarlyProgress && !GlobalConfig.FastBoot && GlobalConfig.Timeout>0) {
         FirstMessage = PoolPrint(L"...theme %s ...", GlobalConfig.Theme);
         i = (UGAWidth - StrLen(FirstMessage) * GlobalConfig.CharWidth) >> 1;
         DrawTextXY(FirstMessage, i, (UGAHeight >> 1) + 20, X_IS_CENTER);
Note: I'm pretty sure that last one was lacking the test for !GlobalConfig.FastBoot, so I fixed it.
  • Like 5
Link to comment
Share on other sites

Thank you RehabMan for your work but can you please look if you have the time at auto disabling Graphicinjector when we boot from recovery or installer because in some cards like ati and others i always forget and have to reset pc, plus i think that injecting graphics when installing or rescuing a system is useless and will help a lot of people when are trying Clover for the first time.

Link to comment
Share on other sites

To get rid of the early centered messages such as "Welcome to Clover" and others, I added option config.plist/GUI/NoEarlyProgress.

 

Default false, but set to true, will eliminate these messages and result in a cleaner startup.

 

Speedy-OSX:Clover RehabMan$ svn diff
Index: rEFIt_UEFI/Platform/Settings.c
===================================================================
--- rEFIt_UEFI/Platform/Settings.c	(revision 3295)
+++ rEFIt_UEFI/Platform/Settings.c	(working copy)
@@ -1830,6 +1830,11 @@
         GlobalConfig.FastBoot       = TRUE;
       }
 
+      Prop = GetProperty (DictPointer, "NoEarlyProgress");
+      if (IsPropertyTrue (Prop)) {
+          GlobalConfig.NoEarlyProgress = TRUE;
+      }
+
       Prop = GetProperty (DictPointer, "NeverHibernate");
       if (IsPropertyTrue (Prop)) {
         GlobalConfig.NeverHibernate = TRUE;
Index: rEFIt_UEFI/refit/lib.h
===================================================================
--- rEFIt_UEFI/refit/lib.h	(revision 3295)
+++ rEFIt_UEFI/refit/lib.h	(working copy)
@@ -435,6 +435,7 @@
   INTN        TileXSpace;
   INTN        TileYSpace;
   BOOLEAN     Proportional;
+  BOOLEAN     NoEarlyProgress;
 } REFIT_CONFIG;
 
 // types
Index: rEFIt_UEFI/refit/main.c
===================================================================
--- rEFIt_UEFI/refit/main.c	(revision 3295)
+++ rEFIt_UEFI/refit/main.c	(working copy)
@@ -2032,7 +2032,7 @@
     return Status;
   }
   //  DBG("DBG: messages\n");
-  if (!GlobalConfig.FastBoot  && GlobalConfig.Timeout>0) {
+  if (!GlobalConfig.NoEarlyProgress && !GlobalConfig.FastBoot  && GlobalConfig.Timeout>0) {
     FirstMessage = PoolPrint(L"   Welcome to Clover %s   ", FIRMWARE_REVISION);
     i = (UGAWidth - StrLen(FirstMessage) * GlobalConfig.CharWidth) >> 1;
     DrawTextXY(FirstMessage, i, UGAHeight >> 1, X_IS_CENTER);
@@ -2075,7 +2075,7 @@
   gCPUStructure.ExternalClock = (UINT32)DivU64x32(gCPUStructure.FSBFrequency, kilo);
   gCPUStructure.MaxSpeed = (UINT32)DivU64x32(gCPUStructure.TSCFrequency + (Mega >> 1), Mega);
 
-  if (!GlobalConfig.FastBoot && GlobalConfig.Timeout>0) {
+  if (!GlobalConfig.NoEarlyProgress && !GlobalConfig.FastBoot && GlobalConfig.Timeout>0) {
     FirstMessage = PoolPrint(L"... user settings ...");
     i = (UGAWidth - StrLen(FirstMessage) * GlobalConfig.CharWidth) >> 1;
     DrawTextXY(FirstMessage, i, (UGAHeight >> 1) + 20, X_IS_CENTER);
@@ -2141,7 +2141,7 @@
      GetEfiBootDeviceFromNvram();
   }
   
-  if (!GlobalConfig.FastBoot && GlobalConfig.Timeout>0) {
+  if (!GlobalConfig.NoEarlyProgress && !GlobalConfig.FastBoot && GlobalConfig.Timeout>0) {
     FirstMessage = PoolPrint(L"... scan entries ...");
     i = (UGAWidth - StrLen(FirstMessage) * GlobalConfig.CharWidth) >> 1;
     DrawTextXY(FirstMessage, i, (UGAHeight >> 1) + 20, X_IS_CENTER);
@@ -2230,7 +2230,7 @@
         AddMenuEntry(&MainMenu, &MenuEntryShutdown);
       }
 
-      if (GlobalConfig.Timeout>0) {
+      if (!GlobalConfig.NoEarlyProgress && !GlobalConfig.FastBoot && GlobalConfig.Timeout>0) {
         FirstMessage = PoolPrint(L"...theme %s ...", GlobalConfig.Theme);
         i = (UGAWidth - StrLen(FirstMessage) * GlobalConfig.CharWidth) >> 1;
         DrawTextXY(FirstMessage, i, (UGAHeight >> 1) + 20, X_IS_CENTER);
Note: I'm pretty sure that last one was lacking the test for !GlobalConfig.FastBoot, so I fixed it.

 

Committed to 3296.

Users claim that Clover is too complex. Now it will be one setting more complex.  :wink_anim:

  • Like 2
Link to comment
Share on other sites

Thank you RehabMan for your work but can you please look if you have the time at auto disabling Graphicinjector when we boot from recovery or installer because in some cards like ati and others i always forget and have to reset pc, plus i think that injecting graphics when installing or rescuing a system is useless and will help a lot of people when are trying Clover for the first time.

You can do that with a custom entry that names an alternate config.plist.

  • Like 1
Link to comment
Share on other sites

To get rid of the early centered messages such as "Welcome to Clover" and others, I added option config.plist/GUI/NoEarlyProgress.

 

Default false, but set to true, will eliminate these messages and result in a cleaner startup.

 


 

you mean like this?

Committed to 3296.

Users claim that Clover is too complex. Now it will be one setting more complex.  :wink_anim:

It takes a more updated wi ki  :wink_anim: 

post-410253-0-27600500-1445462234_thumb.png

Link to comment
Share on other sites

To get rid of the early centered messages such as "Welcome to Clover" and others, I added option config.plist/GUI/NoEarlyProgress.

 

Default false, but set to true, will eliminate these messages and result in a cleaner startup.

 

Pardon me but where can i see this bug you're referring to?

Link to comment
Share on other sites

Pardon me but where can i see this bug you're referring to?

 

Not a bug, it's a new feature. When Clover loads you can briefly see the "Welcome to Clover revision xxxx" text (and some others I think, but these are very quick and not very noticeable). With RehabMan's additions (r3296) you can now add NoEarlyProgress=FALSE in config.plist/GUI and it'll hide these messages while loading Clover.

Link to comment
Share on other sites

×
×
  • Create New...