Jump to content

How to boost the OS X boot process...


1,027 posts in this topic

Recommended Posts

This is a little reminder for me and to make more clear the situation to all of you.

 

SSD Drive(s) : No

Removing Unused Kexts : Not yet

DSDT Patching / Stripping : Ok

DSDT Loading : Revolution

Incorporating DSDT : Yes

Incorporating SSDT Table : No

Gathering Data : Ok

Text Spinner : Ok first: F , second: D

Boot Logo : 9 to 10 spin

Log files link

A First Test

I'm using Revolution on a P5KC with P5KR bios to enable ICH9 AHCI, on my board I can disable Audio (A), Lan (L), Jmicron Pata/Sata (J) and Firewire (F). I've made 3 or more reboot for each test at 32bit and the results are (in spins under the apple logo):

N1: 9,5 - 10 - 9

A: 8 - 8,5 - 8

L: 11 - 9,5 - 10

J: 9 - 9 - 9,5

F: 8,5 - 9,5 - 10,5 - 9,5

All:9 - 9 - 9 - 9,5

Verifying HPET compatibility : Ok (removed all suggestion)

Preparing for dsdt_patcher removal : Yes (already in Revolution 0.4)

 

SSDT:

SSDTv9.dsl.zip

 

Note: No EFI string

Master Chief,

 

I believe everything's gonna be OK with your child. Wish you and your family all the best and good luck.

Master Chief, I also forgot VoodooMonitor, so now we have these three non-vanilla kexts:

 

(1) lspci.kext (64-bit)

(2) LittleSnitch 2.2.05 service

(3) VoodooMonitor

 

that could be delaying boot times. While verbose, LittleSnitch doesn't seem to slow down the boot process that much, it's fast on-screen. Do you really thing it's a "sluggie"? (from slug+proggie)

Try to boot without the kexts and see what it does. I removed it because it did slow down the boot process yes.

 

Also, I get a message: mbinit: done (64 MB memory set for mbuf pool) any idea what this is?

Network memory pool (see: netstat -a).

 

Finally, should there be any delays between booting at 32-bit mode and 64-bit mode? Just to clarify this and take it out of the equation...

Here 64 bit takes more time and used more memory so it's not just speed what counts.

 

Edit: Thanks for the kind words folks. We're not there yet. Might take months to recover. A long way ahead of us so to speak.

I've managed to change the spinner before the apple logo with letters but I cant compile without errors if use also this code on the next line after the spinner:

static char		  string[2] = {'\0', '\0'};

I've found what to do to compile right there is a line static char string [3] = that needs to be changed.

Now it's ok.

 

i've also removed in this order from Revolution v0.4 :

ext2fs.o ntfs.o msdos.o commenting some lines in disc.c

usb.o editing ehci & uhci line in pci_setup.c

ati.o & nvidia.o editing pci_setup.c

ufs.o ufs_byteorder.o \ nothing to change

pci_setup.o comment in fake_efi.c:

// extern void setup_pci_devs(pci_dt_t *pci_dt);
/code]
and
[code]/*void setupEfiDevices(void)
{
setup_pci_devs(root_pci_dev);
}*/

and

//	setupEfiDevices();

 

nbp.o

/boot2/boot.c

commented this:

	if ( (gBootFileType == kNetworkDeviceType) && gUnloadPXEOnExit ) {
//		if ( (ret = nbpUnloadBaseCode()) != nbpStatusSuccess )
//		{
		printf("nbpUnloadBaseCode error %d\n", (int) ret);
		sleep(2);
//		}
}

and this:

//	nbpUnloadBaseCode();

saio_internal.c commented this line:

/* nbp.c */
// extern UInt32 nbpUnloadBaseCode();
// extern BVRef  nbpScanBootVolumes(int biosdev, int *count);

sys.c commented this:

  if (bvr == NULL)
 {
/*   bvr = nbpScanBootVolumes(biosdev, count);
if (bvr != NULL)
{
  gBootFileType = kNetworkDeviceType;
}
 */}

 

now let's see if it still boots

 

It boot's ok, but I don't see any difference in boot time.

 

For what i can understand this was done to have a smaller bootloader, now it is: 147.776 byte instead of: 148.416 byte 26.360 byte less am I on the good way?

 

Is this the Revolution 0.5 you have in your sign or is the one with the ssdt injected?

 

 

