diff options
author | 2017-01-19 11:51:50 -0700 | |
---|---|---|
committer | 2017-01-20 14:48:03 +0100 | |
commit | e810e48c0c9a1a1ebb90cfe966bce6dc80ce08e7 (patch) | |
tree | 8fbbcdd8b1297e8968c78bb5f697f058923a4401 /drivers/hv/hyperv_vmbus.h | |
parent | Drivers: hv: vmbus: Move the check for hypercall page setup (diff) | |
download | linux-e810e48c0c9a1a1ebb90cfe966bce6dc80ce08e7.tar.gz linux-e810e48c0c9a1a1ebb90cfe966bce6dc80ce08e7.tar.bz2 linux-e810e48c0c9a1a1ebb90cfe966bce6dc80ce08e7.zip |
Drivers: hv: vmbus: Move the code to signal end of message
As part of the effort to separate out architecture specific code, move the
code for signaling end of message.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/hv/hyperv_vmbus.h')
-rw-r--r-- | drivers/hv/hyperv_vmbus.h | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h index 59eb28c45ff5..e9f5d2c2fb6b 100644 --- a/drivers/hv/hyperv_vmbus.h +++ b/drivers/hv/hyperv_vmbus.h @@ -521,41 +521,6 @@ struct vmbus_channel_message_table_entry { extern struct vmbus_channel_message_table_entry channel_message_table[CHANNELMSG_COUNT]; -/* Free the message slot and signal end-of-message if required */ -static inline void vmbus_signal_eom(struct hv_message *msg, u32 old_msg_type) -{ - /* - * On crash we're reading some other CPU's message page and we need - * to be careful: this other CPU may already had cleared the header - * and the host may already had delivered some other message there. - * In case we blindly write msg->header.message_type we're going - * to lose it. We can still lose a message of the same type but - * we count on the fact that there can only be one - * CHANNELMSG_UNLOAD_RESPONSE and we don't care about other messages - * on crash. - */ - if (cmpxchg(&msg->header.message_type, old_msg_type, - HVMSG_NONE) != old_msg_type) - return; - - /* - * Make sure the write to MessageType (ie set to - * HVMSG_NONE) happens before we read the - * MessagePending and EOMing. Otherwise, the EOMing - * will not deliver any more messages since there is - * no empty slot - */ - mb(); - - if (msg->header.message_flags.msg_pending) { - /* - * This will cause message queue rescan to - * possibly deliver another msg from the - * hypervisor - */ - wrmsrl(HV_X64_MSR_EOM, 0); - } -} /* General vmbus interface */ |