|
@@ -2215,7 +2215,6 @@ static bool vfio_add_std_cap(VFIOPCIDevice *vdev, uint8_t pos, Error **errp)
|
|
|
break;
|
|
|
case PCI_CAP_ID_PM:
|
|
|
vfio_check_pm_reset(vdev, pos);
|
|
|
- vdev->pm_cap = pos;
|
|
|
ret = pci_pm_init(pdev, pos, errp) >= 0;
|
|
|
/*
|
|
|
* PCI-core config space emulation needs write access to the power
|
|
@@ -2412,17 +2411,17 @@ void vfio_pci_pre_reset(VFIOPCIDevice *vdev)
|
|
|
vfio_disable_interrupts(vdev);
|
|
|
|
|
|
/* Make sure the device is in D0 */
|
|
|
- if (vdev->pm_cap) {
|
|
|
+ if (pdev->pm_cap) {
|
|
|
uint16_t pmcsr;
|
|
|
uint8_t state;
|
|
|
|
|
|
- pmcsr = vfio_pci_read_config(pdev, vdev->pm_cap + PCI_PM_CTRL, 2);
|
|
|
+ pmcsr = vfio_pci_read_config(pdev, pdev->pm_cap + PCI_PM_CTRL, 2);
|
|
|
state = pmcsr & PCI_PM_CTRL_STATE_MASK;
|
|
|
if (state) {
|
|
|
pmcsr &= ~PCI_PM_CTRL_STATE_MASK;
|
|
|
- vfio_pci_write_config(pdev, vdev->pm_cap + PCI_PM_CTRL, pmcsr, 2);
|
|
|
+ vfio_pci_write_config(pdev, pdev->pm_cap + PCI_PM_CTRL, pmcsr, 2);
|
|
|
/* vfio handles the necessary delay here */
|
|
|
- pmcsr = vfio_pci_read_config(pdev, vdev->pm_cap + PCI_PM_CTRL, 2);
|
|
|
+ pmcsr = vfio_pci_read_config(pdev, pdev->pm_cap + PCI_PM_CTRL, 2);
|
|
|
state = pmcsr & PCI_PM_CTRL_STATE_MASK;
|
|
|
if (state) {
|
|
|
error_report("vfio: Unable to power on device, stuck in D%d",
|