EDIT: I'm trying to avoid the use of smbios.plist and so i'm edting the default value in smbios_patcher.c to match what i have. Then i'll try to eliminate the use of c.a.b.p but i need to know how to put my SystemUUID as default, and to make the sleep fix active by default.

...

i've also removed in this order from Revolution v0.4 :

ext2fs.o ntfs.o msdos.o commenting some lines in disc.c

usb.o editing ehci & uhci line in pci_setup.c

ati.o & nvidia.o editing pci_setup.c

ufs.o ufs_byteorder.o \ nothing to change

pci_setup.o comment in fake_efi.c:

...

 

now let's see if it still boots

Removing objects from Makefile is one thing you have to do yes, but the goal is to change the Chameleon's source code in a way that you can compile the boot2 folder... as if nothing really changed. So instead of commenting out void setupEfiDevices(void) I changed it like so:

#if CHAMELEON
void setupEFIDevices(void)
{
setup_pci_devs(root_pci_dev);
}
#endif

Note that I did change the function name, but it's still there. And instead of doing this for most of the Chameleon features, I used feature specific stuff like: #if RAMDISK_SUPPORT, #if CDBOOT_SUPPORT, #if LANBOOT_SUPPORT, #if HIBERNATE_SUPPORT, #if TEXT_SPINNER and of course GUI_SUPPORT

 

This way people (like me) can exclude certain features when they don't want / need it. Much more fun building Chameleon this way. It does add a layer of complexity, but mostly for junior developers and other people new to this kind of development. It is however just the logical thing to do.

 

It boot's ok, but I don't see any difference in boot time.

For what i can understand this was done to have a smaller bootloader, now it is: 147.776 byte instead of: 148.416 byte 26.360 byte less am I on the good way?

It's a start yes. And booting from a slower device, like an USB memory stick, will make it painfully clear that Chameleon has speed issues. Remember this; The faster the system the less you gain here.

 

p.s. Maybe I need my breakfast first, or a head examination, but here 148.416 - 147.776 = 640 and not 26.360 Typo?

 

Is this the Revolution 0.5 you have in your sign or is the one with the ssdt injected?

That's Revolution 0.6 (already) with DSDT and SSDT injection (incorporated).

 

EDIT: I'm trying to avoid the use of smbios.plist and so i'm edting the default value in smbios_patcher.c to match what i have. Then i'll try to eliminate the use of c.a.b.p but i need to know how to put my SystemUUID as default, and to make the sleep fix active by default.

 

You can replace the default static EFI_CHAR8 const SYSTEM_ID[] = {...}

with the UUID of your liking for this. This is also what I did.

 

BTW: What sleep fix are you talking about?

BTW: What sleep fix are you talking about?

 

Not sleep, sorry, your Restart FACP table. I use RestartFix=Yes in c.a.B.p . For now i've solved using the system c.a.B.p with all the option i need in Kernel Flags.

I'll try to add the UUID in the code.

 

Yes dimensions was a typo,

Revolution 0.4.2 (before removing anything) is 147.776 bytes

Revolution 0.4.4 (with the editing) is 121.728 bytes

147.776-121.728=26.048

I have something for people to look at:

