What about the old solution of putting as much knowledge about the hardware into the kernel itself, and only relying on ACPI for the things that the kernel really can't know, like the bus/mapping/whatever address of a given device?
I'm sure of course that there is a good reason why that doesn't work if you are going to all this trouble.
no subject