Jump to content
132 posts in this topic

Recommended Posts

Hi,

 

I've installed Clover on my MacPro 3,1 to use as a boot manager.

One reason is that I use a PC graphic card, so I can't have original mac bootloader anymore.

 

Of course, I'd like Clover to be as transparent as possible. No modification because none needed. I have already disabled all injection, patch, etc. Os X boots fine. So far no problem.

 

I can see in the debug.log generated by Clover that there is still patching/droping some SSDT table. Should that be disabled ? I can comment out in code to try, I have a working copy that compiles.

 

Cheers,

Jief

  • Like 2
Link to comment
https://www.insanelymac.com/forum/topic/312706-clover-on-real-mac/
Share on other sites

I dig a bit more and here what I did

 

Around at line 1799 (for rev 3555), there is

  if (gSettings.DropSSDT) {
    //special case if we set into menu drop all SSDT
    DropTableFromXSDT(EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, 0, 0);
    DropTableFromRSDT(EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, 0, 0);
  } else { 
    //all remaining SSDT tables will be patched
    PatchAllSSDT();
    //do the empty drop to clean xsdt
    DropTableFromXSDT(XXXX_SIGN, 0, 0);
    DropTableFromRSDT(XXXX_SIGN, 0, 0);
  }
 

gSettings.DropSSDT is false for me, in the else part I've changed :

  } else { 
    if (gSettings.PatchDsdtNum > 0) {
        //all remaining SSDT tables will be patched
        PatchAllSSDT();
        //do the empty drop to clean xsdt
        DropTableFromXSDT(XXXX_SIGN, 0, 0);
        DropTableFromRSDT(XXXX_SIGN, 0, 0);
    }
  }
 

That way, nothing's done if gSettings.PatchDsdtNum==0, which is the case, of course.

 

Not sure if it's needed or not...


@Download-Fritz : 

One reason is that I use a PC graphic card, so I can't have original mac bootloader anymore.

1) PC graphic cards don't have efi bios. You can't have Apple's Startup Manager.

2) Apple's Startup Manager can't boot uefi windows or other OS

3) Apple's Startup Manager is not configurable. With Clover I can add some tools, like gdisk.efi in a custom entry

4) Apple's Startup Manager doesn't work on 4k screen (with my Mac Pro 3,1. I guess newer Mac works)

5) Clover is pretty (if you find the theme you like).

...

1) Ahh, so you boot Clover legacy?

2) It should be able to (except when the OS loader doesn't support EFI 1.10).

3) True, but you could also use rEFInd (saves you having Clover patches on a Mac).

4) See 3).

5) See 3).

 

Just my 5 cents, Clover does quite some stuff unasked as it's not really designed for Mac-use (though ofc nobody stops you from using it that way).

I need the "compatibility support module" to be able to use BIOS firmware. So yes, it's a Legacy boot.

I read everywhere that EFI 1.10 can't windows. Indeed, it doesn't work an my macpro 3,1

 

I already tried rEFInd. Forgot why it didn't work. I know better Clover now because I also have Hackintoshes.

 

My MacPro I'm using now is booted through Clover. So I'm doing it. If some tweaks are needed, I may do them.

So, please, stop trying to convince me not doing so.

  • Like 2

So, please, stop trying to convince me not doing so.

 

(though ofc nobody stops you from using it that way).

 

I was only confused because it makes no sense that Apple Startup Manager shouldn't work if Clover does, except for when Clover is booted legacy... it wasn't obvious from your post, so I asked. Is it so bad? ;)

Nope, but after I've explained my reasons,

you still suggest to use rEFInd :

 

3) True, but you could also use rEFInd (saves you having Clover patches on a Mac).

4) See 3).

5) See 3).

 

It's ok. Can we nicely close the "you can do something else" thing that wasn't at all my inital question ?

 

Thanks.

Hi Slice,

 

I was a bit worried about PatchAllSSDT that was called. It's now not called anymore if gSettings.PatchDsdtNum > 0   

I guess before, it was just copying some table, replacing by the same version because I have no patched in my config.plist.

 

Here is a debug.log. I've added few thing to see what's happening.

 

Jief

debug.log.zip

Hi Slice,

 

I was a bit worried about PatchAllSSDT that was called. It's now not called anymore if gSettings.PatchDsdtNum > 0   

I guess before, it was just copying some table, replacing by the same version because I have no patched in my config.plist.

 

Here is a debug.log. I've added few thing to see what's happening.

 

Jief

Very interesting! Some comments:

1. 

0:108  0:000  LegacyRegion2: Chipset/proc: 0x40038086
0:108  0:000   Unknown chipset

will be corrected

2.

37:569  0:000  Clover revision: 3391  running on MacPro3,1
37:569  0:000  ... with board Mac-F42C88C8

good.gif
 
3.
37:731  0:005  Loading Ps2MouseDxe-64.efi  status=Success

I don't think you need it.

 

4.

571:813  0:003  Table 131 is present, CPUType=402
571:814  0:001  Change to: 402

Changed to same ;)

 

5.

571:831  0:001  ========= Auto patch DSDT Starting ======== 

Yes, but for analyze. It do nothing.

6.

572:323  0:001  // Drop tables

There must be note "dropped" if it happen like me

58:776  0:055  Drop tables from Xsdt, SIGN=SSDT TableID=CpuPm Length=2706
58:834  0:058   Xsdt has tables count=7 
58:891  0:056   Table: SSDT  CpuPm  2706 dropped

7.

572:544  0:001  ** Warning: Your MLB is not suitable for iMessage(must be 17 chars long) !

:hysterical:

Did you have working iMessage?

 

 

All is good

  • Like 1

Even if everything is fine, personally I would remove the 'APPLE_GETVAR_PROTOCOL' (where is that name from? should be 'EFI_DEVICE_PATH_PROPERTY_DATABASE_PROTOCOL') exposure, as your Mac provides its own.

 

@Slice Does Clover internally locate the protocol (i.e. will DevProps code use the Mac protocol) or does it only use the one it exposes?

Even if everything is fine, personally I would remove the 'APPLE_GETVAR_PROTOCOL' (where is that name from? should be 'EFI_DEVICE_PATH_PROPERTY_DATABASE_PROTOCOL') exposure, as your Mac provides its own.

 

@Slice Does Clover internally locate the protocol (i.e. will DevProps code use the Mac protocol) or does it only use the one it exposes?

 

InstallMultipleProtocolInterfaces

will return EFI_ALREADY_STARTED

 

InstallMultipleProtocolInterfaces

will return EFI_ALREADY_STARTED

 

 

This only applies to Device Paths:

'EFI_ALREADY_STARTED  A Device Path Protocol instance was passed in that is already present in the handle database.'

https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Uefi/UefiSpec.h#L1158

@Slice :

 

3. I was'nt sure if mouse emulation for BIOS boot was PS2 or USB. So... the answer is.... USB ! I removed PS2MouseDxe.efi

5. Yes, Auto patch DSDT does nothing. I've checked with various added DBG message.

6. That was a DBG message I've added to be sure it was going there. But it doesn't drop anything.

7. iMessage working fine. Forum usually says that MLB is 13 or 17 chars long. 13 for old macs. Mine is quite old now. I didn't get why this warning.

 

I do have 2 problems, though.

1) nvram are not persistent. I don't have a huge need for it (when I want to bypass Clover, I need to change the boot device, that I can't anymore from OS X).

2) integrated sound card isn't working anymore most of the time. HDEF is seen with IOJones but layout-id is 0, therefore no service connected (it happend twice to have it and I don't know why).

 

@Download-Fritz

I have a look in the source. Not sure what you mean by "remove". I'm kind of new to UEFI, so I can't say I understand that very well. Should I comment out some code ? Or configure something ? 

 

Thanks you both.

This only applies to Device Paths:

'EFI_ALREADY_STARTED  A Device Path Protocol instance was passed in that is already present in the handle database.'

https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Uefi/UefiSpec.h#L1158

Anyway we shouldn't bother about double protocol.

Sometimes, it works without changing anything. A race issue ?

I have an idea.

Boot into OSX by Apple's way. Make full DarwinDumper report and find here DeviceProperties string. Example for MacPro3,1 attached.

device-properties.hex.zip

Then insert it into Clover config.plist to be injected as string

	<key>Devices</key>
	<dict>
		<key>Properties</key>
		<string>7a00000001000000010000006e0000000200000002010c00d041030a0000000001010600001b7fff040028000000500069006e0043006f006e00660069006700750072006100740069006f006e00730000000800000001080100180000006c00610079006f00750074002d00690064000000080000000c000000</string>

This way you will get exactly same properties that you had before Clover.

  • Like 2

I'm away for few days (with my Dell M4300 that works really great with os x, thanks Clover).

I'll try that when I'll be back.

 

I'll do 2 reports with DarwinDumper, 1 when I'm booted through Clover, 2 when booted the Apple's way. To check if it's different. Then I'll do what you said and see for the sound problem.

 

I'll tell you the results.

×
×
  • Create New...