[PATCH v4 0/2] Drivers: hv: vmbus: Wait for boot-time offers and log missing offers

Naman Jain posted 2 patches 5 days, 2 hours ago
drivers/hv/channel_mgmt.c | 61 +++++++++++++++++++++++++++++----------
drivers/hv/connection.c   |  4 +--
drivers/hv/hyperv_vmbus.h | 14 ++-------
drivers/hv/vmbus_drv.c    | 31 ++++++++++----------
4 files changed, 67 insertions(+), 43 deletions(-)
[PATCH v4 0/2] Drivers: hv: vmbus: Wait for boot-time offers and log missing offers
Posted by Naman Jain 5 days, 2 hours ago
After VM requests for channel offers during boot or resume from
hibernation, host offers the devices that the VM is configured with and
then sends a separate message indicating that all the boot-time channel
offers are delivered. Wait for this message to make this boot-time offers
request and receipt process synchronous.

Without this, user mode can race with VMBus initialization and miss
channel offers. User mode has no way to work around this other than
sleeping for a while, since there is no way to know when VMBus has
finished processing boot-time offers.

This is in analogy to a PCI bus not returning from probe until it has
scanned all devices on the bus.

As part of this implementation, some code cleanup is also done for the
logic which becomes redundant due to this change.

Second patch prints the channels which are not offered when resume
happens from hibernation to supply more information to the end user.

Changes since v3:
https://lore.kernel.org/all/20241113084700.2940-1-namjain@linux.microsoft.com/
Fixed checkpatch style warnings coming with "--strict" option,
addressing Saurabh's comments.
FYI, I kept code style same as earlier for below, to keep consistency
with other similar fields in the code and because of lack of options
due to 100 char limit.
***
CHECK: Lines should not end with a '('
FILE: drivers/hv/connection.c:37:
+       .all_offers_delivered_event = COMPLETION_INITIALIZER(
***

Changes since v2:
https://lore.kernel.org/all/20241029080147.52749-1-namjain@linux.microsoft.com/
* Incorporated Easwar's suggestion to use secs_to_jiffies() as his
  changes are now merged.
* Addressed Michael's comments:
  * Used boot-time offers/channels/devices to maintain consistency
  * Rephrased CHANNELMSG_ALLOFFERS_DELIVERED handler function comments
    for better explanation. Thanks for sharing the write-up.
  * Changed commit msg and other things as per suggestions
* Addressed Dexuan's comments, which came up in offline discussion:
  * Changed timeout for waiting for all offers delivered msg to 60s instead of 10s.
    Reason being, the host can experience some servicing events or diagnostics events,
    which may take a long time and hence may fail to offer all the devices within 10s.
  * Minor additions in commit subject of both patches
* Rebased on latest linux-next master tip

Changes since v1:
https://lore.kernel.org/all/20241018115811.5530-1-namjain@linux.microsoft.com/
* Added Easwar's Reviewed-By tag
* Addressed Michael's comments:
  * Added explanation of all offers delivered message in comments
  * Removed infinite wait for offers logic, and changed it wait once.
  * Removed sub channel workqueue flush logic
  * Added comments on why MLX device offer is not expected as part of
    this essential boot offer list. I refrained from adding too many
    details on it as it felt like it is beyond the scope of this patch
    series and may not be relevant to this. However, please let me know if
    something needs to be added.
* Addressed Saurabh's comments:
  * Changed timeout value to 10000 ms instead of 10*1000
  * Changed commit msg as per suggestions
  * Added a comment for warning case of wait_for_completion timeout
  * Added a note for missing channel cleanup in comments and commit msg

John Starks (1):
  Drivers: hv: vmbus: Log on missing offers if any

Naman Jain (1):
  Drivers: hv: vmbus: Wait for boot-time offers during boot and resume

 drivers/hv/channel_mgmt.c | 61 +++++++++++++++++++++++++++++----------
 drivers/hv/connection.c   |  4 +--
 drivers/hv/hyperv_vmbus.h | 14 ++-------
 drivers/hv/vmbus_drv.c    | 31 ++++++++++----------
 4 files changed, 67 insertions(+), 43 deletions(-)


base-commit: 28955f4fa2823e39f1ecfb3a37a364563527afbc
-- 
2.34.1