Feb  3 11:57:29 localhost kernel[0]: npvhash=4095
Feb  3 11:57:29 localhost kernel[0]: PAE enabled
Feb  3 11:57:29 localhost kernel[0]: 64 bit mode enabled
Feb  3 11:57:29 localhost kernel[0]: Darwin Kernel Version 10.2.0: Tue Nov  3 10:37:10 PST 2009; root:xnu-1486.2.11~1/RELEASE_I386
Feb  3 11:57:29 localhost kernel[0]: vm_page_bootstrap: 970449 free pages and 78127 wired pages
Feb  3 11:57:29 localhost kernel[0]: standard timeslicing quantum is 10000 us
Feb  3 11:57:29 localhost kernel[0]: mig_table_max_displ = 73
Feb  3 11:57:29 localhost kernel[0]: AppleACPICPU: ProcessorId=1 LocalApicId=0 Enabled
Feb  3 11:57:29 localhost kernel[0]: AppleACPICPU: ProcessorId=2 LocalApicId=1 Enabled
Feb  3 11:57:29 localhost kernel[0]: AppleACPICPU: ProcessorId=3 LocalApicId=2 Enabled
Feb  3 11:57:29 localhost kernel[0]: AppleACPICPU: ProcessorId=4 LocalApicId=3 Enabled
Feb  3 11:57:29 localhost kernel[0]: calling mpo_policy_init for Quarantine
Feb  3 11:57:29 localhost kernel[0]: Security policy loaded: Quarantine policy (Quarantine)
Feb  3 11:57:29 localhost kernel[0]: calling mpo_policy_init for Sandbox
Feb  3 11:57:29 localhost kernel[0]: Security policy loaded: Seatbelt sandbox policy (Sandbox)
Feb  3 11:57:29 localhost kernel[0]: calling mpo_policy_init for TMSafetyNet
Feb  3 11:57:29 localhost kernel[0]: Security policy loaded: Safety net for Time Machine (TMSafetyNet)
Feb  3 11:57:29 localhost kernel[0]: Copyright © 1982, 1986, 1989, 1991, 1993
Feb  3 11:57:29 localhost kernel[0]: The Regents of the University of California. All rights reserved.
Feb  3 11:57:29 localhost kernel[0]: MAC Framework successfully initialized
Feb  3 11:57:29 localhost kernel[0]: using 16384 buffer headers and 4096 cluster IO buffer headers
Feb  3 11:57:29 localhost kernel[0]: IOAPIC: Version 0x20 Vectors 64:87
Feb  3 11:57:29 localhost kernel[0]: ACPI: System State [s0 S3 S4 S5] (S3)
Feb  3 11:57:29 localhost kernel[0]: RTC: Only single RAM bank (128 bytes)
Feb  3 11:57:29 localhost kernel[0]: mbinit: done (64 MB memory set for mbuf pool)
Feb  3 11:57:29 localhost kernel[0]: From path: "uuid", 
Feb  3 11:57:29 localhost kernel[0]: Waiting for boot volume with UUID 00000000-0000-0000-0000-000000000000
Feb  3 11:57:29 localhost kernel[0]: Waiting on <dict ID="0"><key>IOProviderClass</key><string ID="1">IOResources</string><key>IOResourceMatch</key><string ID="2">boot-uuid-media</string></dict>
Feb  3 11:57:29 localhost kernel[0]: com.apple.AppleFSCompressionTypeZlib load succeeded
Feb  3 11:57:29 localhost kernel[0]: AppleIntelCPUPowerManagementClient: ready
Feb  3 11:57:29 localhost kernel[0]: Got boot device = IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/SATA@1F,2/AppleAHCI/PRT0@0/IOAHCIDevice@0/AppleAHCIDiskDriver/IOAHCIBlockStorageDevice/IOBlockStorageDriver/SAMSUNG HD103SJ Media/IOGUIDPartitionScheme/Snow Leopard Boot@2
Feb  3 11:57:29 localhost kernel[0]: BSD root: disk1s2, major 14, minor 5
Feb  3 11:57:29 localhost kernel[0]: FireWire (OHCI) VendorID 1106 ID 3044 built-in now active, GUID 0000000000000000; max speed s400.
Feb  3 11:57:29 localhost kernel[0]: systemShutdown false
Feb  3 11:57:31 Chiefs-Mac-Pro kernel[0]: Previous Shutdown Cause: 0
Feb  3 11:57:31 Chiefs-Mac-Pro kernel[0]: NVDANV50HAL loaded and registered.
Feb  3 11:57:31 Chiefs-Mac-Pro kernel[0]: DSMOS has arrived
Feb  3 11:57:31 Chiefs-Mac-Pro kernel[0]: AppleIntelCPUPowerManagement: initialization complete
Feb  3 11:57:33 Chiefs-Mac-Pro kernel[0]: AppleYukon2: Marvell Yukon Gigabit Adapter 88E8056 Singleport Copper SA
Feb  3 11:57:33 Chiefs-Mac-Pro kernel[0]: AppleYukon2: RxRingSize <= 1024, TxRingSize 256, RX_MAX_LE 1024, TX_MAX_LE 768, ST_MAX_LE 3328
Feb  3 11:57:33 Chiefs-Mac-Pro kernel[0]: yukon: Ethernet address 00:00:00:00:00:00
Feb  3 11:57:34 Chiefs-Mac-Pro kernel[0]: Ethernet [AppleYukon2]: Link up on en0, 100-Megabit, Full-duplex, No flow-control, Debug [796d,6c08,0de1,0200,41e1,4000]

Remember this: It took up to 19 seconds when I started and now only 5 seconds. That to me is a pretty amazing step forward.

 

I am also pretty sure that implement a hard coded / patched SMBIOS table will help take off another second. Yeah. Booting has never been this exiting. And you know what; My sons brand new quad code iMac is slower. Ha! Eat that Apple.

 

Not sleep, sorry, your Restart FACP table. I use RestartFix=Yes in c.a.B.p . For now i've solved using the system c.a.B.p with all the option i need in Kernel Flags.

 

The RestartFix=Yes option is never going to work in Revolution because it is pointless to have options for features like this. Yes. We want to be able to restart our hacks, but don't need to have such parameter in whatever file they come up with.

 

---------------------------------------------------------------------------------------------------------------------

 

Edit: Why have all these different locations for stuff like /Extra/ et all when you only need it on your boot drive? I don't get it. I mean your hardware surely isn't going to change when you boot from drive 3 instead of 2 or 1? That would be something wouldn't it.

 

Yeah yeah. Now some of you say: But I have 10.5.8 on one drive and 10.6.2 on another. Which is fine because it loads the stuff it needs from the boot drive. Whatever drive that is. But not here, because I only have it on my USB stick. Much cleaner. Oh yeah. You can keep your EFI partition tricks right where they are... in the tool box for people who like to do stuff them selfs :-)

Edit: Why have all these different locations for stuff like /Extra/ et all when you only need it on your boot drive? I don't get it. I mean your hardware surely isn't going to change when you boot from drive 3 instead of 2 or 1? That would be something wouldn't it.

 

Yeah yeah. Now some of you say: But I have 10.5.8 on one drive and 10.6.2 on another. Which is fine because it loads the stuff it needs from the boot drive. Whatever drive that is. But not here, because I only have it on my USB stick. Much cleaner. Oh yeah. You can keep your EFI partition tricks right where they are... in the tool box for people who like to do stuff them selfs :-)

I tried to boot from usb and I have a little slower boot up time (12 spin instead of 10 on average) but it's better than i was hoping for.

It's surely more clean and i can have more usb with different bootloader so it's easy to test new version without any risk.

 

I don't know, because i've not yet tried if I still need to have boot in the root of the volume were is installed SnowLeopard. I think not because boot is already loaded when i chose the volume to boot, but what about boot2 or boot1h?

Another "problem" is I need to install Attansic1LEthernet.kext in S/L/E is there a method of avoid this, maybe using a .mkext with all the .kext i use on the usb?

 

Now my boot is like this:

 

USB Bootloader 1:

 

/boot (chameleon2RC5pre8)

/com.apple.Boot.plist

/dsdt.aml (ExtremeInsanely P5K Pro thread based)

/smbios.plist

/Extensions/fakeSMC.kext (2,5 debug=false)

/Extensions/LegacyHDAController.kext

/Theme/Nice/

 

USB Bootloader 2:

 

/boot (Revolution 0.4."5" smbios value & my UUID made default in boot)

/Extensions.mkext (fakeSMC.kext, LegacyHDAController.kext)

/ACPI/SSDT.aml (with all the device and id injections and P-State value)

 

SnowLeo volume:

 

/S/L/E/Attansic1LEthernet.kext

/S/L/E/AppleHDA.kext (not need, just to speed up the boot)

I tried to boot from usb and I have a little slower boot up time (12 spin instead of 10 on average) but it's better than i was hoping for.

It's surely more clean and i can have more usb with different bootloader so it's easy to test new version without any risk.

What is the difference in load time between USB 1 and 2?

 

And since we don't do anything with /Extra/Extensions and /Extra/Extensions.mkext anymore... you either have to add the required kext files to /System/Library/Extensions or use symbolic links. This will change but not in this update.

 

p.s. I e-mail you a test version of Revolution v0.6 so that you can have a go with it. Which of course bounced back because gmail won't accept ZIP attachments. Stupid but true.

What is the difference in load time between USB 1 and 2?

 

And since we don't do anything with /Extra/Extensions and /Extra/Extensions.mkext anymore... you either have to add the required kext files to /System/Library/Extensions or use symbolic links. This will change but not in this update.

 

p.s. I e-mail you a test version of Revolution v0.6 so that you can have a go with it. Which of course bounced back because gmail won't accept ZIP attachments. Stupid but true.

 

I don't know how to boot with usb1, if i disable in bios usb2 i get a lot of error at boot, and so i don't know if it's slow for the slower transfer rate or for the errors...

Now I have all in S/L/E but it seems a little slower just one round more...

Just a note with Revolution v0.4 i need to keep /Extra/ACPI/SSDT.aml on the OsX volume cause it not loads from the usb.

 

I was looking for the mail, wasn't aware of this problem, with gmail... really stupid. Renaming it archive.zip.jpg doesn't work, does?

I don't know how to boot with usb1, if i disable in bios usb2 i get a lot of error at boot, and so i don't know if it's slow for the slower transfer rate or for the errors...

More work for Rekursor I guess.

 

Now I have all in S/L/E but it seems a little slower just one round more...

That is very strange because not having to open Extensions.mkext (and the lack of the extra checks for it) should make it faster.

 

Just a note with Revolution v0.4 i need to keep /Extra/ACPI/SSDT.aml on the OsX volume cause it not loads from the usb.

I have incorporated my SSDT.aml so I wouldn't know if this was fixed with any of the later updates, but I will verify this later today.

 

I was looking for the mail, wasn't aware of this problem, with gmail... really stupid. Renaming it archive.zip.jpg doesn't work, does?

I tried a few things but no go. And I won't attach it here simply because I'm not done with it. Just mail me from a different account when you still want to give it a go.

More work for Rekursor I guess.

I have incorporated my SSDT.aml so I wouldn't know if this was fixed with any of the later updates, but I will verify this later today.

 

I'm using the sources you posted in the P5K pro thread so it's based on RC4 not on the last RC5, so the SSDT loading is the one you addd not the one rek's is adding to RC5.

 

I you think it's better to start with a "fresh" chameleon source, maybe we need to use all the same, or not?

 

It's all day that i have strange results fron my test, actually I cant anymore restart with Revolution but i have sleep and ibernation working, with Rc5pre8 i can't sleep but i can restart...

Time to clean up something...

I'm using the sources you posted in the P5K pro thread so it's based on RC4 not on the last RC5, so the SSDT loading is the one you addd not the one rek's is adding to RC5.

