diff options
Diffstat (limited to 'usr/src/uts/intel')
-rw-r--r-- | usr/src/uts/intel/io/heci/heci_init.c | 46 | ||||
-rw-r--r-- | usr/src/uts/intel/io/heci/heci_main.c | 21 | ||||
-rw-r--r-- | usr/src/uts/intel/io/heci/io_heci.c | 6 | ||||
-rw-r--r-- | usr/src/uts/intel/os/arch_kdi.c | 9 |
4 files changed, 31 insertions, 51 deletions
diff --git a/usr/src/uts/intel/io/heci/heci_init.c b/usr/src/uts/intel/io/heci/heci_init.c index 7248ff6d21..0f5e4da22f 100644 --- a/usr/src/uts/intel/io/heci/heci_init.c +++ b/usr/src/uts/intel/io/heci/heci_init.c @@ -302,11 +302,8 @@ heci_hw_init(struct iamt_heci_device *dev) /* wait for ME to turn on ME_RDY */ err = 0; while (!dev->recvd_msg && err != -1) { - clock_t tm; - tm = ddi_get_lbolt(); - err = cv_timedwait(&dev->wait_recvd_msg, - &dev->device_lock, - tm + HECI_INTEROP_TIMEOUT); + err = cv_reltimedwait(&dev->wait_recvd_msg, + &dev->device_lock, HECI_INTEROP_TIMEOUT, TR_CLOCK_TICK); } if (err == -1 && !dev->recvd_msg) { @@ -572,6 +569,7 @@ host_start_message(struct iamt_heci_device *dev) struct hbm_host_version_request *host_start_req; struct hbm_host_stop_request *host_stop_req; int err = 0; + clock_t delta = (clock_t)(timeout * HZ); /* host start message */ mutex_enter(&dev->device_lock); @@ -600,10 +598,8 @@ host_start_message(struct iamt_heci_device *dev) DBG("call wait_event_interruptible_timeout for response message.\n"); err = 0; while (err != -1 && !dev->recvd_msg) { - clock_t tm; - tm = ddi_get_lbolt(); - err = cv_timedwait(&dev->wait_recvd_msg, - &dev->device_lock, tm + timeout * HZ); + err = cv_reltimedwait(&dev->wait_recvd_msg, &dev->device_lock, + delta, TR_CLOCK_TICK); } if (err == -1 && !dev->recvd_msg) { DBG("wait_timeout failed on host start response message.\n"); @@ -655,6 +651,7 @@ host_enum_clients_message(struct iamt_heci_device *dev) struct hbm_host_enum_request *host_enum_req; int err = 0; uint8_t i, j; + clock_t delta = (clock_t)(timeout * HZ); mutex_enter(&dev->device_lock); @@ -680,11 +677,8 @@ host_enum_clients_message(struct iamt_heci_device *dev) dev->recvd_msg = 0; err = 0; while (!dev->recvd_msg && err != -1) { - clock_t tm; - tm = ddi_get_lbolt(); - err = cv_timedwait(&dev->wait_recvd_msg, - &dev->device_lock, - tm + timeout * HZ); + err = cv_reltimedwait(&dev->wait_recvd_msg, &dev->device_lock, + delta, TR_CLOCK_TICK); } if (err == -1 && !dev->recvd_msg) { DBG("wait_event_interruptible_timeout failed " @@ -723,6 +717,7 @@ host_client_properties(struct iamt_heci_device *dev, struct heci_msg_hdr *heci_hdr; struct hbm_props_request *host_cli_req; int err; + clock_t delta = 10 * HZ; mutex_enter(&dev->device_lock); heci_hdr = (struct heci_msg_hdr *)&dev->wr_msg_buf[0]; @@ -747,11 +742,8 @@ host_client_properties(struct iamt_heci_device *dev, err = 0; while (!dev->recvd_msg && err != -1) { - clock_t tm; - tm = ddi_get_lbolt(); - err = cv_timedwait(&dev->wait_recvd_msg, - &dev->device_lock, - tm + 10 * HZ); + err = cv_reltimedwait(&dev->wait_recvd_msg, &dev->device_lock, + delta, TR_CLOCK_TICK); } if (err == -1 && !dev->recvd_msg) { DBG("wait failed on props resp msg.\n"); @@ -928,6 +920,7 @@ heci_connect_me_client(struct iamt_heci_device *dev, long timeout) { int err = 0; + clock_t delta = (clock_t)(timeout * HZ); if ((dev == NULL) || (priv == NULL)) return (0); @@ -943,11 +936,8 @@ heci_connect_me_client(struct iamt_heci_device *dev, while (!(HECI_FILE_CONNECTED == priv->state || HECI_FILE_DISCONNECTED == priv->state) && err != -1) { - clock_t tm; - tm = ddi_get_lbolt(); - err = cv_timedwait(&dev->wait_recvd_msg, - &dev->device_lock, - tm + timeout*HZ); + err = cv_reltimedwait(&dev->wait_recvd_msg, &dev->device_lock, + delta, TR_CLOCK_TICK); } if (HECI_FILE_CONNECTED != priv->state) { heci_remove_client_from_file_list(dev, priv->host_client_id); @@ -1100,6 +1090,7 @@ heci_disconnect_host_client(struct iamt_heci_device *dev, int rets, err; long timeout = 15; /* 15 seconds */ struct heci_cb_private *priv_cb; + clock_t delta = (clock_t)(timeout * HZ); if ((!dev) || (!file_ext)) return (-ENODEV); @@ -1136,11 +1127,8 @@ heci_disconnect_host_client(struct iamt_heci_device *dev, while (err != -1 && (HECI_FILE_DISCONNECTED != file_ext->state)) { - clock_t tm; - tm = ddi_get_lbolt(); - err = cv_timedwait(&dev->wait_recvd_msg, - &dev->device_lock, - tm + timeout * HZ); + err = cv_reltimedwait(&dev->wait_recvd_msg, &dev->device_lock, + delta, TR_CLOCK_TICK); } mutex_exit(&dev->device_lock); diff --git a/usr/src/uts/intel/io/heci/heci_main.c b/usr/src/uts/intel/io/heci/heci_main.c index 73dc79a7ca..c09cda21f5 100644 --- a/usr/src/uts/intel/io/heci/heci_main.c +++ b/usr/src/uts/intel/io/heci/heci_main.c @@ -411,11 +411,8 @@ heci_detach(dev_info_t *dip, ddi_detach_cmd_t cmd) err = 0; while (!dev->wd_stoped && err != -1) { - clock_t tm; - tm = ddi_get_lbolt(); - err = cv_timedwait(&dev->wait_stop_wd, - &dev->device_lock, - tm + 10*HZ); + err = cv_reltimedwait(&dev->wait_stop_wd, + &dev->device_lock, 10*HZ, TR_CLOCK_TICK); } if (!dev->wd_stoped) { @@ -1450,11 +1447,8 @@ heci_quiesce(dev_info_t *dip) err = 0; while (!dev->wd_stoped && err != -1) { - clock_t tm; - tm = ddi_get_lbolt(); - err = cv_timedwait(&dev->wait_stop_wd, - &dev->device_lock, - tm + 10*HZ); + err = cv_reltimedwait(&dev->wait_stop_wd, + &dev->device_lock, 10*HZ, TR_CLOCK_TICK); } if (!dev->wd_stoped) { @@ -1527,11 +1521,8 @@ heci_suspend(dev_info_t *dip) err = 0; while (!device->wd_stoped && err != -1) { - clock_t tm; - tm = ddi_get_lbolt(); - err = cv_timedwait(&device->wait_stop_wd, - &device->device_lock, - tm + 10*HZ); + err = cv_reltimedwait(&device->wait_stop_wd, + &device->device_lock, 10*HZ, TR_CLOCK_TICK); } if (!device->wd_stoped) { diff --git a/usr/src/uts/intel/io/heci/io_heci.c b/usr/src/uts/intel/io/heci/io_heci.c index 31fc742544..994cde3194 100644 --- a/usr/src/uts/intel/io/heci/io_heci.c +++ b/usr/src/uts/intel/io/heci/io_heci.c @@ -336,10 +336,8 @@ fail: err = 0; while (err != -1 && HECI_FILE_CONNECTED != file_ext->state && HECI_FILE_DISCONNECTED != file_ext->state) { - clock_t tm; - tm = ddi_get_lbolt(); - err = cv_timedwait(&dev->wait_recvd_msg, - &dev->device_lock, tm + timeout * HZ); + err = cv_reltimedwait(&dev->wait_recvd_msg, + &dev->device_lock, timeout * HZ, TR_CLOCK_TICK); } mutex_exit(&dev->device_lock); diff --git a/usr/src/uts/intel/os/arch_kdi.c b/usr/src/uts/intel/os/arch_kdi.c index abc2dfa599..4aa852ae2c 100644 --- a/usr/src/uts/intel/os/arch_kdi.c +++ b/usr/src/uts/intel/os/arch_kdi.c @@ -19,12 +19,10 @@ * CDDL HEADER END */ /* - * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * Kernel/Debugger Interface (KDI) routines. Called during debugger under * various system states (boot, while running, while the debugger has control). @@ -44,10 +42,13 @@ #include <sys/trap.h> #include <sys/kobj.h> #include <sys/kobj_impl.h> +#include <sys/clock_impl.h> static void kdi_system_claim(void) { + lbolt_debug_entry(); + psm_notifyf(PSM_DEBUG_ENTER); } @@ -55,6 +56,8 @@ static void kdi_system_release(void) { psm_notifyf(PSM_DEBUG_EXIT); + + lbolt_debug_return(); } static cpu_t * |