Mac OS 9 Lives

Classic Mac OS Software => Hacking the System, Mac OS 9.3, and Beyond ! => Topic started by: MacTron on June 14, 2017, 08:34:11 AM

Title: The Apple CPU Plugins and the 7447/7448
Post by: MacTron on June 14, 2017, 08:34:11 AM
The Apple CPU Plugins file deals with some specific characteristics of some CPUs as are dual CPU support, power management and CPU deep sleep.

The 7447/7448 was available after the last Mac Os 9.2 version, so it don't have support for them. It can be used tricking OpenFirmare into think that's a 7455 wich is fully supported by Mac Os 9.2.This trick works surprisingly well, but it's not compatible with The Apple CPU Plugins file and lead to a startup crash. So it have to be removed from the extensions folder. ( Except for the Sonnet 7447 upgrades because a special module exist for them)

The main difference between 7455 and the 7447/48 are that the 7447/48 lacks L3 interface, and to try to minimize the drawbacks of this the 7447 doubles the L2 cache, up to 512Mb, and the 7448 quadruples the L2 size up to 1024 Mb. (Which is not enough IMHO)

Once the Openfirware is patched we still see a startup dialog box  remembering us that there is a problem with the memory cache, besides this reminder everything works OK.(If you  get bored about this dialog, you can get rid of it deleting the -1650 item in the ALRT resuorce into the system file)

The drawback of disabling Apple CPU plugins file is that we lost the CPU power management, but this is not a big inconvenient as 7447/48 includes it's own power management in hardware ( I think that's the main cause of incompatibility with the CPU Plugins). But the real main drawback is that we lost the dual CPU support. So most duals 7447/48 only work as singles in Mac Os 9.


Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: MacOS Plus on June 14, 2017, 09:49:57 AM
  Strangely, I don't think I've ever seen that cache dialog box appear on any of my systems.  I am very curious to know what the differences are between the approaches by the various third-party CPU manufacturers.  They seem to have all worked out the necessary patches in slightly different ways seeing as the patches don't appear to be compatible between different brands.  Particularly the Apple CPU Plugins file - Sonnet sorted it out for their own units but for some reason this does not extend capabilities to other brands.  The CPU hardware can't be wildly different given the constraints they were working within.

  ELN was asking for links to the various firmware patchers for these later CPUs.  Let's see if we can pull that together in this thread.  If no one else does it before I return home tonight, I will link the Giga Designs and Sonnet software if necessary.
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: MacTron on June 14, 2017, 10:05:52 AM
... I will link the Giga Designs and Sonnet software if necessary.
Great :) , Here it is the NewerTech:

https://www.adrive.com/public/PVNy3F/NewerTech.toast.sit
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: likanen on June 14, 2017, 12:48:52 PM
I posted this link on another thread (where I'm trying to decompile the driver to understand what it does) but here is the link to Sonnet G3/G4 Extension v 3.1

http://download.system7today.com/ce_install_v31.sit
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: MacOS Plus on June 14, 2017, 09:54:18 PM
Giga Designs 7447a Version 2.1.0 (must be run in OS X, optionally enables OS 9 booting via separate PRAM patch from there):

https://drive.google.com/open?id=0BwMW-pNhRwrdMS1ieU5aVGVlRU0 (https://drive.google.com/open?id=0BwMW-pNhRwrdMS1ieU5aVGVlRU0)

  This archive includes Giga-Meter 1.0.1, and also a reference document for voltage jumper settings.  When booting OS 9 you must remove the Apple CPU Plugins file from the Multiprocessing folder in System->Extensions and run in single-processor mode.

For completeness' sake, Sonnet OS X versions are still available on their website here:

http://www.sonnettech.com/support/kb/kb.php?cat=315&expand=_a3_b400_b153&action=a3#a3 (http://www.sonnettech.com/support/kb/kb.php?cat=315&expand=_a3_b400_b153&action=a3#a3)

  Version 3.1 is for OS X 10.3-10.4, while Version 3.2 is required for 10.5.  Both the 'standard' CPU model and the MDX model are supported by these shared installers.  OS 9 booting is integrally enabled as part of these firmware updaters.  The OS 9 version of the Sonnet installer is no longer hosted there, but likanen provided a link to it in the previous post:

I posted this link on another thread (where I'm trying to decompile the driver to understand what it does) but here is the link to Sonnet G3/G4 Extension v 3.1:
http://download.system7today.com/ce_install_v31.sit

  You need that to get the OS 9 extension if you were to run the firmware update from OS X first.  When booting OS 9 you either need to remove the Apple CPU Plugins file from the Multiprocessing folder in System->Extensions and run in single-processor mode, or to enable dual processing you need to use the alternate hacked version of the file:

https://drive.google.com/open?id=0BwMW-pNhRwrdbFI3bXAzWU8zRzg (https://drive.google.com/open?id=0BwMW-pNhRwrdbFI3bXAzWU8zRzg)

  The hacked file is flagged as Apple Version 3.5 from "Mac OS CPU Software 4.5".  I don't know which version of the Mac OS or installer/updater came with the original 'untouched' 3.5 version of the file.  If someone can track down the original for comparison, that would be very helpful.  If the alterations to this file can be incorporated into a later revision of that file then it may be able handle more versions of the dual CPU upgrades and also more gracefully.  The latest standard version of the file I have is 4.0.1 which came from the Unsupported G4s 9.2.2 ASR image.

  On a related note, I'd really love to get hold of a Giga Designs 1.33GHz 7455 upgrade for MDD just for completeness' sake of my collection.  The following firmware updater Version 3.0.1 says it extends compatibility beyond 7447a to include 7455 and 7448 CPUs and still allows the OS 9 PRAM patch:

https://drive.google.com/open?id=0BwMW-pNhRwrdTkFUUjRlS1MwNms (https://drive.google.com/open?id=0BwMW-pNhRwrdTkFUUjRlS1MwNms)

  I never used this later version because the earlier one I linked above was sufficient for my 7447a upgrade to work.  It should prove interesting to dig around inside this one though.
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: GaryN on June 15, 2017, 04:58:40 PM
Lat me add a note to make this all even more confusing:
Having been mystified by the inability of my Sonnet MDX to function in OS9 after I followed the instructions exactly, I spoke to the guy I bought it from. He remembered having the same issue AND having talked to Sonnet at the time where he learned that:

Evidently, the Sonnet install procedure was / is:
1) Run the firmware updater in OSX. It runs ONLY in OSX. If you don't have OSX on your machine, you have to either install it temporarily or boot it over FW.
   Only then can you:

2) Run the OS9 installer which was / is supposed to exchange the Apple CPU plugins file with the Sonnet modified one. BUT:
   Guess what? That part never worked! The modified CPU file was not even included in many of the MDX packages! Someone at Sonnet evidently decided that anyone who was going to spend that kind on money on a CPU upgrade would certainly only be using OSX? Nobody knows. Whatever reason it is:

The Sonnet OS9 "installer" only installs the Sonnet OS9 extension and that extension does nothing more than run the little "Cresendo" animation at startup! So:

3) You got to call Sonnet and ask them what the hell was wrong. They would then apologize and link you to the CPU file.

I guess this was all not that big of a deal when they were still actually making these thing and there were people there that were aware of everything. Ten years later though, here we all are having to figure it all out.

Just another day in OS9 land…
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: MacTron on June 16, 2017, 08:12:24 AM
This is the only difference between Apple and Sonnet Apple CPU plugin 4.5:

(http://macos9lives.com/smforum/index.php?action=dlattach;topic=3878.0;attach=4446;image)
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: Daniel on June 16, 2017, 10:24:00 AM
Seriously? Only a half-byte difference? We really should disassemble that file. I hope that all the necessary code is contained in the cpu plugins file so we don't have to go all over the place to understand it. Unfortunately, the word "plugins" suggests that the file is an add on component to some other piece of code. Any idea where that code would be?
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: MacOS Plus on June 16, 2017, 12:04:31 PM
Thanks for the detail, MacTron!

  I compared the resource of the original Apple CPU Plugins 3.5/CPU Software 4.5 file and the later one from 9.2.2, Apple CPU Plugins 4.0.1/CPU Software 5.9.  The same code line is present but has moved a bit.  ResEdit revealed the following:

Code: [Select]
                      |
line 006E38 - 6105 1CFF 9BDF 0F57 (Orginal 3.5/CPU Software 4.5)
line 0070C8 - 6105 1CFF 9BDF 0F57 (Original 4.0.1/CPU Software 5.9)
                      |

  I then made the same change to the character at the new position:

Code: [Select]
                      |
line 006E38 - 6105 1CFB 9BDF 0F57 (Sonnet hacked 3.5/CPU Software 4.5)
line 0070C8 - 6105 1CFB 9BDF 0F57 (Test hacked 4.0.1/CPU Software 5.9)
                      |

  This allowed the latest version of the Plugins file to enable the Sonnet Dual 1.8 on my MDD and Sawtooth systems just as with the previous one!  I have no idea yet if there's anything gained with the newer file, but there seem to be no changes to stability.  You guys can test this for yourselves and see.
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: ELN on June 16, 2017, 05:39:02 PM
Very nice three-way merge, MacOS Plus!

The CPU plugin is loaded by the Code Fragment Manager at boot, held in the system heap, and registered with the NanoKernel (this is logged). The NK delegates power management functions to it, either through a special syscall interface of through its own internal calls. Uniquely, the cpup is allowed to run at "true" PowerPC interrupt time (not emulated 68k interrupt time), in PowerPC supervisor mode, but within the blue logical address space. This is naturally necessary for code that is loaded by the high-level OS but responsible for controlling low-level PowerPC features.

The reason why I have been a tad shy about disassembling the CPU plugins is that the Core99 plugin is pretty darn big. But I have a few ideas about a new, lightweight disassembler that can round-trip PEF binaries like this one. In the meantime, MacOS Plus, maybe try feeding that hex into the Online Disassembler to see what we're dealing with? Plus about 32 instruction either side would be best.
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: MacOS Plus on June 16, 2017, 08:45:47 PM
  Online Disassembler wasn't responding for a while but it's back online now.  I know nothing about assembly language, so you'll have to see if it means anything to you.  I'm going to quote just a block of the raw hex code because the Online Disassembler won't let me copy the resultant text.  This is from the Sonnet hacked 3.5/CPU Software 4.5 version of the file:

Code: [Select]
Preceeding lines -->9BDF0F548062FFFC386300AD480019A9804100142C030000418201489BDF0F579BDF0F544800013C813F0B90388003FF612300F5909F0E3C281D1100907F0B904180000C612501F590BF0B90281D020341800010807F0F502C030005408201049BDF0F54480000FC811F0B9038600FFF61040CFF907F0E3C71250F0F28850200909F0B90418500189BDF0F5461061CFF9BDF0F5790DF0B904800001848001A09804100142C030000418200089BDF0F548062FFFC386300C5480018FD804100142C030000418200089BDF0F5483BF0B9063BD200093BF0B9048000088811F0B9038800FFF61030CFF909F0E3C71290F0F288901FF907F0B90418500189BDF0F54

Altered line -->61051CFB9BDF0F57

Following lines -->90BF0B90480000202C090200408200184800198D804100142C030000418200089BDF0F548062FFFC386300C548001881804100142C030000418200209BDF0F544800001883BF0B903860007F63BD400D907F0E3C93BF0B9038210050800100087C0803A6BB41FFE84E8000207C0802A6BFC1FFF8900100089421FFC083E2FFC8386000443BC0000048001BFD80410014907F00002C030000408200084800010C3863000C48001BF980410014813F00002C030000418200147D234B7848001BB180410014480000E43869000448001BE980410014813F00002C030000418200208069000C48001BE980410014807F000048001B7D80410014480000B093C9001038E00000819F00003900000093CC0014
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: ELN on June 16, 2017, 10:09:44 PM
Once again, I'm away from the Lair. My best guess would be that this is model validation code. Great find!

Anyone on this board want to learn PowerPC assembly? I'd be happy to help learners out with their disassembly projects. It would be a very useful skill for new-hardware hacking, such as on these CPU plugins. I'd place it somewhere between BASIC and C in difficulty (yes really).
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: IIO on June 17, 2017, 04:42:12 PM
Unfortunately, the word "plugins" suggests that the file is an add on component to some other piece of code. Any idea where that code would be?

it is an INIT, right? so you should see what it is loading and/or what it is patching on startup using a debugger.
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: MacTron on June 18, 2017, 08:48:24 AM
This allowed the latest version of the Plugins file to enable the Sonnet Dual 1.8 on my MDD and Sawtooth systems just as with the previous one!  I have no idea yet if there's anything gained with the newer file, but there seem to be no changes to stability.  You guys can test this for yourselves and see.
I'm going to try this on my Sawtooth with Newertech dual 7448 ... when this machine successfully start up  :-\, because it's terribly problematic lately, I'm tired of interchange motherboards CPUs and power sources every time I wish to use it.  :-\
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: MacOS Plus on June 18, 2017, 06:52:16 PM
  Did the Sonnet-hacked 3.5/4.5 file enable dual CPU with the Newertech?  Unfortunately I don't own one of those so I've never been able to try that combination.  Neither that nor the 4.0.1/5.9 file did anything for my Giga Designs 7447a - both cause startup hard-freeze near end of extensions load.  I gather that something about Giga's method of patching the firmware and/or PRAM doesn't align with the way Sonnet did it.  It's probably a stupidly simple fix once we know the details.  For now at least I know my hacked 4.0.1/5.9 file works with the Sonnet dual 1.8's.

  Was there documentation available anywhere for the various Plugins files mentioning changes/additions to it between any versions?

  One other thing - I was poking around the net and was reading the PDF manual for the PowerLogix CPUs.  I was reminded that the CD from them was quite interesting in that it features some sort of text-based 'mini-boot' solely for the purpose of making the required patches without having to boot the main OS.  I think nanopico had said he had a copy of it somewhere, I may also - I have to go digging.  PL's approach broke down the patches slightly further than the other brands, possibly making it easier to sort out exactly what each is performing.  The mini-boot was intriguing to me from the standpoint of its potential for a general purpose text-based diagnostic boot or pre-boot PRAM editor in place of having to directly enter Open Firmware with it's 'unfriendly' command language.
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: MacTron on March 17, 2018, 09:49:11 AM
The drawback of disabling Apple CPU plugins file is that we lost the CPU power management, but this is not a big inconvenient as 7447/48 includes it's own power management in hardware ( I think that's the main cause of incompatibility with the CPU Plugins). But the real main drawback is that we lost the dual CPU support. So most duals 7447/48 only work as singles in Mac Os 9.

