All of lore.kernel.org
 help / color / mirror / Atom feed
From: Corey Minyard <minyard@acm.org>
To: Marcel Apfelbaum <marcel@redhat.com>,
	Igor Mammedov <imammedo@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	cminyard@mvista.com, qemu-devel@nongnu.org,
	"Michael S . Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v5 5/6] acpi: Add IPMI table entries
Date: Mon, 23 May 2016 10:55:45 -0500	[thread overview]
Message-ID: <57432801.5010801@acm.org> (raw)
In-Reply-To: <57430ACA.7040900@redhat.com>

On 05/23/2016 08:51 AM, Marcel Apfelbaum wrote:
> On 05/23/2016 04:39 PM, Corey Minyard wrote:
>> On 05/23/2016 04:05 AM, Marcel Apfelbaum wrote:
>>> On 05/22/2016 03:28 AM, Corey Minyard 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
>>>>> minyard@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.
>>>>
>>>> .
>>>> .
>>>> .
>>>>
>>>>> @@ -2011,7 +2015,7 @@ build_dsdt(GArray *table_data, GArray *linker,
>>>>>           build_hpet_aml(dsdt);
>>>>>           build_piix4_pm(dsdt);one
>>>>>           build_piix4_isa_bridge(dsdt);
>>>>> -        build_isa_devices_aml(dsdt);
>>>>> +        build_isa_devices_aml(dsdt, pcms->isa_bus);
>>>>> I'm not sure about adding 'isa_bus' field to PCMachineState,
>>>>> it might be better to find a ISA bus object internally in
>>>>> build_isa_devices_aml() and assert if found more than one,
>>>>> since code assumes that there is only one anyway.
>>>>
>>>
>>> I agree.
>>>
>>>> I don't see a clean way to find the ISA bus object.  Well, I guess
>>>> you can scan the PCI bus for an ISA bus object, is that what you
>>>> mean?
>>>>
>>>
>>> You can run a QOM query. Please look for object_resolve_path function.
>>> Please let me know if you have difficulties with it.
>>>
>>> Thanks,
>>> Marcel
>>>
>>
>> Thanks for that info.
>>
>> I looked at that, and it works for a single object, but I don't see a 
>> way to
>> make this work if there is more than one IPMI device defined.
>
>
> I was under impression that you are looking for a way to find the 
> isa_bus.
> Since we have only a single isa_bus you can use object_resolve_path 
> instead
> of adding the isa_bus to the pc machine.
> I didn't refer to the IPMI device, sorry if I was not clear enough.
>

Got it, thanks.  I was over thinking it.

-corey

> Thanks,
> Marcel
>
>>
>> I changed to the following code, which seems to work ok.  You pass in 
>> the
>> ISA bus (or the SMBus in the I2C case).
>>
>> void build_acpi_ipmi_devices(Aml *scope, BusState *bus)
>> {
>>      BusChild *kid;
>>
>>      QTAILQ_FOREACH(kid, &bus->children,  sibling) {
>>          DeviceState *dev = kid->child;
>>          Object *obj = object_dynamic_cast(OBJECT(dev), 
>> TYPE_IPMI_INTERFACE);
>>          IPMIInterface *ii;
>>          IPMIInterfaceClass *iic;
>>          IPMIFwInfo info;
>>
>>          if (!obj) {
>>              continue;
>>          }
>>
>>          ii = IPMI_INTERFACE(obj);
>>          iic = IPMI_INTERFACE_GET_CLASS(obj);
>>          memset(&info, 0, sizeof(info));
>>          iic->get_fwinfo(ii, &info);
>>          aml_append(scope, acpi_ipmi_device(&info));
>>      }
>> }
>

  reply	other threads:[~2016-05-23 15:55 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-19 15:23 [Qemu-devel] [PATCH v5 0/6] Add IPMI to firmware tables minyard
2016-05-19 15:23 ` [Qemu-devel] [PATCH v5 1/6] ipmi: rework the fwinfo to be fetched from the interface minyard
2016-05-19 15:23 ` [Qemu-devel] [PATCH v5 2/6] pc: Postpone SMBIOS table installation to post machine init minyard
2016-05-20  8:59   ` Igor Mammedov
2016-05-19 15:23 ` [Qemu-devel] [PATCH v5 3/6] smbios: Move table build tools into an include file minyard
2016-05-19 15:24 ` [Qemu-devel] [PATCH v5 4/6] ipmi: Add SMBIOS table entry minyard
2016-05-20  9:11   ` Igor Mammedov
2016-05-19 15:24 ` [Qemu-devel] [PATCH v5 5/6] acpi: Add IPMI table entries minyard
2016-05-20  9:53   ` Igor Mammedov
2016-05-22  0:28     ` Corey Minyard
2016-05-23  9:05       ` Marcel Apfelbaum
2016-05-23 13:39         ` Corey Minyard
2016-05-23 13:51           ` Marcel Apfelbaum
2016-05-23 15:55             ` Corey Minyard [this message]
2016-05-23 10:01       ` Igor Mammedov
2016-05-23 12:42         ` Corey Minyard
2016-05-23 13:15           ` Igor Mammedov
2016-05-23 18:06     ` Paolo Bonzini
2016-05-23 19:25       ` Corey Minyard
2016-05-24 10:03         ` Paolo Bonzini
2016-05-24  7:17       ` Igor Mammedov
2016-05-24 10:03         ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=57432801.5010801@acm.org \
    --to=minyard@acm.org \
    --cc=cminyard@mvista.com \
    --cc=imammedo@redhat.com \
    --cc=marcel@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.