I have e-mailed you Revolution 0.6.15 and today I hope to fix verbose mode with 0.6.16 (boot prompt shows up already, but isn't working yet. Should be fine later today).

 

I you think it's better to start with a "fresh" chameleon source, maybe we need to use all the same, or not?

I used Chameleon RC4 because it is the latest official release. And I will keep using this release until something better comes up, or abandon the official releases altogether and only use whatever I need from it (I'm not too happy with some of the patches I see popping up).

 

Let's take one simple example. Let's take the safe_malloc patch that went in recently. Not only enables my implementation you to reduce boot(2) with 768 bytes. Which might not look like a lot, but I need it for the in-BIOS version of Revolution. But more importantly: When was the last time you, or anyone else here, have seen this memory allocation error message? Never I presume. Which begs the question: Should we even implement it in non-debug versions? I would say no.

I have e-mailed you Revolution 0.6.15 and today I hope to fix verbose mode with 0.6.16 (boot prompt shows up already, but isn't working yet. Should be fine later today).

 

I've tried it after changing the UUID and the serial, made it to load as C2D instead of Xeon but it won't boot. I see only a flash of the black screen (the one that load boot0) without spinner tc. after that little flash it load a white backgroumd but the apple logo or the spinning wheel never appair. I can't see the boot menu or anything. I'll wait the 0.6.16 for verbose mode.

 

EDIT: I've tried without changing CPU type and other things but still nothing...

I've been following this thread with great interest from the start. So far I've been using the Revolution 0.4 files and have followed a similar path to scrax removing unused bits of code from chameleon where I can. It makes a big difference in boot time embedding a 'micro-DSDT' in the boot file rather than having it in /Extras. I'm down to 4.5 revs of the spinning counter after a momentary flash of the text spinner, and my boot file is 131KB in size (no embedded GUI).. The work you have both done here is great, hats off to you! I'd like to share any knowledge or code changes I've made. So far I've implemented the changes scrax listed in an earlier post (modding makefiles and removing hpet,nvidia,ati etc.) then proceeded to strip out unwanted code from smbiospatcher.c and replaced model defaults with my own so I no longer need an smbios.plist. I've tried to remove all code relating to the (unwanted) GUI in gui.c but I'm not sure what I'm doing and it hasn't worked out so far. I have made the changes to options.c as per rekursors latest revision from svn so i can use the keyboard to get into verbose or single-user mode whilst in Quiet Boot. If you need any help with this project or want me to post files/code the let me know. I'd love to try out / help bugfix the latest revision of Revolution if this is what 0.4 can do!

 

 

Master Chief in post 31 you mentioned that your goal was to change chameleon source so you can compile the boot 2 folder 'as if nothings really changed'. This included a code snippet. Sorry for being a bit thick here, could you clarify what you mean??

Guys,

 

Let me add that a lot has changed with the introduction of Revolution 0.6.15 Most of it are 'removals' in the usual style:

 

#if CHAMELEON (et all)

.. Chameleon code

#else

.. My stripped down / modified code for Revolution

#endif

 

Like I said earlier, in a previous post (#31 specifically) my goal is to be able to compile a 'normal' version of Chameleon RC4 from my sources, without first having to make all sort of changes. It should be as simple as launching make > logfile.txt and that is it.

 

This is not yet the case. Still working on it. The problem is that I got carried away. And a few times already. Which means that I still have work to do on some of the files. There's also source code where I still have to figure out what to do with it and if we need it or not.

 

I also want to remove ALL verbose and debug related text. I still have to finish my new API for it, but it will (eventually) enable you to select a preferred language from Rekursor's new pref panel. Enter easy and much anticipated translations!

Hi

still nothing to do with Revo 0.6.15 added my ssdt in acpi_patcher.h but it still not load even if the dsdt is the same as the 0.4 one that for me works, so there is something in the code removed that it's need for my configuration

Hi

still nothing to do with Revo 0.6.15 added my ssdt in acpi_patcher.h but it still not load even if the dsdt is the same as the 0.4 one that for me works, so there is something in the code removed that it's need for my configuration

Your configuration probably needs function scanDisks (in sys.c) and newFilteredBVChain (in options.c) so first change the: #if CHAMELEON into #if 1 // CHAMELEON

 

The next step would be to open boot.c and scroll down to function common_boot where you need to change one or two blocks. Specifically this one:

#if 1 // CHAMELEON
   // Create a list of partitions on device(s).
   if (gScanSingleDrive)
       scanBootVolumes(gBIOSDev, &bvCount);
   else
       scanDisks(gBIOSDev, &bvCount);

   // Create a separated bvr chain using the specified filters.
   bvChain = newFilteredBVChain(0x80, 0xFF, allowBVFlags, denyBVFlags, &gDeviceCount);

   gBootVolume = selectBootVolume(bvChain);
#endif

and the next one as well (I presume):

#if 1 // CHAMELEON
setBootGlobals(bvChain);
#endif

Does that work for you?

 

Note: I just made these changes myself so let me give it a try. Ok. It compiles and boot is now 65888 bytes. That's too big for me, but let me try to reboot. Done! It works. Give it a try.

 

Edit: Verbose and safe boot are functional again in Revolution 0.6.16 but I don't want a menu so I removed it. This also includes the help text (? at boot) which I think should be stored on disk somewhere, and we don't need it anyway.

 

I have attached version 0.6.16 for you, with the specific changes, so that you and other people here willing to have a go with it can. But let me remind people here that there are no bells and whistles in this version. No GUI, no disk selection menu nothing. It won't even read DSDT and/or SSDT anymore because we incorporate it in the boot file.

 

You can only add the boot drive UUID to: /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

but nowhere else. SMBIOS.plist is no more because we change the smbios_patcher.c before we compile it for our hardware!!!

 

Edit 2: There are two things you should change:

 

1) The hard coded serial number (MASTERCHIEF) in fake_efi.c

2) The hard coded test UUID in fake_efi.c

 

And you'll have to change these or iTunes won't work properly anymore! Also. Defining CHAMELEON alone won't be enough to compile a 'normal' Chameleon version from the attached source code, simply because I removed all unused files!

 

Edit 3: A new attachment, with minor improvements, is now available (fake serial number and UUID was changed back to the Chameleon default). I also changed graphics.c a little (you may need to change the default screen width / height) and this new version compiles to 65120 bytes (less than one 64KB segment).

Revolution_616b.zip

So I've been digging slowly into DSDT and will continue to but I just wanted to post and hopefully be able to get involved in this thread to learn and eventually contribute (even if it's something minuscule) . Thanks for your work Master Chief. And I saw something about you leaving the scene earlier? Is this still happening? If so- I wish you well.

So I've been digging slowly into DSDT and will continue to but I just wanted to post and hopefully be able to get involved in this thread to learn and eventually contribute (even if it's something minuscule) . Thanks for your work Master Chief. And I saw something about you leaving the scene earlier? Is this still happening? If so- I wish you well.