Seems that this issue is going to be solved finally:


Mac OS 9 on a G4 does not directly control fans, or routinely monitor the CPU temperature. Fan control is delegated to a chip on the motherboard. The OS is only interested in the CPU temperature when the NanoKernel takes a "thermal event" interrupt on G4s that support this (later ones don't). The few calls to the GetCoreProcessorTemperature function are largely superfluous. In fact, the THRM registers that they depend on are absent on later G4s, causing the mini to crash when a CPU plugin is present.

The attached ROM contains the following NanoKernel hacks, specific to the 7447a:
  • Return an error for all calls to the CPU plugin's buggy core temperature getter
  • Enable CPU idling (previously the only G4s that could do this were the 7400/7410) -- this might be buggy?

Everyone should use this ROM. Now you can get rid of that hacked-up Apple CPU Plugins file that I posted earlier.

 ;D
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: DieHard on March 17, 2018, 11:58:51 AM
Quote
Seems that this issue is going to be solved finally:

Please tell me what apps this actually makes a difference for in  OS 9 ?

I will be shocked if the Dual CPU support in Cubase actually works as expected, it has been customary to simply turn it off.

So what issue is solved ?  Stability, or actual functionality is OS 9 with dual CPUs
Title: Re: The Apple CPU Plugins and the 7447/7448
Post by: MacTron on March 18, 2018, 12:58:56 PM
There is a very few apps that take full advantage of dual macs, (so I'm not a fan of dual CPUs)but when it does it can achieve up to 2x speed, as Cubase and Apple MPEG encoder. In the Cubase case it depends to much in your particular use of it. In some cases the hard disk speed or the RAM is more limitating factor than the CPU power...