Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/vmm/io/ppt.c
Show First 20 Lines • Show All 350 Lines • ▼ Show 20 Lines | ppt_is_mmio(struct vm *vm, vm_paddr_t gpa) | ||||
} | } | ||||
return (FALSE); | return (FALSE); | ||||
} | } | ||||
static void | static void | ||||
ppt_pci_reset(device_t dev) | ppt_pci_reset(device_t dev) | ||||
{ | { | ||||
int ps; | |||||
if (pcie_flr(dev, | if (pcie_flr(dev, | ||||
max(pcie_get_max_completion_timeout(dev) / 1000, 10), | max(pcie_get_max_completion_timeout(dev) / 1000, 10), true)) | ||||
true)) | |||||
return; | return; | ||||
/* | pci_power_reset(dev); | ||||
* If FLR fails, attempt a power-management reset by cycling | |||||
* the device in/out of D3 state. | |||||
* PCI spec says we can only go into D3 state from D0 state. | |||||
* Transition from D[12] into D0 before going to D3 state. | |||||
*/ | |||||
ps = pci_get_powerstate(dev); | |||||
if (ps != PCI_POWERSTATE_D0 && ps != PCI_POWERSTATE_D3) | |||||
pci_set_powerstate(dev, PCI_POWERSTATE_D0); | |||||
if (pci_get_powerstate(dev) != PCI_POWERSTATE_D3) | |||||
pci_set_powerstate(dev, PCI_POWERSTATE_D3); | |||||
pci_set_powerstate(dev, ps); | |||||
} | } | ||||
int | int | ||||
ppt_assign_device(struct vm *vm, int bus, int slot, int func) | ppt_assign_device(struct vm *vm, int bus, int slot, int func) | ||||
{ | { | ||||
struct pptdev *ppt; | struct pptdev *ppt; | ||||
ppt = ppt_find(bus, slot, func); | ppt = ppt_find(bus, slot, func); | ||||
▲ Show 20 Lines • Show All 308 Lines • Show Last 20 Lines |