This bug is awaiting verification that the kernel in -proposed solves
the problem. Please test the kernel and update this bug with the
results. If the problem is solved, change the tag 'verification-needed-
yakkety' to 'verification-done-yakkety'. If the problem still exists,
change the tag 'verification-needed-yakkety' to 'verification-failed-

If verification is not done by 5 working days from today, this fix will
be dropped from the source code, and this bug will be closed.

See for documentation how
to enable and use -proposed. Thank you!

You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.

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

Status in linux package in Ubuntu:
  Fix Released
Status in linux source package in Xenial:
  Fix Committed
Status in linux source package in Yakkety:
  Fix Committed
Status in linux source package in Zesty:
  Fix Released

Bug description:
  Looks like the rebase work missed some prerequisite patches in

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

  commit 0de8ce3ee8e38cc66683438f715c79a2cc69539e
  Author: Long Li <>
  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 <>
  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

      This fixes a sparse warning.

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

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

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

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

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

To manage notifications about this bug go to:

Mailing list:
Post to     :
Unsubscribe :
More help   :

Reply via email to