Public bug reported:

Looks like the rebase work missed some prerequisite patches in
drivers/pci/host/pci-hyperv.c

(Needed for SR-IOV in Azure on lts-xenial, HWE, and custom)

commit 0de8ce3ee8e38cc66683438f715c79a2cc69539e
Author: Long Li <[email protected]>
Date:   Tue Nov 8 14:04:38 2016 -0800

    PCI: hv: Allocate physically contiguous hypercall params buffer

    hv_do_hypercall() assumes that we pass a segment from a physically
    contiguous buffer.  A buffer allocated on the stack may not work if
    CONFIG_VMAP_STACK=y is set.

    Use kmalloc() to allocate this buffer.


commit 542ccf4551fa019a8ae9dfb7c8cd7e73a3d7e614
Author: Tobias Klauser <[email protected]>
Date:   Mon Oct 31 12:04:09 2016 +0100

    PCI: hv: Make unnecessarily global IRQ masking functions static

    Make hv_irq_mask() and hv_irq_unmask() static as they are only used in
    pci-hyperv.c

    This fixes a sparse warning.

commit e74d2ebdda33b3bdd1826b5b92e9aa45bdf92bb3
Author: Dexuan Cui <[email protected]>
Date:   Thu Nov 10 07:19:52 2016 +0000

    PCI: hv: Delete the device earlier from hbus->children for hot-
remove

    After we send a PCI_EJECTION_COMPLETE message to the host, the host will
    immediately send us a PCI_BUS_RELATIONS message with
    relations->device_count == 0, so pci_devices_present_work(), running on
    another thread, can find the being-ejected device, mark the
    hpdev->reported_missing to true, and run list_move_tail()/list_del() for
    the device -- this races hv_eject_device_work() -> list_del().

    Move the list_del() in hv_eject_device_work() to an earlier place, i.e.,
    before we send PCI_EJECTION_COMPLETE, so later the
    pci_devices_present_work() can't see the device.


commit 17978524a636d007e6b929304ae3eb5ea0371019
Author: Dexuan Cui <[email protected]>
Date:   Thu Nov 10 07:18:47 2016 +0000

    PCI: hv: Fix hv_pci_remove() for hot-remove

    1. We don't really need such a big on-stack buffer when sending the
    teardown_packet: vmbus_sendpacket() here only uses sizeof(struct
    pci_message).

    2. In the hot-remove case (PCI_EJECT), after we send PCI_EJECTION_COMPLETE
    to the host, the host will send a RESCIND_CHANNEL message to us and the
    host won't access the per-channel ringbuffer any longer, so we needn't send
    PCI_RESOURCES_RELEASED/PCI_BUS_D0EXIT to the host, and we shouldn't expect
    the host's completion message of PCI_BUS_D0EXIT, which will never come.

    3. We should send PCI_BUS_D0EXIT after hv_send_resources_released().

    Signed-off-by: Dexuan Cui <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Jake Oshins <[email protected]>
    Acked-by: K. Y. Srinivasan <[email protected]>
    CC: Haiyang Zhang <[email protected]>
    CC: Vitaly Kuznetsov <[email protected]>

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: Confirmed

** Changed in: linux (Ubuntu)
       Status: New => Confirmed

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1670518

Title:
  [Hyper-V] Missing PCI patches breaking SR-IOV hot remove

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1670518/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to