Re: [PATCH V3 23/25] smartpqi: correct system hangs when resuming from hibernation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2021-01-27 at 17:39 +0000, Don.Brace@xxxxxxxxxxxxx wrote:
> -----Original Message-----
> From: Martin Wilck [mailto:mwilck@xxxxxxxx] 
> Subject: Re: [PATCH V3 23/25] smartpqi: correct system hangs when
> resuming from hibernation
> 
> > @@ -8688,6 +8688,11 @@ static __maybe_unused int pqi_resume(struct 
> > pci_dev *pci_dev)
> >         pci_set_power_state(pci_dev, PCI_D0);
> >         pci_restore_state(pci_dev);
> > 
> > +       pqi_ctrl_unblock_device_reset(ctrl_info);
> > +       pqi_ctrl_unblock_requests(ctrl_info);
> > +       pqi_scsi_unblock_requests(ctrl_info);
> > +       pqi_ctrl_unblock_scan(ctrl_info);
> > +
> >         return pqi_ctrl_init_resume(ctrl_info);  }
> 
> Like I said in my comments on 14/25:
> 
> pqi_ctrl_unblock_scan() and pqi_ctrl_unblock_device_reset() expand to
> mutex_unlock(). Unlocking an already-unlocked mutex is wrong, and a
> mutex has to be unlocked by the task that owns the lock. How can you
> be sure that these conditions are met here?
> 
> Don: I updated this patch to:
> @@ -8661,9 +8661,17 @@ static __maybe_unused int pqi_resume(struct
> pci_dev *pci_dev)
>                 return 0;
>         }
>  
> +       pqi_ctrl_block_device_reset(ctrl_info);
> +       pqi_ctrl_block_scan(ctrl_info);
> +
>         pci_set_power_state(pci_dev, PCI_D0);
>         pci_restore_state(pci_dev);
>  
> +       pqi_ctrl_unblock_device_reset(ctrl_info);
> +       pqi_ctrl_unblock_requests(ctrl_info);
> +       pqi_scsi_unblock_requests(ctrl_info);
> +       pqi_ctrl_unblock_scan(ctrl_info);
> +
>         return pqi_ctrl_init_resume(ctrl_info);
>  }
> Don: So the mutexes are set and unset in the same task.

Yes, that looks much better to me.

>  I updated the other patch 14 accordingly, but I'll reply in that
> patch also. Is there a specific driver that initiates suspend/resume?
> Like acpi? Or some other pci driver?

I'm no expert on suspend/resume. I think it's platform-dependent, you
shouldn't make any specific assumptions what the platform actually
does.

Regards
Martin






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux