On 11/13/2024 12:46 AM, Naman Jain wrote: > 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 v2: > https://lore.kernel.org/all/20241029080147.52749-1-namjain@xxxxxxxxxxxxxxxxxxx/ > * 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@xxxxxxxxxxxxxxxxxxx/ > * 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 For the series: Reviewed-by: Easwar Hariharan <eahariha@xxxxxxxxxxxxxxxxxxx>