Re: [PATCH -v4 6/6] PCI,pciehp: identify device change during suspend

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

 



Yijing,

On Thu, 2013-08-01 at 21:06 +0800, Yijing Wang wrote:
> diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c
> index 7fe9dbd..db5f597 100644
> --- a/drivers/pci/hotplug/pciehp_core.c
> +++ b/drivers/pci/hotplug/pciehp_core.c
> [...]
> @@ -315,10 +317,36 @@ static int pciehp_resume (struct pcie_device *dev)
>  	if (status) {
>  		if (list_empty(&pbus->devices))
>  			pciehp_enable_slot(slot);
> -	} else if (!list_empty(&pbus->devices)) {
> -		pciehp_disable_slot(slot);
> +
> +		pdev = pci_get_slot(pbus, PCI_DEVFN(0, 0));
> +		if (!pdev)
> +			return 0;
> +		ret = pci_serial_number_changed(pdev);
> +		pci_dev_put(pdev);
> +		if (ret) {
> +			/*
> +			 * first power off slot, avoid the old driver
> +			 * .remove() method touch the new hardware
> +			 */
> +			if (POWER_CTRL(ctrl)) {
> +				ret = pciehp_power_off_slot(slot);
> +				if (ret) {
> +					ctrl_err(ctrl,
> +						"Issue of Slot Disable command failed\n");
> +					return 0;
> +				}
> +				msleep(1000);
> +				pciehp_unconfigure_device(slot);
> +				/* call child devices driver->suspend() for symmetry */
> +				list_for_each_entry(pdev, &pbus->devices, bus_list)
> +					if (pdev->driver)
> +						pdev->driver->driver.pm->suspend(&pdev->dev);
> +				pciehp_enable_slot(slot);
> +			}
> +		} else if (!list_empty(&pbus->devices)) {
> +			pciehp_disable_slot(slot);
> +		}
>  	}
> -	

I ran into a problem with this change. This line, removing a line
consisting of only a single tab, appears to conflict with a patch
earlier in this series. I had to manually remove just the change that
removed that line to get this patch to apply. Any idea what's going on?

>  	return 0;
>  }
>  #endif /* PM */


Paul Bolle

--
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