On Mon, 23 May 2016 07:42:32 -0500 Corey Minyard <miny...@acm.org> wrote:
> On 05/23/2016 05:01 AM, Igor Mammedov wrote: > > On Sat, 21 May 2016 19:28:59 -0500 > > Corey Minyard <miny...@acm.org> wrote: > > > >> Thanks for all the comments. I didn't know about stubs, as > >> there's nothing that currently uses it in hw directory, but > >> it's easy enough to add. I did have two comment below: > >> > >> On 05/20/2016 04:53 AM, Igor Mammedov wrote: > >>> On Thu, 19 May 2016 10:24:01 -0500 > >>> miny...@acm.org wrote: > >> . > >> . > >> . > >>> + aml_append(dev, aml_name_decl("_STR", aml_string("ipmi_%s", > >>> + > >>> info->interface_name))); > >>> + aml_append(dev, aml_name_decl("_UID", aml_int(info->uuid))); > >>> + aml_append(dev, aml_name_decl("_CRS", aml_ipmi_crs(info, resource))); > >>> + > >>> + /* > >>> + * The spec seems to require these to be methods. All the examples > >>> + * show them this way and it doesn't seem to work if they are not. > >>> + */ > >>> + method = aml_method("_IFT", 0, AML_NOTSERIALIZED); > >>> + aml_append(method, aml_return(aml_int(info->interface_type))); > >>> + aml_append(dev, method); > >>> + method = aml_method("_SRV", 0, AML_NOTSERIALIZED); > >>> + aml_append(method, aml_return(aml_int(version))); > >>> + aml_append(dev, method); > >>> replace these methods with aml_name_decl() as they do not contain any > >>> logic > >>> except of returning static value. > >> I'm not sure why, but what you ask doesn't work. These have to be > >> methods, and that is show by the IPMI spec, as the comment above > >> these says. > > on linux these methods are evaluated by ACPICA core and named constant > > is equivalent to a method without arguments that returns constant value. > > > > It might be worth to investigate why it doesn't work. > > I just tried this again and it did work. I'm not sure why it didn't work > before, if it was a change in Linux or my error. > > However, the latest IPMI spec has the following text: > > Note: _IFT and _SRV, following, have been reserved in ACPI 3.0 as names for > control methods defined for SPMI > > Just because it works in Linux doesn't mean it will work on other OSes. > Wouldn't it be safer to use a method here? I think it should be safe to use named constant instead of method. Spec often uses terms method/object interchangeably for argument-less methods and we use it to a make simpler/smaller AML bytecode. So far there weren't any issues caused by it either on linux/windows guests. PS: ACPI6.0 spec uses named object instead of method for _IFT as an example. > -corey > > >> -corey >