Skip to content

Commit

Permalink
Drivers: hv: vmbus: Fix a bug in the channel callback dispatch code
Browse files Browse the repository at this point in the history
Starting with Win8, we have implemented several optimizations to improve the
scalability and performance of the VMBUS transport between the Host and the
Guest. Some of the non-performance critical services cannot leverage these
optimization since they only read and process one message at a time.
Make adjustments to the callback dispatch code to account for the way
non-performance critical drivers handle reading of the channel.

Signed-off-by: K. Y. Srinivasan <[email protected]>
Cc: <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
kattisrinivasan authored and gregkh committed Jul 9, 2014
1 parent a497c3b commit affb1af
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions drivers/hv/connection.c
Original file line number Diff line number Diff line change
Expand Up @@ -339,9 +339,13 @@ static void process_chn_event(u32 relid)
*/

do {
hv_begin_read(&channel->inbound);
if (read_state)
hv_begin_read(&channel->inbound);
channel->onchannel_callback(arg);
bytes_to_read = hv_end_read(&channel->inbound);
if (read_state)
bytes_to_read = hv_end_read(&channel->inbound);
else
bytes_to_read = 0;
} while (read_state && (bytes_to_read != 0));
} else {
pr_err("no channel callback for relid - %u\n", relid);
Expand Down

0 comments on commit affb1af

Please sign in to comment.