Driver with build-in ACPI Just a thought .... since in the scenario where RSDT table is not patchable (because there's no room for additional SLIC pointer ...and not wanting to overwrite other tables ) there could be serious problems in adding SLIC table , couldn't we allocate some kind of non-paged shared memory buffer within the driver , copy all the tables declared in RSDT table to this location , then patch all pointers of RSDT table ? This way we could free memory following RSDT table (having relocated the tables to local buffer) and then add SLIC . What do you think ? Is it doable or just a stupid idea ?
I think zsmin did something similar. He relocated tables to make room. Unfortunatley this is difficult for a driver, as the ACPI driver is loaded beforethe SLIC driver, so Windows does not take notice of the changes and does not activate.
Ok, now i don't understand ..... if the ACPI driver is loaded before SLIC driver how could the actual patching (slic86.sys) works ? I mean , SLIC driver adds SLIC table pointer and SLIC table structure at the end of RSDT table, so if ACPI driver has already loaded ACPI info , how could windows activate ? Sorry if those questions looks stupid but i'm a newby at this .
Sorry but I can't confirm that. I tried it in Vbox and my own PC never had a problem or am I missing something here?
I think so yes, from what zsmin said. You will have to talk to him but it was something like, "relocating acpi tables doesn't work from the driver within windows" because of the acpi.sys being loaded first.
Well he told me that a driver allows for a higher success rate, as you just ask the OS "for x bytes" as he put it. And that it can all be moved into manageable safe memory, just the problem was getting tables to relocate.
Well I think I found a solution for the acpi.sys problem. Make a long story short: load our slic driver before acpi.sys gets loaded. Tried in Vbox and seems to work. I'll post the files when I get home form work.
Test new version 2.0.1.4. It realloc room for rsdt, add SLIC but windows don't see it. PS: I think you can copy SLIC overwrite BOOT in RSDT.
@nhadnt: I know that windows can't see it 'cause you'll have to load the driver before acpi.sys is loaded during boot. I already figured how to do that so I'll post the files soon. Btw.. BOOT in RSDT is not long enough to be overwritten by SLIC. I personally think it's more work to reallocate all sdt tables instead of "just" r/xsdt but nevermind I'll try it out so we can see what works better. Finally I thank you for your effort in driver testing of every version Edit: uploaded the files required to load the driver before acpi.sys.
I've updated the driver to 2.0.1.5. Now it supports realloc for write-protected x/rsdt tables. For futher updates see first post.
I might have it all wrong, but was it supposed to allow addition of SLIC to non-SLIC machines? On Dell OPtiplex GX620 it loads just fine, but nothing shows sebus
How do you tell it to load first mate. I tried in vmware and slic dump toolkit said Acer 2.1 but when I installed the acer cert and the acer key it still did not activate. Am I missing something here?
@sebus & sam3917: I guess the rsdt and xsdt got reallocated but this does not work 'cause windows doesn't recognize the change even if rsdp is located in ebda at boot time. Well in the end I came up with three different approaches to this problem. 1. Remove write protection of 0xE0000 - 0xFFFFF using [ PCI0 : Dev0 : Func0 ] 2. Overwrite "useless" sdt pointer for slic 3. Realloc sub tables of rsdt/xsdt to get room All three options are currently in development and the first one is really high experimental. So I'll post the updates version when tests and dev is done.
I know it is loaded fine using serviwin. Thanks secr9tos , would love to see it working, so keep up the good work sebus
Cool, thanks for the update. I would love to see this one actually work because it is a genius idea dude.