[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 07/11] intel-hda: change msi property type
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v6 07/11] intel-hda: change msi property type |
Date: |
Wed, 01 Jun 2016 10:39:52 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Cao jin <address@hidden> writes:
>>From uint32 to enum OnOffAuto.
>
> cc: Gerd Hoffmann <address@hidden>
> cc: Michael S. Tsirkin <address@hidden>
> cc: Markus Armbruster <address@hidden>
> cc: Marcel Apfelbaum <address@hidden>
>
> Signed-off-by: Cao jin <address@hidden>
> ---
> hw/audio/intel-hda.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
> index d372d4a..61362e5 100644
> --- a/hw/audio/intel-hda.c
> +++ b/hw/audio/intel-hda.c
> @@ -187,7 +187,7 @@ struct IntelHDAState {
>
> /* properties */
> uint32_t debug;
> - uint32_t msi;
> + OnOffAuto msi;
I'm going to review all uses of this member.
> bool old_msi_addr;
> };
>
> @@ -1142,7 +1142,8 @@ static void intel_hda_realize(PCIDevice *pci, Error
> **errp)
> memory_region_init_io(&d->mmio, OBJECT(d), &intel_hda_mmio_ops, d,
> "intel-hda", 0x4000);
> pci_register_bar(&d->pci, 0, 0, &d->mmio);
> - if (d->msi) {
> + if (d->msi == ON_OFF_AUTO_AUTO ||
> + d->msi == ON_OFF_AUTO_ON) {
> msi_init(&d->pci, d->old_msi_addr ? 0x50 : 0x60, 1, true, false);
Same suggestions as for PATCH 06:
* Use the d->msi != ON_OFF_AUTO_OFF
* Add /* TODO check for errors */ now, drop it when you add the check in
PATCH 11.
> }
>
> @@ -1234,7 +1235,7 @@ static const VMStateDescription vmstate_intel_hda = {
>
> static Property intel_hda_properties[] = {
> DEFINE_PROP_UINT32("debug", IntelHDAState, debug, 0),
> - DEFINE_PROP_UINT32("msi", IntelHDAState, msi, 1),
> + DEFINE_PROP_ON_OFF_AUTO("msi", IntelHDAState, msi, ON_OFF_AUTO_AUTO),
> DEFINE_PROP_BOOL("old_msi_addr", IntelHDAState, old_msi_addr, false),
> DEFINE_PROP_END_OF_LIST(),
> };
Not covered:
static void intel_hda_update_irq(IntelHDAState *d)
{
--> int msi = d->msi && msi_enabled(&d->pci);
int level;
intel_hda_update_int_sts(d);
if (d->int_sts & (1U << 31) && d->int_ctl & (1U << 31)) {
level = 1;
} else {
level = 0;
}
dprint(d, 2, "%s: level %d [%s]\n", __FUNCTION__,
level, msi ? "msi" : "intx");
if (msi) {
if (level) {
msi_notify(&d->pci, 0);
}
} else {
pci_set_irq(&d->pci, level);
}
}
This is wrong, because the meaning of the test changes from
(user didn't specify msi=off) && (guest enabled MSI)
to
(user didn't specify msi=on or msi=off) && (guest enabled MSI)
What about:
int msi = msi_enabled(&d->pci);
If I understand it correctly, it can only be true when we added MSI
capability, and we do that only when msi=auto (default) or msi=on.
- Re: [Qemu-devel] [PATCH v6 07/11] intel-hda: change msi property type,
Markus Armbruster <=