"Michael S. Tsirkin" <m...@redhat.com> writes:

> On Fri, Jun 10, 2016 at 05:54:36PM +0800, Cao jin wrote:
>> Internal flag msi_used is uncesessary, msi_uninit() could be called
>> directly, msi_enabled() is enough to check device msi state.
>> 
>> cc: Paolo Bonzini <pbonz...@redhat.com>
>> cc: Dmitry Fleytman <dmi...@daynix.com>
>> cc: Markus Armbruster <arm...@redhat.com>
>> cc: Marcel Apfelbaum <mar...@redhat.com>
>> cc: Michael S. Tsirkin <m...@redhat.com>
>> 
>> Reviewed-by: Markus Armbruster <arm...@redhat.com>
>> Signed-off-by: Cao jin <caoj.f...@cn.fujitsu.com>
>> ---
>>  hw/scsi/vmw_pvscsi.c | 12 ++----------
>>  1 file changed, 2 insertions(+), 10 deletions(-)
>> 
>> diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c
>> index ecd6077..363a7ed 100644
>> --- a/hw/scsi/vmw_pvscsi.c
>> +++ b/hw/scsi/vmw_pvscsi.c
>> @@ -121,8 +121,6 @@ typedef struct {
>>      uint8_t msg_ring_info_valid;         /* Whether message ring 
>> initialized */
>>      uint8_t use_msg;                     /* Whether to use message ring     
>>  */
>>  
>> -    uint8_t msi_used;    /* Whether MSI support was installed successfully  
>>  */
>> -
>>      PVSCSIRingInfo rings;                /* Data transfer rings manager     
>>  */
>>      uint32_t resetting;                  /* Reset in progress               
>>  */
>>  
>> @@ -362,7 +360,7 @@ pvscsi_update_irq_status(PVSCSIState *s)
>>      trace_pvscsi_update_irq_level(should_raise, s->reg_interrupt_enabled,
>>                                    s->reg_interrupt_status);
>>  
>> -    if (s->msi_used && msi_enabled(d)) {
>> +    if (msi_enabled(d)) {
>>          if (should_raise) {
>>              trace_pvscsi_update_irq_msi();
>>              msi_notify(d, PVSCSI_VECTOR_COMPLETION);
>> @@ -1066,9 +1064,6 @@ pvscsi_init_msi(PVSCSIState *s)
>>                     PVSCSI_USE_64BIT, PVSCSI_PER_VECTOR_MASK, NULL);
>>      if (res < 0) {
>>          trace_pvscsi_init_msi_fail(res);
>> -        s->msi_used = false;
>> -    } else {
>> -        s->msi_used = true;
>>      }
>>  }
>>  
>> @@ -1077,9 +1072,7 @@ pvscsi_cleanup_msi(PVSCSIState *s)
>>  {
>>      PCIDevice *d = PCI_DEVICE(s);
>>  
>> -    if (s->msi_used) {
>> -        msi_uninit(d);
>> -    }
>> +    msi_uninit(d);
>>  }
>>  
>>  static const MemoryRegionOps pvscsi_ops = {
>> @@ -1222,7 +1215,6 @@ static const VMStateDescription vmstate_pvscsi = {
>>          VMSTATE_STRUCT_TEST(parent_obj, PVSCSIState,
>>                              pvscsi_vmstate_test_pci_device, 0,
>>                              vmstate_pci_device, PCIDevice),
>> -        VMSTATE_UINT8(msi_used, PVSCSIState),
>>          VMSTATE_UINT32(resetting, PVSCSIState),
>>          VMSTATE_UINT64(reg_interrupt_status, PVSCSIState),
>>          VMSTATE_UINT64(reg_interrupt_enabled, PVSCSIState),
>
>
> This change will break cross-version migration, we can't make it.

Oww, sorry I missed this!

The value shouldn't have been put into the migration stream, but now
it's there, we need to keep it there.  Suggest:


diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c
index ecd6077..edd91ec 100644
--- a/hw/scsi/vmw_pvscsi.c
+++ b/hw/scsi/vmw_pvscsi.c
@@ -121,7 +121,7 @@ typedef struct {
     uint8_t msg_ring_info_valid;         /* Whether message ring initialized */
     uint8_t use_msg;                     /* Whether to use message ring      */
 
-    uint8_t msi_used;    /* Whether MSI support was installed successfully   */
+    uint8_t msi_used;                    /* For migration compatibility      */
 
     PVSCSIRingInfo rings;                /* Data transfer rings manager      */
     uint32_t resetting;                  /* Reset in progress                */
@@ -362,7 +362,7 @@ pvscsi_update_irq_status(PVSCSIState *s)
     trace_pvscsi_update_irq_level(should_raise, s->reg_interrupt_enabled,
                                   s->reg_interrupt_status);
 
-    if (s->msi_used && msi_enabled(d)) {
+    if (msi_enabled(d)) {
         if (should_raise) {
             trace_pvscsi_update_irq_msi();
             msi_notify(d, PVSCSI_VECTOR_COMPLETION);
@@ -1077,9 +1077,7 @@ pvscsi_cleanup_msi(PVSCSIState *s)
 {
     PCIDevice *d = PCI_DEVICE(s);
 
-    if (s->msi_used) {
-        msi_uninit(d);
-    }
+    msi_uninit(d);
 }
 
 static const MemoryRegionOps pvscsi_ops = {


Reply via email to