Re: [Qemu-devel] FLR capability hidden in VF config space
Thanks Alex. Pls see my responses below: On Thu, Feb 23, 2012 at 9:34 PM, Alex Williamson alex.william...@redhat.com wrote: On Thu, 2012-02-23 at 09:25 +0530, rukhsana ansari wrote: Hello, Was wondering whether someone could shed some light on the issue below. Without FLR exposed in the VF, VF reset via FLR cannot be initiated from the guest. Appreciate any pointers. The device state needs to be restored after an FLR. A guest is not able to do this by this by itself as much of the config space is virtualized. That means qemu needs to be involved in the FLR. It's possible we could trap FLR and call reset_assign_device(). Patches welcome. Why do want to reset the device? [RA] While trying to figure out what the reason for not exposing FLR in VF, I had missed out what you brought up about the VF config space being virtualized. The reason for looking at FLR support in VF (apart from ease of testing using setpci) is as a possible replacement of driver specific mechanism to initiate software FLR (for example via mailbox mechanism) when VF driver get a shutdown call. But given the issue with config space being virtualized, it makes sense to continue with the current approach The following code snippet (line 1457, function:assigned_device_pci_cap_init() file: hw/device-assignment.c) from the latest qemu-kvm git (qemu-kvm-devel: 1.0.50) implies that FLR capability is unset for VF that is assigned to a guest: /* device capabilities: hide FLR */ devcap = pci_get_long(pci_dev-config + pos + PCI_EXP_DEVCAP); devcap = ~PCI_EXP_DEVCAP_FLR; pci_set_long(pci_dev-config + pos + PCI_EXP_DEVCAP, devcap); However the SR-IOV spec mandates VF FLR. The SR-IOV spec mandates that the VF supports FLR. That doesn't mean it has to be exposed though to a guest. Thanks, [RA] Yes, point noted. -- -Rukhsana
Re: [Qemu-devel] FLR capability hidden in VF config space
On Thu, 2012-02-23 at 09:25 +0530, rukhsana ansari wrote: Hello, Was wondering whether someone could shed some light on the issue below. Without FLR exposed in the VF, VF reset via FLR cannot be initiated from the guest. Appreciate any pointers. The device state needs to be restored after an FLR. A guest is not able to do this by this by itself as much of the config space is virtualized. That means qemu needs to be involved in the FLR. It's possible we could trap FLR and call reset_assign_device(). Patches welcome. Why do want to reset the device? On Wed, Feb 15, 2012 at 2:54 PM, rukhsana ansari ruk.ans...@gmail.comwrote: Hi, The following code snippet (line 1457, function:assigned_device_pci_cap_init() file: hw/device-assignment.c) from the latest qemu-kvm git (qemu-kvm-devel: 1.0.50) implies that FLR capability is unset for VF that is assigned to a guest: /* device capabilities: hide FLR */ devcap = pci_get_long(pci_dev-config + pos + PCI_EXP_DEVCAP); devcap = ~PCI_EXP_DEVCAP_FLR; pci_set_long(pci_dev-config + pos + PCI_EXP_DEVCAP, devcap); However the SR-IOV spec mandates VF FLR. The SR-IOV spec mandates that the VF supports FLR. That doesn't mean it has to be exposed though to a guest. Thanks, Alex
Re: [Qemu-devel] FLR capability hidden in VF config space
Hello, Was wondering whether someone could shed some light on the issue below. Without FLR exposed in the VF, VF reset via FLR cannot be initiated from the guest. Appreciate any pointers. Thanks, Rukhsana On Wed, Feb 15, 2012 at 2:54 PM, rukhsana ansari ruk.ans...@gmail.comwrote: Hi, The following code snippet (line 1457, function:assigned_device_pci_cap_init() file: hw/device-assignment.c) from the latest qemu-kvm git (qemu-kvm-devel: 1.0.50) implies that FLR capability is unset for VF that is assigned to a guest: /* device capabilities: hide FLR */ devcap = pci_get_long(pci_dev-config + pos + PCI_EXP_DEVCAP); devcap = ~PCI_EXP_DEVCAP_FLR; pci_set_long(pci_dev-config + pos + PCI_EXP_DEVCAP, devcap); However the SR-IOV spec mandates VF FLR. Could someone explain the reason for unsetting the FLR bit in the PCI Express device capabilities register of the VF? Thanks -Rukhsana
[Qemu-devel] FLR capability hidden in VF config space
Hi, The following code snippet (line 1457, function:assigned_device_pci_cap_init() file: hw/device-assignment.c) from the latest qemu-kvm git (qemu-kvm-devel: 1.0.50) implies that FLR capability is unset for VF that is assigned to a guest: /* device capabilities: hide FLR */ devcap = pci_get_long(pci_dev-config + pos + PCI_EXP_DEVCAP); devcap = ~PCI_EXP_DEVCAP_FLR; pci_set_long(pci_dev-config + pos + PCI_EXP_DEVCAP, devcap); However the SR-IOV spec mandates VF FLR. Could someone explain the reason for unsetting the FLR bit in the PCI Express device capabilities register of the VF? Thanks -Rukhsana