hyperv: Wait 5 seconds for hyperv result, instead of 500ms

This addresses various devices (network, stoarge) attach failure.

Reported by:	Hongxiong Xian <v-hoxian microsoft com>
Tested by:	Hongxiong Xian <v-hoxian microsoft com>
MFC after:	1 week
Sponsored by:	Microsoft OSTC
Differential Revision:	https://reviews.freebsd.org/D5435
This commit is contained in:
Sepherosa Ziehau 2016-02-25 09:27:50 +00:00
parent 14b5e85b18
commit f7d33dfef2
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=296028
3 changed files with 8 additions and 6 deletions

View File

@ -352,7 +352,7 @@ hv_rf_send_offload_request(struct hv_device *device,
goto cleanup;
}
ret = sema_timedwait(&request->wait_sema, 500);
ret = sema_timedwait(&request->wait_sema, 5 * hz);
if (ret != 0) {
device_printf(dev, "hv send offload request timeout\n");
goto cleanup;
@ -619,7 +619,7 @@ hv_rf_set_packet_filter(rndis_device *device, uint32_t new_filter)
* us when the response has arrived. In the failure case,
* sema_timedwait() returns a non-zero status after waiting 5 seconds.
*/
ret = sema_timedwait(&request->wait_sema, 500);
ret = sema_timedwait(&request->wait_sema, 5 * hz);
if (ret == 0) {
/* Response received, check status */
set_complete = &request->response_msg.msg.set_complete;

View File

@ -30,6 +30,7 @@
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/systm.h>
#include <sys/mbuf.h>
@ -194,7 +195,7 @@ hv_vmbus_channel_open(
if (ret != 0)
goto cleanup;
ret = sema_timedwait(&open_info->wait_sema, 500); /* KYS 5 seconds */
ret = sema_timedwait(&open_info->wait_sema, 5 * hz); /* KYS 5 seconds */
if (ret) {
if(bootverbose)
@ -439,7 +440,7 @@ hv_vmbus_channel_establish_gpadl(
}
}
ret = sema_timedwait(&msg_info->wait_sema, 500); /* KYS 5 seconds*/
ret = sema_timedwait(&msg_info->wait_sema, 5 * hz); /* KYS 5 seconds*/
if (ret != 0)
goto cleanup;
@ -499,7 +500,7 @@ hv_vmbus_channel_teardown_gpdal(
if (ret != 0)
goto cleanup;
ret = sema_timedwait(&info->wait_sema, 500); /* KYS 5 seconds */
ret = sema_timedwait(&info->wait_sema, 5 * hz); /* KYS 5 seconds */
cleanup:
/*

View File

@ -27,6 +27,7 @@
*/
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/systm.h>
#include <sys/lock.h>
@ -121,7 +122,7 @@ hv_vmbus_negotiate_version(hv_vmbus_channel_msg_info *msg_info,
/**
* Wait for the connection response
*/
ret = sema_timedwait(&msg_info->wait_sema, 500); /* KYS 5 seconds */
ret = sema_timedwait(&msg_info->wait_sema, 5 * hz); /* KYS 5 seconds */
mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
TAILQ_REMOVE(