On Mon, Aug 13, 2012 at 02:30:52PM -0500, Corey Minyard wrote:
On 08/13/2012 10:15 AM, Gleb Natapov wrote:
On Mon, Aug 13, 2012 at 09:47:50AM -0500, Corey Minyard wrote:
On 08/13/2012 01:25 AM, Gleb Natapov wrote:
On Sun, Aug 12, 2012 at 08:22:12PM -0500, Corey Minyard wrote:
Patch 2 is complex and I don't fully understand what it is doing. A quick scan leads me to believe it is constructing a dynamic SSDT - though it's not clear why a dynamic SSDT is needed and why the existing mechanism (see build_ssdt()) for generating dynamic SSDTs is not used.
It is constructing an addition to the DSDT table that is tacked on to the end of that table if IPMI is present. It is complex, but building ACPI namespace data is complex, and the data is not fixed length.
You do not need to construct IPMI device dynamically in DSDT. Write it in AML and have _STA method that tells OSPM if device is present or not.
There are lots of different options for IPMI devices. There are three different interface types, with two string lengths. They can all appear at arbitrary places in I/O or memory space. They can have an interrupt or not. I would like to be able to represent all off the possibilities so users can simulate any arbitrary machine they want.
I considered writing it in AML 8 times and figuring the offsets to set the various values, but that seems rather messy to me.
How different are they. Can you give human readable example?
Here are the examples from the IPMI spec. I lied a little bit, there are actually four standard interfaces (one can be on an SMBus), but it's a different thing to manage, I think.
Does your patch produce all of the four variants you've identified? What fields (if any) are dynamic within the variants?
-Kevin