On Wed, Sep 21, 2011 at 05:27:32PM +0300, Gleb Natapov wrote: > On Wed, Sep 21, 2011 at 03:44:29PM +0300, Michael S. Tsirkin wrote: > > script ./src/find_ej0.pl finds all instances of > > method named EJ0_ and the matching _ADR information, > > and outputs the AML offset and slot mask of each. > > > There is tools/ directory for such kind of scripts. Most (if not all) of > scripts there are in python though. OK, rewriting that in python should be easy. I'll wait a bit for more comments on the design though. > Perl should die painful death. > > This approach delivers nice result, but since the script does not really > decodes AML, but tries to match ASL source code with regular expressions, > it introduces some assumptions to the code that make DSDT code less > hackable. I'll hate to be the one who will have to change PCI device > definitions in DSDT next time. There are three requirements now: 1. don't use the name EJ0_ anywhere if you don't want it patches 2. _ADR must be an integer constant 3. put _ADR name immediately before EJ0_ method I tried to make it easy to obey these rules by adding comments in source code. I don't believe a generic mechanism that does not place any restrictions on language use is possible without adding an AML interpreter in bios. > Generally speaking finding an offset of some scope in AML is useful not > only for PCI hotplug. For instance we want to make S3/S4 capability > configurable by a command line switch, but this also requires DSDT > patching and having automatic way to find _S3_/_S4_ offset is required > for that too (we do not what to find it by hand each time DSDT is > recompiled). Right. So that would be an easy extension. We could also add some directives for the tool (e.g. in C comments) so that you can e.g. find more names just by adding such a directive in dsl. I'll be happy to work on that preferably after we merge a simple version of the tool first. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html