Hey Andy, no prob I am quite busy too with my real life work
1. I don't follow you on that one could you clarify please ?
1B. Parsing the list is a very fast operation (few microseconds) on modern processors,
So I promise you you would never notice a difference.
What really slows down the booter is
- file access: this can be optimized in our current version, I'll come back to this subject later.
- IO access can also sometimes slow down the booter.
2. The simplified scenario that I started coding on my branch is, like I said, far from being finished.
For the first increment you can only :
- drop undesired table by including them in the drop list but not including the corresponding files
- replace any table by including it in the same folder than your other dsdt.aml file
We can solve this easily by adding only one new option:
- AddAML <aml list ...>
We can then decide wether we want all custom tables to be loaded included here,
or if we want that implicitly: all tables found in the dsdt.aml directory that are already specified in the drop would be automatically replaced ...
In the later case, we should then name this option :
- AddNewAML <new_aml only list>
Then Drop would be named
- DropAML <aml list ...>
Note that with only these two options you can address all needs concerning aml table loading (including SSDTx handling).
Wouldn't it be much simpler (for the user) and nicer ?
Look at my new acpi.c file (and also the dsdt_patcher.c that I only started to modify but it gives you an idea) in my branch for the underlying logic / fast prototyping that I coded.
It needs testing and probably some polishing as I didn't take too much time on it,
but you can count on me to help implement that rapidly if you agree, for this more sophisticated parsing list engine
I'm also OK for all the new features that you added, the only things that we don't want, is mainly this number of raw options explosion, as it has been discussed in the insanelymac forum in the last 10 pages (sorry for that as this huge thread should now take place here):
http://www.insanelymac.com/forum/index.php?showtopic=201902Bad things:
1. It would be better if you parse the tables to drop untill a , is found and it transfers it into some structure for dropping.
It should start at 0 unless boot arg Drop is found (in which case it starts at 1).
For each , which is found it increments the amount and it thus copies the characters into the structure.
The structure should get parsed for each table loop (untill total amount is reached).
1B. Isn't parsing this Drop list slower because of parsing a list?
2. What about table adding?
It currently supports overriding certain tables but it doesn't check if it they got replaced and thus there is no way to add new tables.
Also table adding underneat (out of the for (i=0;i<(x or r)sdt_entries_num;i++) loop) isn't present so it doesn't add any new tables.
3. What about specific SSDT table replacing?
It should be possible to only add or replace certain SSDT table.
Check my code to see how I accomplish that.
Good things:
1. The FADT upgrade/patching will work fine.
2. Adding SSDT tables should work fine.
3. XSDT generation will work fine.
4. Opening FD code should work.
5. Loading to memory code should work.
6. SSDT loading to memory code should work but should use (acpiSearchAndGetFd) or check path for first SSDT load first.
7. The only advantage of parsing a Drop= list is that you can also drop other tables (like BOOT table or so...)
P.S. What about Disabler.kext's plist dependency fixes?
I've also got some new ideas for fixing some other things up.
Download my saved ioregs from various Macs...
You can check them out for various new fixes.
The IODeviceTree:/efi... node contains somewhere the model of the Mac and so.
It might be wise to add them from smbios.plist or default...
http://rapidshare.com/files/346407925/ioregs.zip