Thanks. And no I won't leave the scene (I was asked to stay by many people here). I do have other things to do as well, of course, but I'll keep trying to do as much as I can in my (now limited) free time.

Hi MC

 

Thanks for sharing the eagerly-awaited revolution code, you've done a great job in condensing the code. I'd only managed to get as far as 87392 bytes!!. I have modified acpipatcher.h with my DSDT.aml in little endian format and removed SSDT stuff from this file and acpipatcher.c as I dont need to modify SSDT on my mobo. All compiles OK but when I try to boot I get an immediate KP with the 'unable to find driver for this platform' error. Is there any other code I need to mod that you can think of??

Hi MC

 

Thanks for sharing the eagerly-awaited revolution code, you've done a great job in condensing the code. I'd only managed to get as far as 87392 bytes!!.

Thanks. Please note that we can reduce boot2 even more, but that would also complicate things even more.

 

I have modified acpipatcher.h with my DSDT.aml in little endian format and removed SSDT stuff from this file and acpipatcher.c as I dont need to modify SSDT on my mobo.

Let's start with some questions:

 

1) What is the size of your DSDT.aml

 

2) Can your DSDT.aml be divided by four? As in have you checked the end of the file and does that match with the one in the acpi_patcher.h?

 

3) You should also have SSDT.aml with your: LAN, audio, graphics and P-State data.

- otherwise my general DSDT won't work for you, which is a next step in this process.

 

All compiles OK but when I try to boot I get an immediate KP with the 'unable to find driver for this platform' error. Is there any other code I need to mod that you can think of??

Getting it to compile properly is only step one. Anyway. This sounds suspiciously like a HPET and smbios_patcher issue. Have you change anything in smbios_patcher perhaps?

 

p.s. I would advise you to do a diff -uwr to see what you have (working) and I did / changed. That might help you.

Thanks. Please note that we can reduce boot2 but that would complicate things even more.

 

 

Let's start with some questions:

 

1) What is the size of your DSDT.aml

 

2) Can your DSDT.aml be divided by four? As in have you checked the end of the file and does that match with the one in the acpi_patcher.h?

 

3) You should also have SSDT.aml with your: LAN, audio, graphics and P-State data.

- otherwise my general DSDT won't work for you, which is a next step in this process.

 

 

Getting it to compile properly is only step one. Anyway. This sounds suspiciously like a HPET and smbios_patcher issue. Have you change anything here?

 

p.s. You can do a diff -uwr to see what I did / changed. That might help you.

 

MC,

 

Thanks for your help on this! In answer to your questions:

 

1) My DSDT.aml is 5672 bytes

 

2) I have added Noops to make it divisible by 4

 

3) I have LAN, audio graphics fixes in DSDT. The reason for this is that power management works fine with native SSDT and C6 enabled in bios, so I have left SSDT well alone.

 

I was thinking along the same lines as you so I corrected default MacPro table in smbiospatcher.h to match that for MacPro4,1 (I have x58 chipset), and changed entries at start of fakeefi.c to match. HPET has worked OOB so no changes there. The good news is that it now boots to Desktop but very slowly (about 20 revs cw usual 4-5). I then had a look in IORegExplorer and at top of tree it says Apple004,1 Instead of MacPro4,1. The other thing I noticed was that when I try to click on AboutThisMac it crashes and restarts Finder. Hmmm..... I think you're right, something to do with SMBIOS, but i'm not sure where to go next.

 

Having looked at the Revolution code I'm amazed at all the changes you've made. It's taken me hours, so I guess it must've taken you ages. Good work.

×
×
  • Create New...