Message ID | 1464062689-32156-8-git-send-email-caoj.fnst@cn.fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Cao jin <caoj.fnst@cn.fujitsu.com> writes: >>From uint32 to enum OnOffAuto. > > cc: Gerd Hoffmann <kraxel@redhat.com> > cc: Michael S. Tsirkin <mst@redhat.com> > cc: Markus Armbruster <armbru@redhat.com> > cc: Marcel Apfelbaum <marcel@redhat.com> > > Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com> > --- > 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.
On 06/01/2016 04:39 PM, Markus Armbruster wrote: > Cao jin <caoj.fnst@cn.fujitsu.com> writes: > > > 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) > Thanks for pointing the error, seems I lost the fact that ON_OFF_AUTO_AUTO equals 0. > 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. > I think the modification is ok.
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; 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); } @@ -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(), };
From uint32 to enum OnOffAuto. cc: Gerd Hoffmann <kraxel@redhat.com> cc: Michael S. Tsirkin <mst@redhat.com> cc: Markus Armbruster <armbru@redhat.com> cc: Marcel Apfelbaum <marcel@redhat.com> Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com> --- hw/audio/intel-hda.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)