Re: [PATCH] PCI: check if the state is saved before restoring it

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

 



On Wednesday 18 February 2009, Zhao, Yu wrote:
> Rafael J. Wysocki wrote:
> > On Monday 16 February 2009, Yu Zhao wrote:
> >> The device state is restored twice by the PCI PM and device driver itself.
> >> Before removing the pci_restore_state() from the device driver, we'd better
> >> check the `state_saved' to avoid the second restore.
> > 
> > This patch will break things (like anything behind a cardbus bridge).
> > Does it fix any observable problem?
> 
> Can you please explain how it breaks cardbus device?

Not a cardbus device itself, but devices behind a cardbus bridge.  Please
have a look at the changelog of
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3494252d5644993f407a45f01c3e8ad5ae38f93c

> Through the pci_restore_state gets called twice when device resumes, I 
> didn't see any observable problem.

I wouldn't change that, then.  The entire suspend sequence is going to be
reqorked shortly and we'll take care of it at that time.

> >> Signed-off-by: Yu Zhao <yu.zhao@xxxxxxxxx>
> >> ---
> >>  drivers/pci/pci.c |    3 +++
> >>  1 files changed, 3 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> >> index 9376763..2b11810 100644
> >> --- a/drivers/pci/pci.c
> >> +++ b/drivers/pci/pci.c
> >> @@ -762,6 +762,9 @@ pci_restore_state(struct pci_dev *dev)
> >>  	int i;
> >>  	u32 val;
> >>  
> >> +	if (!dev->state_saved)
> >> +		return 0;
> >> +
> >>  	/* PCI Express register must be restored first */
> >>  	pci_restore_pcie_state(dev);

Thanks,
Rafael
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux