Yosemite support for old MacPro’s (part III)

Please compile the latest files from my Github repository and let me know if the new 64-bit values are working (random-seed) so that I can complete another item on the TODO list.

Edit

The random-seed will eventually really be random, but the Intel Secure Key Technology is not supported on the processors that are used in the MacPro[1/2]. You can verify this for me by running the commands below:

sysctl -n machdep.cpu.features
sysctl -n machdep.cpu.extfeatures

Edit: This has been confirmed by Dan M. and blacksheep. Thanks guys!

When will it work? The usual answer to this kind of questions is; When I am done. But seriously. It will just take a little bit longer because now I had to disassemble Apple’s boot.efi and convert their assembler code into compatible C code.

Debug Messages

The debug messages are now switched off, by default, but you can enable them by changing a the DEBUG_LDRP_CALL_CSPRINTF compiler directive from 0 (zero) to 1 when you need them.

34 thoughts on “Yosemite support for old MacPro’s (part III)

  1. MacPro:~ zero$ sysctl -n machdep.cpu.features
    FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX EST TM2 SSSE3 CX16 TPR PDCM
    MacPro:~ zero$ sysctl -n machdep.cpu.extfeatures
    SYSCALL XD EM64T LAHF

  2. First one spits out:

    FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX EST TM2 SSSE3 CX16 TPR PDCM

    Second one:
    SYSCALL XD EM64T LAHF

    This is with X5365.

    If Secure Key would be supported on these CPUs, there should be something like DRNG or RDRAND, right?

      • I just out of curiosity checked other MP CPUs which I have by the hand and none of them lists RDRAND instruction. I’ve read on Intel site, that only 2013 and never CPUs support this.
        W3570:
        FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1 SSE4.2 POPCNT

        SYSCALL XD EM64T LAHF RDTSCP TSCI

        W3680:
        FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1 SSE4.2 POPCNT AES PCID

        SYSCALL XD 1GBPAGE EM64T LAHF RDTSCP TSCI

        Maybe this will help you in this or other case.

  3. Pike, I compiled the latest source without any issues this morning, but I have no way of testing how well it works. Sorry about that. In case somebody wants to test my build, just say so and I’ll upload it somewhere, but I suppose my build will be identical to everyone else’s.

  4. In case it’s of use, here are the CPU features from a variety of Mac Pro machines I have to hand. I’m in the process of setting up VS2013 and NASM to do my own testing.

    MacPro1,1 (Xeon 5150 @ 2.66GHz)
    FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX EST TM2 SSSE3 CX16 TPR PDCM

    SYSCALL XD EM64T LAHF

    MacPro1,1 (Xeon 5160 @ 3.00GHz)
    FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX EST TM2 SSSE3 CX16 TPR PDCM

    SYSCALL XD EM64T LAHF

    MacPro5,1 (Xeon W3530 @ 2.8GHz)
    FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1 SSE4.2 POPCNT

    SYSCALL XD EM64T LAHF RDTSCP TSCI

    MacPro5,1 (Xeon W3680 @ 3.33GHz)
    FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1 SSE4.2 POPCNT AES PCID

    SYSCALL XD 1GBPAGE EM64T LAHF RDTSCP TSCI

    I’ve got a MacPro2,1 (all these are genuine, BTW) that I can report back on too, if needs be.

    • Thanks. I disassembled the routine that I found in Apple’s boot.efi ands used that, because even on a Haswell processor there are times that it hangs (perhaps due to Intel Errata HSD93).

  5. Also, just to mention that I’ve successfully compiled and used the latest version from GitHub on the lowliest of the MacPro1,1 machines listed above. Not had much chance to test iMessage and the like, but I’m definitely sat at a working desktop.

    Not only that, it’s a working desktop using the old Nvidia 7300GT, because I forgot to swap it out. It’s pretty terrible, but if you were using it as a server, it would suffice!

    Screenies are here: http://forums.macrumors.com/showpost.php?p=20032753&postcount=703

  6. Pike, if I’m not mistaken, line 464 of BootArgs.cpp is missing an equal sign. Such as it is now, it simply says “ecx 0”. If that is changed to “ecx = 0”, it will compile. The relevant boot.efi has 465.408 bytes (Debug/Win32 configuration).

      • After the shiny white logo, how much effort to patch this loader to a more generic (u)efi64 environment is it even possible?

        One capable of directly booting a linux efi stub 64bit kernel image instead of the osx mach_kernel which is hardcoded in the current, or even “chainload” grub2 efi64 or windows7/81/10 bootmgfw.efi64 loaders? In other words, lifting/enhancing the current native 32bit efi apple firmware limitations with a minimal efi64 compatible one…

      • Hi,

        But isn’t that what Clover does already?

        Also. Don’t forget that the work that I have to do to get the white Apple logo displayed, is going to take some time. In fact. It is going to take a lot more time than anyone else has done for this boot loader. And that in like two years or so. Not to mention that I don’t even own an old MacPro myself, so my involvement will end when the todo list is completed.

  7. Feedback: everything OK with the ‘silly’ version from Oct, 7.

    Compiling was flawless and I could boot the patched Installer as well as boot the with it installed Yosemite on my MBP2,2.

  8. “But isn’t that what Clover does already?”

    True it enhances current 32 or 64 efi environments, but is doesn’t transform an 32bit efi into 64bit efi like this bootloader does. It might eventually be added as a module or plugin to Clover EFI but I guess it has to be a non MS VS based code and a new clover 3.0 strategy before it might attract attention.

    Your efforts already are incredible appreciated, I was just thinking up load if it would do anything if OS X kernel was replaced by a linux efi stub 64bit ubuntu or fedora kernel for instance and if there just needs to be code removed like compression mechanism etc or a lot code needs to be added…

    • Sorry for the request of this enhancement (boot efi 64 linux distro’s with your bootstub) a while ago, it might be working already for Linux 3.15 and is called CONFIG_EFI_MIXED! I just missed the post on Phoronix although I read it daily.

      http://www.phoronix.com/scan.php?page=news_item&px=MTY0OTI

      Will let you know if 64bit ubuntu 14.10 or 14.04.2 will boot on the macpro 1,1/2,1/macbook2,1 albeit with grub efi 32 booting a 64bit linux kernel.

      • Update: 64bit linux kernel runs on 32bit efi Mac “CONFIG_EFI_MIXED”

        Successful test on MacBook 2,1 with 32bit efi which was already able to load grub2 efi 32 (grub2 from ubuntu i686 14.04.1 release) and from there it was also able to boot a 64bit ubuntu 14.10 release not only i686 32bit ubuntu versions.

        But also ubuntu 14.04.1 64bit was able to boot from grub2 32 i386-efi although its kernel is only 3.13, and it config doesn’t contain the CONFIG_EFI_MIXED but only EFI_STUB? This behaviour is also confirmed see 1341944.

        Installing ubuntu 64 (probably fedora too) booted from efi 32 firmware leaves you with a non booting system because it installs a 64 bit efi grub2 version! You have to manually install grub2 32 i386-efi and also on a gpt/fat partition using correct location and filenames /efi/boot/bootia32.efi!

        https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1341944

  9. Feedback ‘unused logo/clut data’ version Oct, 9: Compiling failed – error in line 110 & 137 Console.cpp Syntax ‘int’ should follow to ‘;’ as well as ‘UINT8’ should follow to ‘;’ .

    The Console.cpp error refers also to AppleLogo.h .

  10. Pingback: The first Mac Pro will also soon benefit from OS X Yosemite - SiteJunkiesApple

  11. Pingback: Les premiers Mac Pro pourront aussi bientôt profiter d’OS X Yosemite | iDownloadSystem

Leave a comment