summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaymond Chen <Raymond.Chen@Sun.COM>2009-06-05 13:26:07 +0800
committerRaymond Chen <Raymond.Chen@Sun.COM>2009-06-05 13:26:07 +0800
commit489b7c4ab76ae8df137fbfcc2214f7baa52883a0 (patch)
treea50bc198922042c9ffd4285beabb66713bc01499
parentffdc884126129b5717570ffc6192f88d1c088711 (diff)
downloadillumos-gate-489b7c4ab76ae8df137fbfcc2214f7baa52883a0.tar.gz
6839931 Run usb video test case cause system panic
6840438 wusb related warlock warnings
-rw-r--r--usr/src/uts/common/Makefile.files3
-rw-r--r--usr/src/uts/common/io/usb/hcd/ehci/ehci_isoch_util.c3
-rw-r--r--usr/src/uts/common/io/usb/hwa/hwahc/hwahc.c60
-rw-r--r--usr/src/uts/common/io/usb/hwa/hwahc/hwahc_util.c15
-rw-r--r--usr/src/uts/common/io/usb/usba/wa.c40
-rw-r--r--usr/src/uts/common/io/usb/usba/whcdi.c103
-rw-r--r--usr/src/uts/common/io/warlock/hid_with_usba.wlcmd2
-rw-r--r--usr/src/uts/common/io/warlock/scsa2usb.wlcmd4
-rw-r--r--usr/src/uts/common/io/warlock/scsa2usb_with_usba.wlcmd9
-rw-r--r--usr/src/uts/common/io/warlock/ugen_with_usba.wlcmd8
-rw-r--r--usr/src/uts/common/io/warlock/usb_ac_with_usba.wlcmd6
-rw-r--r--usr/src/uts/common/io/warlock/usb_ia_with_usba.wlcmd8
-rw-r--r--usr/src/uts/common/io/warlock/usb_mid_with_usba.wlcmd8
-rw-r--r--usr/src/uts/common/io/warlock/usbftdi_with_usba.wlcmd5
-rw-r--r--usr/src/uts/common/io/warlock/usbprn_with_usba.wlcmd8
-rw-r--r--usr/src/uts/common/io/warlock/usbser_edge_with_usba.wlcmd8
-rw-r--r--usr/src/uts/common/io/warlock/usbser_keyspan_with_usba.wlcmd8
-rw-r--r--usr/src/uts/common/io/warlock/usbskel_with_usba.wlcmd9
-rw-r--r--usr/src/uts/common/io/warlock/usbsprl_with_usba.wlcmd8
-rw-r--r--usr/src/uts/common/io/warlock/usbvc_with_usba.wlcmd8
-rw-r--r--usr/src/uts/common/sys/usb/hubd/hubdvar.h2
-rw-r--r--usr/src/uts/common/sys/usb/usba/usba_types.h14
-rw-r--r--usr/src/uts/common/sys/usb/usba/whcdi.h28
-rw-r--r--usr/src/uts/intel/hid/Makefile5
-rw-r--r--usr/src/uts/intel/scsa2usb/Makefile4
-rw-r--r--usr/src/uts/intel/ugen/Makefile4
-rw-r--r--usr/src/uts/intel/usb_ac/Makefile2
-rw-r--r--usr/src/uts/intel/usb_ia/Makefile5
-rw-r--r--usr/src/uts/intel/usb_mid/Makefile5
-rw-r--r--usr/src/uts/intel/usbftdi/Makefile2
-rw-r--r--usr/src/uts/intel/usbprn/Makefile5
-rw-r--r--usr/src/uts/intel/usbskel/Makefile4
-rw-r--r--usr/src/uts/intel/usbsksp/Makefile4
-rw-r--r--usr/src/uts/intel/usbsprl/Makefile4
-rw-r--r--usr/src/uts/intel/usbvc/Makefile5
-rw-r--r--usr/src/uts/sparc/hid/Makefile4
-rw-r--r--usr/src/uts/sparc/scsa2usb/Makefile4
-rw-r--r--usr/src/uts/sparc/ugen/Makefile4
-rw-r--r--usr/src/uts/sparc/usb_ia/Makefile5
-rw-r--r--usr/src/uts/sparc/usb_mid/Makefile5
-rw-r--r--usr/src/uts/sparc/usbftdi/Makefile2
-rw-r--r--usr/src/uts/sparc/usbprn/Makefile4
-rw-r--r--usr/src/uts/sparc/usbskel/Makefile4
-rw-r--r--usr/src/uts/sparc/usbsksp/Makefile4
-rw-r--r--usr/src/uts/sparc/usbsprl/Makefile4
-rw-r--r--usr/src/uts/sparc/usbvc/Makefile5
46 files changed, 335 insertions, 126 deletions
diff --git a/usr/src/uts/common/Makefile.files b/usr/src/uts/common/Makefile.files
index ac17b4f78f..85410c94de 100644
--- a/usr/src/uts/common/Makefile.files
+++ b/usr/src/uts/common/Makefile.files
@@ -758,6 +758,9 @@ SATA_OBJS += sata.o
USBA_OBJS += hcdi.o usba.o usbai.o hubdi.o parser.o genconsole.o \
usbai_pipe_mgmt.o usbai_req.o usbai_util.o usbai_register.o \
usba_devdb.o usba10_calls.o usba_ugen.o whcdi.o wa.o
+USBA_WITHOUT_WUSB_OBJS += hcdi.o usba.o usbai.o hubdi.o parser.o genconsole.o \
+ usbai_pipe_mgmt.o usbai_req.o usbai_util.o usbai_register.o \
+ usba_devdb.o usba10_calls.o usba_ugen.o
USBA10_OBJS += usba10.o
diff --git a/usr/src/uts/common/io/usb/hcd/ehci/ehci_isoch_util.c b/usr/src/uts/common/io/usb/hcd/ehci/ehci_isoch_util.c
index ba1a8626bb..b79aa032bc 100644
--- a/usr/src/uts/common/io/usb/hcd/ehci/ehci_isoch_util.c
+++ b/usr/src/uts/common/io/usb/hcd/ehci/ehci_isoch_util.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -668,7 +668,6 @@ ehci_deallocate_itd(
"ehci_deallocate_itd: old_itd = 0x%p", (void *)old_itd);
ASSERT(mutex_owned(&ehcip->ehci_int_mutex));
- ASSERT(Get_ITD(old_itd->itd_trans_wrapper) == itw->itw_id);
/* If it has been marked RECLAIM it has already been removed */
if (Get_ITD(old_itd->itd_state) != EHCI_ITD_RECLAIM) {
diff --git a/usr/src/uts/common/io/usb/hwa/hwahc/hwahc.c b/usr/src/uts/common/io/usb/hwa/hwahc/hwahc.c
index 4266b5a60a..ad93cf4cb2 100644
--- a/usr/src/uts/common/io/usb/hwa/hwahc/hwahc.c
+++ b/usr/src/uts/common/io/usb/hwa/hwahc/hwahc.c
@@ -765,7 +765,9 @@ hwahc_cleanup(dev_info_t *dip, hwahc_state_t *hwahcp)
if (hwahcp->hwahc_flags & HWAHC_WA_STARTED) {
/* can be combined with wusb_wa_data_fini() */
+ mutex_exit(&hwahcp->hwahc_mutex);
hwahc_wa_stop(hwahcp);
+ mutex_enter(&hwahcp->hwahc_mutex);
}
if (hwahcp->hwahc_flags & HWAHC_HC_INITED) {
@@ -2409,13 +2411,17 @@ hwahc_bus_unconfig(dev_info_t *dip, uint_t flag, ddi_bus_config_op_t op,
if (hc_data->hc_children_state[port] & WUSB_CHILD_ZAP) {
wusb_dev_info_t *dev_info;
wusb_secrt_data_t *csecrt_data;
+ usba_device_t *child_ud;
USB_DPRINTF_L3(PRINT_MASK_EVENTS,
hwahcp->hwahc_log_handle,
"hwahc_bus_unconfig: physically zap port %d", port);
+ child_ud = hc_data->hc_usba_devices[port];
+ mutex_exit(&hc_data->hc_mutex);
/* zap the dip and usba_device structure as well */
- usba_free_usba_device(hc_data->hc_usba_devices[port]);
+ usba_free_usba_device(child_ud);
+ mutex_enter(&hc_data->hc_mutex);
hc_data->hc_usba_devices[port] = NULL;
/* dip freed in usba_destroy_child_devi */
@@ -3689,8 +3695,10 @@ hwahc_hc_channel_suspend(hwahc_state_t *hwahcp)
return (USB_SUCCESS);
}
+ mutex_exit(&hwahcp->hwahc_mutex);
/* suspend host, refer to WUSB 1.0 spec 8.5.3.14 */
rval = wusb_hc_stop_ch(&hwahcp->hwahc_hc_data, 10000); /* 10ms */
+ mutex_enter(&hwahcp->hwahc_mutex);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_PM, hwahcp->hwahc_log_handle,
"hwahc_hc_channel_suspend: wusb channel stop fails");
@@ -3940,8 +3948,8 @@ hwahc_hc_initial_start(hwahc_state_t *hwahcp)
return (rval);
}
- /* reset wire adapter */
mutex_exit(&hwahcp->hwahc_mutex);
+ /* reset wire adapter */
rval = wusb_wa_reset(&hwahcp->hwahc_wa_data,
hwahcp->hwahc_default_pipe);
mutex_enter(&hwahcp->hwahc_mutex);
@@ -3967,12 +3975,14 @@ hwahc_hc_initial_start(hwahc_state_t *hwahcp)
}
}
+ mutex_exit(&hwahcp->hwahc_mutex);
/* set cluster id for the wusb channel */
rval = wusb_hc_set_cluster_id(&hwahcp->hwahc_hc_data, cluster_id);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_initial_start: set cluster id %d fails",
cluster_id);
+ mutex_enter(&hwahcp->hwahc_mutex);
goto err;
}
@@ -3985,6 +3995,7 @@ hwahc_hc_initial_start(hwahc_state_t *hwahcp)
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_initial_start: set stream idx %d fails",
stream_idx);
+ mutex_enter(&hwahcp->hwahc_mutex);
goto err;
}
@@ -3996,16 +4007,17 @@ hwahc_hc_initial_start(hwahc_state_t *hwahcp)
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_initial_start: set num dnts fails");
+ mutex_enter(&hwahcp->hwahc_mutex);
goto err;
}
/* set host info IE */
rval = wusb_hc_add_host_info(&hwahcp->hwahc_hc_data, stream_idx);
-
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_initial_start: add hostinfo ie fails");
+ mutex_enter(&hwahcp->hwahc_mutex);
goto err;
}
@@ -4014,7 +4026,7 @@ hwahc_hc_initial_start(hwahc_state_t *hwahcp)
(void) memset(mas, 0xff, WUSB_SET_WUSB_MAS_LEN);
mas[0] = 0xf0; /* the first 4 slots are for beacons */
rval = wusb_hc_set_wusb_mas(&hwahcp->hwahc_hc_data, mas);
-
+ mutex_enter(&hwahcp->hwahc_mutex);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_initial_start: set wusb mas fails");
@@ -4030,29 +4042,28 @@ hwahc_hc_initial_start(hwahc_state_t *hwahcp)
random_get_pseudo_bytes(dft_gtkid, 3);
/* set default GTK, need a way to dynamically compute it */
+ mutex_exit(&hwahcp->hwahc_mutex);
rval = wusb_hc_set_gtk(&hwahcp->hwahc_hc_data, dft_gtk, dft_gtkid);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_initial_start: set gtk fails");
+ mutex_enter(&hwahcp->hwahc_mutex);
goto err;
}
/* enable wire adapter */
- mutex_exit(&hwahcp->hwahc_mutex);
rval = wusb_wa_enable(&hwahcp->hwahc_wa_data,
hwahcp->hwahc_default_pipe);
- mutex_enter(&hwahcp->hwahc_mutex);
-
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_initial_start: enable wa fails");
+ mutex_enter(&hwahcp->hwahc_mutex);
goto err;
}
/* Start Notification endpoint */
- mutex_exit(&hwahcp->hwahc_mutex);
rval = wusb_wa_start_nep(&hwahcp->hwahc_wa_data, USB_FLAGS_SLEEP);
if (rval != USB_SUCCESS) {
@@ -4104,7 +4115,9 @@ err:
wusb_hc_free_cluster_id(cluster_id);
}
+ mutex_exit(&hwahcp->hwahc_mutex);
(void) uwb_stop_beacon(hwahcp->hwahc_dip);
+ mutex_enter(&hwahcp->hwahc_mutex);
return (rval);
}
@@ -4159,7 +4172,6 @@ hwahc_hc_final_stop(hwahc_state_t *hwahcp)
mutex_exit(&hwahcp->hwahc_mutex);
(void) wusb_wa_disable(&hwahcp->hwahc_wa_data,
hwahcp->hwahc_default_pipe);
- mutex_enter(&hwahcp->hwahc_mutex);
/* stop beaconing. Not necessary to unreserve mas */
(void) uwb_stop_beacon(hwahcp->hwahc_dip);
@@ -4167,12 +4179,11 @@ hwahc_hc_final_stop(hwahc_state_t *hwahcp)
wusb_hc_rem_host_info(&hwahcp->hwahc_hc_data);
/* Manually remove all connected children */
- mutex_exit(&hwahcp->hwahc_mutex);
hwahc_run_callbacks(hwahcp, USBA_EVENT_TAG_HOT_REMOVAL);
- mutex_enter(&hwahcp->hwahc_mutex);
/* delete all the children */
(void) hwahc_cleanup_child(hwahcp->hwahc_dip);
+ mutex_enter(&hwahcp->hwahc_mutex);
}
/*
@@ -4233,11 +4244,13 @@ hwahc_hc_channel_start(hwahc_state_t *hwahcp)
/* set stream idx */
stream_idx = 1;
+ mutex_exit(&hwahcp->hwahc_mutex);
rval = wusb_hc_set_stream_idx(&hwahcp->hwahc_hc_data, stream_idx);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_channel_start: set stream idx %d fails",
stream_idx);
+ mutex_enter(&hwahcp->hwahc_mutex);
return (rval);
}
@@ -4250,6 +4263,7 @@ hwahc_hc_channel_start(hwahc_state_t *hwahcp)
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_channel_start: set wusb mas fails");
+ mutex_enter(&hwahcp->hwahc_mutex);
return (rval);
}
@@ -4261,10 +4275,12 @@ hwahc_hc_channel_start(hwahc_state_t *hwahcp)
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_channel_start: add hostinfo ie fails");
+ mutex_enter(&hwahcp->hwahc_mutex);
return (rval);
}
+ mutex_enter(&hwahcp->hwahc_mutex);
hwahcp->hwahc_hw_state = HWAHC_HW_STARTED;
hwahcp->hwahc_hc_soft_state = HWAHC_CTRL_OPERATIONAL_STATE;
@@ -4317,11 +4333,12 @@ hwahc_hc_channel_stop(hwahc_state_t *hwahcp)
/* send host disconect IE so that the children know to disconnect */
mutex_exit(&hwahcp->hwahc_mutex);
rval = wusb_hc_send_host_disconnect(&hwahcp->hwahc_hc_data);
- mutex_enter(&hwahcp->hwahc_mutex);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_channel_stop: send host disconnect ie fails");
+ mutex_enter(&hwahcp->hwahc_mutex);
+
return (rval);
}
@@ -4335,6 +4352,7 @@ hwahc_hc_channel_stop(hwahc_state_t *hwahcp)
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_channel_stop: set stream idx 0 fails");
+ mutex_enter(&hwahcp->hwahc_mutex);
return (rval);
}
@@ -4346,9 +4364,12 @@ hwahc_hc_channel_stop(hwahc_state_t *hwahcp)
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_hc_channel_stop: set null wusb mas fails");
+ mutex_enter(&hwahcp->hwahc_mutex);
return (rval);
}
+
+ mutex_enter(&hwahcp->hwahc_mutex);
(void) memcpy(hwahcp->hwahc_hc_data.hc_mas, mas, WUSB_SET_WUSB_MAS_LEN);
hwahcp->hwahc_hw_state = HWAHC_HW_CH_STOPPED;
@@ -4897,6 +4918,7 @@ hwahc_stop_result_thread(hwahc_state_t *hwahcp)
USB_DPRINTF_L4(PRINT_MASK_ATTA, hwahcp->hwahc_log_handle,
"hwahc_stop_result_thread: reset hwa bulk-in pipe");
+ mutex_exit(&hwahcp->hwahc_mutex);
usb_pipe_reset(wa_data->wa_dip, wa_data->wa_bulkin_ph,
USB_FLAGS_SLEEP, NULL, NULL);
@@ -4908,6 +4930,7 @@ hwahc_stop_result_thread(hwahc_state_t *hwahcp)
"hwahc_stop_result_thread: close hwa bulk-in pipe");
usb_pipe_close(wa_data->wa_dip, wa_data->wa_bulkin_ph,
USB_FLAGS_SLEEP, NULL, NULL);
+ mutex_enter(&hwahcp->hwahc_mutex);
mutex_enter(&wa_data->wa_mutex);
wa_data->wa_bulkin_ph = NULL;
@@ -5178,8 +5201,10 @@ hwahc_handle_dn(hwahc_state_t *hwahcp, hwa_notif_dn_recvd_t *dn_notif)
mutex_enter(&hc_data->hc_mutex);
if (dn_notif->bSourceDeviceAddr ==
hc_data->hc_alive_ie.bDeviceAddress[0]) {
+ mutex_exit(&hc_data->hc_mutex);
wusb_hc_rem_ie(hc_data,
(wusb_ie_header_t *)&hc_data->hc_alive_ie);
+ mutex_enter(&hc_data->hc_mutex);
}
mutex_exit(&hc_data->hc_mutex);
@@ -5441,12 +5466,15 @@ hwahc_trust_timeout_handler(void *arg)
{
wusb_dev_info_t *dev = (wusb_dev_info_t *)arg;
usb_port_t port;
+ uint16_t dev_addr;
wusb_hc_data_t *hc_data = dev->wdev_hc;
uint8_t retry = 3;
+ int rval;
mutex_enter(&hc_data->hc_mutex);
dev->wdev_trust_timer = 0;
+ dev_addr = dev->wdev_addr;
if (dev->wdev_active == 1) {
/* device is active during the past period. Restart the timer */
@@ -5454,8 +5482,12 @@ hwahc_trust_timeout_handler(void *arg)
} else {
/* send a KeepAlive IE to query the device */
for (retry = 0; retry < 3; retry++) {
- if (wusb_hc_send_keepalive_ie(hc_data,
- dev->wdev_addr) == USB_SUCCESS) {
+ mutex_exit(&hc_data->hc_mutex);
+ rval = wusb_hc_send_keepalive_ie(hc_data,
+ dev_addr);
+ mutex_enter(&hc_data->hc_mutex);
+
+ if (rval == USB_SUCCESS) {
break;
}
/* retry 3 times if fail to send KeepAlive IE */
diff --git a/usr/src/uts/common/io/usb/hwa/hwahc/hwahc_util.c b/usr/src/uts/common/io/usb/hwa/hwahc/hwahc_util.c
index 527a5167b2..07159a5f2d 100644
--- a/usr/src/uts/common/io/usb/hwa/hwahc/hwahc_util.c
+++ b/usr/src/uts/common/io/usb/hwa/hwahc/hwahc_util.c
@@ -288,8 +288,12 @@ hwahc_pipe_cleanup(hwahc_state_t *hwahcp, usba_pipe_handle_data_t *ph)
/* if active, abort the requests */
if (hdl->rp_state == WA_RPIPE_STATE_ACTIVE) {
+ mutex_exit(&hdl->rp_mutex);
+ mutex_exit(&hwahcp->hwahc_mutex);
rval = wusb_wa_rpipe_abort(hwahcp->hwahc_dip,
hwahcp->hwahc_default_pipe, hdl);
+ mutex_enter(&hwahcp->hwahc_mutex);
+ mutex_enter(&hdl->rp_mutex);
}
mutex_exit(&hdl->rp_mutex);
@@ -303,7 +307,10 @@ hwahc_pipe_cleanup(hwahc_state_t *hwahcp, usba_pipe_handle_data_t *ph)
switch (pp->pp_state) {
case HWAHC_PIPE_STATE_CLOSE:
completion_reason = USB_CR_PIPE_CLOSING;
+
+ mutex_exit(&hwahcp->hwahc_mutex);
(void) wusb_wa_rpipe_reset(hwahcp->hwahc_dip, ph, hdl, 0);
+ mutex_enter(&hwahcp->hwahc_mutex);
break;
case HWAHC_PIPE_STATE_RESET:
@@ -487,18 +494,14 @@ hwahc_hcdi_pipe_open(
mutex_exit(&hwahcp->hwahc_mutex);
/* target the rpipe to the endpoint */
- mutex_enter(&wa->wa_mutex);
rval = wusb_wa_set_rpipe_target(hwahcp->hwahc_dip, wa,
hwahcp->hwahc_default_pipe, ph, pp->pp_rp);
- mutex_exit(&wa->wa_mutex);
mutex_enter(&hwahcp->hwahc_mutex);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(PRINT_MASK_HCDI, hwahcp->hwahc_log_handle,
"hwahc_hcdi_pipe_open: set target for rpipe failed");
- mutex_enter(&wa->wa_mutex);
wusb_wa_release_rpipe(wa, pp->pp_rp);
- mutex_exit(&wa->wa_mutex);
kmem_free(pp, sizeof (hwahc_pipe_private_t));
mutex_exit(&hwahcp->hwahc_mutex);
@@ -536,7 +539,6 @@ hwahc_hcdi_pipe_close(
hwahc_state_t *hwahcp;
hwahc_pipe_private_t *pp;
usb_ep_descr_t *epdt = &ph->p_ep;
- wusb_wa_data_t *wa;
hwahcp = hwahc_obtain_state(ph->p_usba_device->usb_root_hub_dip);
@@ -559,10 +561,7 @@ hwahc_hcdi_pipe_close(
wusb_wa_clear_dev_ep(ph); /* clear the remote dev's endpoint */
mutex_enter(&hwahcp->hwahc_mutex);
- wa = &hwahcp->hwahc_wa_data;
- mutex_enter(&wa->wa_mutex);
wusb_wa_release_rpipe(&hwahcp->hwahc_wa_data, pp->pp_rp);
- mutex_exit(&wa->wa_mutex);
mutex_enter(&ph->p_mutex);
cv_destroy(&pp->pp_xfer_cmpl_cv);
diff --git a/usr/src/uts/common/io/usb/usba/wa.c b/usr/src/uts/common/io/usb/usba/wa.c
index 1671355011..9928e483bd 100644
--- a/usr/src/uts/common/io/usb/usba/wa.c
+++ b/usr/src/uts/common/io/usb/usba/wa.c
@@ -106,9 +106,11 @@ wusb_wa_rpipes_init(wusb_wa_data_t *wa_data)
mutex_init(&hdl->rp_mutex, NULL, MUTEX_DRIVER, NULL);
cv_init(&hdl->rp_cv, NULL, CV_DRIVER, NULL);
+ _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*hdl));
hdl->rp_state = WA_RPIPE_STATE_FREE;
hdl->rp_refcnt = 0;
hdl->rp_timeout_list = NULL;
+ _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*hdl));
}
}
@@ -149,6 +151,8 @@ wusb_wa_data_init(dev_info_t *dip, wusb_wa_data_t *wa_data, wusb_wa_cb_t *cbs,
return (USB_INVALID_ARGS);
}
+ _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*wa_data));
+
/* get inf descr and ept descrs from altif data */
altif_data = &dev_data->dev_curr_cfg->
cfg_if[dev_data->dev_curr_if].if_alt[0];
@@ -227,6 +231,8 @@ wusb_wa_data_init(dev_info_t *dip, wusb_wa_data_t *wa_data, wusb_wa_cb_t *cbs,
mutex_init(&wa_data->wa_mutex, NULL, MUTEX_DRIVER, NULL);
+ _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*wa_data));
+
return (USB_SUCCESS);
}
@@ -234,11 +240,13 @@ wusb_wa_data_init(dev_info_t *dip, wusb_wa_data_t *wa_data, wusb_wa_cb_t *cbs,
void
wusb_wa_data_fini(wusb_wa_data_t *wa_data)
{
+ mutex_enter(&wa_data->wa_mutex);
if (wa_data->wa_rpipe_hdl) {
wusb_wa_rpipes_fini(wa_data);
kmem_free(wa_data->wa_rpipe_hdl, wa_data->wa_num_rpipes *
sizeof (wusb_wa_rpipe_hdl_t));
}
+ mutex_exit(&wa_data->wa_mutex);
mutex_destroy(&wa_data->wa_mutex);
}
@@ -354,6 +362,9 @@ wusb_wa_get_rpipe_descrs(wusb_wa_data_t *wa_data, usb_pipe_handle_t ph,
return (USB_INVALID_ARGS);
}
+ /* called at initialization, no other threads yet */
+ _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*wa_data));
+
for (i = 0; i < wa_data->wa_num_rpipes; i++) {
rval = wusb_wa_get_rpipe_descr(dip, ph, i,
&wa_data->wa_rpipe_hdl[i].rp_descr, mask, handle);
@@ -366,6 +377,7 @@ wusb_wa_get_rpipe_descrs(wusb_wa_data_t *wa_data, usb_pipe_handle_t ph,
return (rval);
}
}
+ _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*wa_data));
return (USB_SUCCESS);
}
@@ -836,15 +848,16 @@ wusb_wa_get_rpipe(wusb_wa_data_t *wa_data, usb_pipe_handle_t ph,
int
wusb_wa_release_rpipe(wusb_wa_data_t *wa, wusb_wa_rpipe_hdl_t *hdl)
{
- ASSERT(mutex_owned(&wa->wa_mutex));
if (hdl == NULL) {
return (USB_FAILURE);
}
+ mutex_enter(&wa->wa_mutex);
mutex_enter(&hdl->rp_mutex);
if (hdl->rp_refcnt == 0) {
mutex_exit(&hdl->rp_mutex);
+ mutex_exit(&wa->wa_mutex);
return (USB_FAILURE);
}
@@ -860,6 +873,7 @@ wusb_wa_release_rpipe(wusb_wa_data_t *wa, wusb_wa_rpipe_hdl_t *hdl)
}
mutex_exit(&hdl->rp_mutex);
+ mutex_exit(&wa->wa_mutex);
return (USB_SUCCESS);
}
@@ -1037,7 +1051,6 @@ wusb_wa_set_rpipe_target(dev_info_t *dip, wusb_wa_data_t *wa,
uint16_t maxsize;
uint16_t seg_len;
- ASSERT(mutex_owned(&wa->wa_mutex));
USB_DPRINTF_L4(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_wa_set_rpipe_target: ph_data = 0x%p rp_hdl = 0x%p",
@@ -1078,6 +1091,7 @@ wusb_wa_set_rpipe_target(dev_info_t *dip, wusb_wa_data_t *wa,
return (USB_FAILURE);
}
+ mutex_enter(&wa->wa_mutex);
usba_device = usba_get_usba_device(ph_data->p_dip);
mutex_enter(&hdl->rp_mutex);
@@ -1106,6 +1120,7 @@ wusb_wa_set_rpipe_target(dev_info_t *dip, wusb_wa_data_t *wa,
/* WA don't have so many blocks to fulfill this reqirement */
if (wa->wa_avail_blocks < blockcnt) {
mutex_exit(&hdl->rp_mutex);
+ mutex_exit(&wa->wa_mutex);
return (USB_FAILURE);
}
@@ -1156,6 +1171,8 @@ wusb_wa_set_rpipe_target(dev_info_t *dip, wusb_wa_data_t *wa,
hdl->rp_descr.wNumTransactionErrors = 0;
mutex_exit(&hdl->rp_mutex);
+ mutex_exit(&wa->wa_mutex);
+
/* set rpipe descr */
rval = wusb_wa_set_rpipe_descr(dip, ph, &hdl->rp_descr);
if (rval != USB_SUCCESS) {
@@ -1199,17 +1216,19 @@ wusb_wa_rpipe_abort(dev_info_t *dip, usb_pipe_handle_t ph,
usb_cb_flags_t cb_flags;
int rval;
- ASSERT(mutex_owned(&hdl->rp_mutex));
+ mutex_enter(&hdl->rp_mutex);
USB_DPRINTF_L4(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_wa_rpipe_abort: rp_hdl = 0x%p", (void *)hdl);
/* only abort when there is active transfer */
if (hdl->rp_state != WA_RPIPE_STATE_ACTIVE) {
+ mutex_exit(&hdl->rp_mutex);
return (USB_SUCCESS);
}
+ mutex_exit(&hdl->rp_mutex);
rval = usb_pipe_sync_ctrl_xfer(dip, ph,
WA_CLASS_RPIPE_REQ_OUT_TYPE,
WA_REQ_ABORT_RPIPE,
@@ -2098,6 +2117,7 @@ wusb_wa_free_segs(wusb_wa_trans_wrapper_t *wr)
return;
}
+
for (i = 0; i < wr->wr_nsegs; i++) {
seg = &wr->wr_seg_array[i];
@@ -2204,8 +2224,10 @@ wusb_wa_abort_req(wusb_wa_data_t *wa_data, wusb_wa_trans_wrapper_t *wr,
p[7] = (uint8_t)(id >> 24);
req->bulk_data->b_wptr += WA_ABORT_REQ_LEN;
+ mutex_exit(&wr->wr_rp->rp_mutex);
rval = usb_pipe_bulk_xfer(wa_data->wa_bulkout_ph, req,
USB_FLAGS_SLEEP);
+ mutex_enter(&wr->wr_rp->rp_mutex);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_wa_abort_req: send abort req failed, rval = %d",
@@ -2360,9 +2382,13 @@ wusb_wa_xfer_timeout_handler(void *arg)
wr->wr_state = WR_TIMEOUT;
wa_data = wr->wr_wa_data;
+
+ mutex_exit(&hdl->rp_mutex);
rval = wusb_wa_get_rpipe_status(wa_data->wa_dip,
wa_data->wa_default_pipe, hdl->rp_descr.wRPipeIndex,
&rp_status);
+ mutex_enter(&hdl->rp_mutex);
+
if (rval != USB_SUCCESS) {
/* reset WA perhaps? */
hdl->rp_state = WA_RPIPE_STATE_ERROR;
@@ -2389,8 +2415,10 @@ wusb_wa_xfer_timeout_handler(void *arg)
USB_DPRINTF_L3(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_wa_xfer_timeout_handler: rp not idle");
+ mutex_exit(&hdl->rp_mutex);
rval = wusb_wa_rpipe_abort(wa_data->wa_dip,
wa_data->wa_default_pipe, hdl);
+ mutex_enter(&hdl->rp_mutex);
USB_DPRINTF_L3(DPRINT_MASK_WHCDI,
whcdi_log_handle,
@@ -2549,8 +2577,10 @@ wusb_wa_wr_xfer(wusb_wa_data_t *wa_data, wusb_wa_rpipe_hdl_t *hdl,
req = wr->wr_seg_array[i].seg_trans_reqp;
ASSERT(req != NULL);
+ mutex_exit(&hdl->rp_mutex);
/* send ith transfer request */
rval = usb_pipe_bulk_xfer(wa_data->wa_bulkout_ph, req, 0);
+ mutex_enter(&hdl->rp_mutex);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_wa_wr_xfer: send transfer request %d failed,"
@@ -2595,8 +2625,10 @@ wusb_wa_wr_xfer(wusb_wa_data_t *wa_data, wusb_wa_rpipe_hdl_t *hdl,
}
wr->wr_seg_array[i].seg_data_req_state = 1; /* submitted */
+ mutex_exit(&hdl->rp_mutex);
/* send ith data asynchronously */
rval = usb_pipe_bulk_xfer(wa_data->wa_bulkout_ph, req, 0);
+ mutex_enter(&hdl->rp_mutex);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_wa_wr_xfer: send transfer data %d failed",
@@ -3222,9 +3254,7 @@ wusb_wa_handle_error(wusb_wa_data_t *wa_data, wusb_wa_trans_wrapper_t *wr,
USB_DPRINTF_L3(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_wa_handle_error: segment err, abort other segs");
- mutex_exit(&wr->wr_rp->rp_mutex);
wusb_wa_abort_req(wa_data, wr, wr->wr_id);
- mutex_enter(&wr->wr_rp->rp_mutex);
}
wusb_wa_stop_xfer_timer(wr);
diff --git a/usr/src/uts/common/io/usb/usba/whcdi.c b/usr/src/uts/common/io/usb/usba/whcdi.c
index b35f5c67c7..97599a97bb 100644
--- a/usr/src/uts/common/io/usb/usba/whcdi.c
+++ b/usr/src/uts/common/io/usb/usba/whcdi.c
@@ -54,6 +54,7 @@ static kmutex_t whcdi_mutex;
/* use 0-30 bit as wusb cluster_id bitmaps */
static uint32_t cluster_id_mask = 0;
+_NOTE(MUTEX_PROTECTS_DATA(whcdi_mutex, cluster_id_mask))
usb_log_handle_t whcdi_log_handle;
uint_t whcdi_errlevel = USB_LOG_L4;
@@ -105,10 +106,9 @@ wusb_hc_get_cluster_id()
/* set the bitmask */
cluster_id_mask |= (1 << i);
id = WUSB_MIN_CLUSTER_ID + i;
- mutex_exit(&whcdi_mutex);
-
USB_DPRINTF_L3(DPRINT_MASK_WHCDI, whcdi_log_handle,
"new cluster id %d, mask %d", id, cluster_id_mask);
+ mutex_exit(&whcdi_mutex);
return (id);
}
@@ -244,7 +244,9 @@ wusb_hc_set_cluster_id(wusb_hc_data_t *hc_data, uint8_t cluster_id)
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"Set_Cluster_ID fails: rval=%d ", rval);
} else {
+ mutex_enter(&hc_data->hc_mutex);
hc_data->hc_cluster_id = cluster_id;
+ mutex_exit(&hc_data->hc_mutex);
}
return (rval);
@@ -321,13 +323,17 @@ wusb_hc_remove_mmc_ie(wusb_hc_data_t *hc_data, uint8_t iehdl)
dev_info_t *dip = hc_data->hc_dip;
int rval;
+ ASSERT(mutex_owned(&hc_data->hc_mutex));
+
if ((iehdl >= hc_data->hc_num_mmcies) ||
(hc_data->hc_mmcie_list[iehdl] == NULL)) {
return (USB_FAILURE);
}
+ mutex_exit(&hc_data->hc_mutex);
rval = hc_data->rem_mmc_ie(dip, iehdl);
+ mutex_enter(&hc_data->hc_mutex);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"Remove_MMC_IE fails: rval=%d ", rval);
@@ -402,6 +408,7 @@ wusb_hc_rem_ie(wusb_hc_data_t *hc_data, wusb_ie_header_t *ieh)
int i;
int16_t iehdl = -1;
+ mutex_enter(&hc_data->hc_mutex);
for (i = 0; i < hc_data->hc_num_mmcies; i++) {
if (hc_data->hc_mmcie_list[i] == ieh) {
iehdl = (int16_t)i;
@@ -413,12 +420,15 @@ wusb_hc_rem_ie(wusb_hc_data_t *hc_data, wusb_ie_header_t *ieh)
if (iehdl == -1) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_hc_rem_ie: IE(%p) iehdl not found", (void *)ieh);
+ mutex_exit(&hc_data->hc_mutex);
return;
}
(void) wusb_hc_remove_mmc_ie(hc_data, (uint8_t)iehdl);
+
wusb_hc_free_iehdl(hc_data, (uint8_t)iehdl);
+ mutex_exit(&hc_data->hc_mutex);
}
/* Add Host Info IE */
@@ -431,6 +441,8 @@ wusb_hc_add_host_info(wusb_hc_data_t *hc_data, uint8_t stream_idx)
hinfo = kmem_zalloc(sizeof (wusb_ie_host_info_t), KM_SLEEP);
+ mutex_enter(&hc_data->hc_mutex);
+
hinfo->bIEIdentifier = WUSB_IE_HOSTINFO;
hinfo->bLength = sizeof (wusb_ie_host_info_t);
if (hc_data->hc_newcon_enabled) {
@@ -446,6 +458,7 @@ wusb_hc_add_host_info(wusb_hc_data_t *hc_data, uint8_t stream_idx)
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_hc_add_host_info: get ie handle fails");
+ mutex_exit(&hc_data->hc_mutex);
return (rval);
}
@@ -453,16 +466,20 @@ wusb_hc_add_host_info(wusb_hc_data_t *hc_data, uint8_t stream_idx)
USB_DPRINTF_L3(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_hc_add_host_info: iehdl=%d", iehdl);
+ mutex_exit(&hc_data->hc_mutex);
rval = wusb_hc_add_mmc_ie(hc_data, 10, 1, iehdl,
sizeof (wusb_ie_host_info_t), (uint8_t *)hinfo);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_hc_add_host_info: add host info mmc ie fails");
+ mutex_enter(&hc_data->hc_mutex);
wusb_hc_free_iehdl(hc_data, iehdl);
+ mutex_exit(&hc_data->hc_mutex);
return (rval);
}
+
return (USB_SUCCESS);
}
@@ -667,8 +684,7 @@ wusb_hc_send_keepalive_ie(wusb_hc_data_t *hc_data, uint8_t addr)
uint8_t iehdl;
int rval;
- ASSERT(mutex_owned(&hc_data->hc_mutex));
-
+ mutex_enter(&hc_data->hc_mutex);
/*
* the scheme ensures each time only one device addr
* is set each time
@@ -684,6 +700,7 @@ wusb_hc_send_keepalive_ie(wusb_hc_data_t *hc_data, uint8_t addr)
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_hc_send_keepalive_ie: get ie handle fails");
+ mutex_exit(&hc_data->hc_mutex);
return (rval);
}
@@ -701,7 +718,6 @@ wusb_hc_send_keepalive_ie(wusb_hc_data_t *hc_data, uint8_t addr)
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_hc_send_keepalive_ie: add keepalive ie fails");
- mutex_enter(&hc_data->hc_mutex);
/* no need to free the ack iehdl since it is reused */
return (rval);
@@ -719,6 +735,7 @@ wusb_hc_send_keepalive_ie(wusb_hc_data_t *hc_data, uint8_t addr)
mutex_enter(&hc_data->hc_mutex);
(void) wusb_hc_remove_mmc_ie(hc_data, iehdl);
wusb_hc_free_iehdl(hc_data, iehdl);
+ mutex_exit(&hc_data->hc_mutex);
return (USB_SUCCESS);
}
@@ -1212,6 +1229,7 @@ wusb_test_write(wusb_dev_info_t *dev_info)
{
int16_t value;
int i, rval;
+ usb_pipe_handle_t dev_ph;
value = wusb_get_ccm_encryption_value(&dev_info->wdev_secrt_data);
if (value == -1) {
@@ -1224,7 +1242,11 @@ wusb_test_write(wusb_dev_info_t *dev_info)
for (i = 0; i < 1; i++) {
USB_DPRINTF_L4(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_test_write %d start:", i);
- rval = wusb_dev_set_encrypt(dev_info->wdev_ph, (uint8_t)value);
+ mutex_enter(&dev_info->wdev_hc->hc_mutex);
+ dev_ph = dev_info->wdev_ph;
+ mutex_exit(&dev_info->wdev_hc->hc_mutex);
+
+ rval = wusb_dev_set_encrypt(dev_ph, (uint8_t)value);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_test_write: %dth set encryption failed", i);
@@ -1237,10 +1259,12 @@ wusb_test_write(wusb_dev_info_t *dev_info)
/* enable CCM encryption on the device */
int
-wusb_enable_dev_encrypt(wusb_dev_info_t *dev_info)
+wusb_enable_dev_encrypt(wusb_hc_data_t *hc_data, wusb_dev_info_t *dev_info)
{
int16_t value;
int rval;
+ usb_pipe_handle_t ph;
+
USB_DPRINTF_L3(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_enable_dev_encrypt:enter");
@@ -1252,7 +1276,11 @@ wusb_enable_dev_encrypt(wusb_dev_info_t *dev_info)
return (USB_FAILURE);
}
- rval = wusb_dev_set_encrypt(dev_info->wdev_ph, (uint8_t)value);
+ mutex_enter(&hc_data->hc_mutex);
+ ph = dev_info->wdev_ph;
+ mutex_exit(&hc_data->hc_mutex);
+
+ rval = wusb_dev_set_encrypt(ph, (uint8_t)value);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_enable_dev_encrypt: set encryption failed");
@@ -1275,6 +1303,7 @@ wusb_hc_auth_dev(wusb_hc_data_t *hc_data, usb_port_t port,
{
wusb_dev_info_t *dev_info;
usb_pipe_handle_t child_ph;
+ dev_info_t *child_dip;
ASSERT(mutex_owned(&hc_data->hc_mutex));
@@ -1288,6 +1317,7 @@ wusb_hc_auth_dev(wusb_hc_data_t *hc_data, usb_port_t port,
return (USB_INVALID_ARGS);
}
child_ph = dev_info->wdev_ph;
+ child_dip = hc_data->hc_children_dips[port];
mutex_exit(&hc_data->hc_mutex);
/* get device security descrs */
@@ -1304,7 +1334,7 @@ wusb_hc_auth_dev(wusb_hc_data_t *hc_data, usb_port_t port,
* enable CCM encryption on the device, this needs to be done
* before 4-way handshake. [WUSB 1.0/7.3.2.5]
*/
- if (wusb_enable_dev_encrypt(dev_info) != USB_SUCCESS) {
+ if (wusb_enable_dev_encrypt(hc_data, dev_info) != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_hc_auth_dev: set encryption failed");
@@ -1312,11 +1342,12 @@ wusb_hc_auth_dev(wusb_hc_data_t *hc_data, usb_port_t port,
return (USB_FAILURE);
}
- mutex_enter(&hc_data->hc_mutex);
/* this seems to relieve the non-response issue somehow */
- usb_pipe_close(hc_data->hc_children_dips[port], dev_info->wdev_ph,
+ usb_pipe_close(child_dip, child_ph,
USB_FLAGS_SLEEP | USBA_FLAGS_PRIVILEGED, NULL, NULL);
+
+ mutex_enter(&hc_data->hc_mutex);
dev_info->wdev_ph = NULL;
/* unauthenticated state */
@@ -1346,7 +1377,7 @@ wusb_hc_auth_dev(wusb_hc_data_t *hc_data, usb_port_t port,
(void *)dev_info->wdev_cc);
mutex_exit(&hc_data->hc_mutex);
- if (usb_pipe_open(hc_data->hc_children_dips[port], NULL, NULL,
+ if (usb_pipe_open(child_dip, NULL, NULL,
USB_FLAGS_SLEEP | USBA_FLAGS_PRIVILEGED, &child_ph) !=
USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
@@ -1369,8 +1400,7 @@ wusb_hc_auth_dev(wusb_hc_data_t *hc_data, usb_port_t port,
port);
/* perhaps resetting the device is better */
- usb_pipe_reset(hc_data->hc_children_dips[port],
- child_ph,
+ usb_pipe_reset(child_dip, child_ph,
USB_FLAGS_SLEEP | USBA_FLAGS_PRIVILEGED,
NULL, NULL);
(void) wusb_dev_set_encrypt(child_ph, 0);
@@ -1658,8 +1688,11 @@ wusb_hc_handle_port_connect(wusb_hc_data_t *hc_data, usb_port_t port,
error:
if (dev_info->wdev_ph != NULL) {
- usb_pipe_close(child_dip, dev_info->wdev_ph,
+ mutex_exit(&hc_data->hc_mutex);
+ usb_pipe_close(child_dip, child_ph,
USB_FLAGS_SLEEP | USBA_FLAGS_PRIVILEGED, NULL, NULL);
+ mutex_enter(&hc_data->hc_mutex);
+
dev_info->wdev_ph = NULL;
}
@@ -1674,9 +1707,10 @@ error:
"failure to remove child node");
}
- /* no need to unset address for WUSB */
- child_ud->usb_addr = 0;
+ mutex_exit(&hc_data->hc_mutex);
usba_free_usba_device(child_ud);
+ mutex_enter(&hc_data->hc_mutex);
+
hc_data->hc_children_dips[port] = NULL;
hc_data->hc_usba_devices[port] = NULL;
}
@@ -2096,8 +2130,10 @@ wusb_hc_send_host_disconnect(wusb_hc_data_t *hc_data)
disconn_ie->bIEIdentifier = WUSB_IE_HOST_DISCONNECT;
disconn_ie->bLength = sizeof (wusb_ie_host_disconnect_t);
+ mutex_enter(&hc_data->hc_mutex);
rval = wusb_hc_get_iehdl(hc_data, (wusb_ie_header_t *)disconn_ie,
&iehdl);
+ mutex_exit(&hc_data->hc_mutex);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_hc_send_host_disconnect: get ie handle fails");
@@ -2112,15 +2148,21 @@ wusb_hc_send_host_disconnect(wusb_hc_data_t *hc_data)
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_hc_send_host_disconnect: add host "
"disconnect ie fails");
+ mutex_enter(&hc_data->hc_mutex);
wusb_hc_free_iehdl(hc_data, iehdl);
+ mutex_exit(&hc_data->hc_mutex);
kmem_free(disconn_ie, sizeof (wusb_ie_host_disconnect_t));
return (rval);
}
delay(drv_usectohz(100000)); /* WUSB 1.0/7.5.5 */
+
+ mutex_enter(&hc_data->hc_mutex);
(void) wusb_hc_remove_mmc_ie(hc_data, iehdl);
wusb_hc_free_iehdl(hc_data, iehdl);
+ mutex_exit(&hc_data->hc_mutex);
+
kmem_free(disconn_ie, sizeof (wusb_ie_host_disconnect_t));
return (USB_SUCCESS);
@@ -2435,6 +2477,8 @@ wusb_hc_set_ptk(wusb_hc_data_t *hc_data, uint8_t *key_data, usb_port_t port)
int rval;
uint8_t *p;
+ ASSERT(mutex_owned(&hc_data->hc_mutex));
+
if ((key_data == NULL) || (dev_info == NULL)) {
return (USB_INVALID_ARGS);
@@ -2449,6 +2493,8 @@ wusb_hc_set_ptk(wusb_hc_data_t *hc_data, uint8_t *key_data, usb_port_t port)
p = &key_descr->KeyData[0];
(void) memcpy(p, key_data, 16);
+ mutex_exit(&hc_data->hc_mutex);
+
if ((rval = hc_data->set_ptk(dip, key_descr, klen, port)) !=
USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
@@ -2456,6 +2502,7 @@ wusb_hc_set_ptk(wusb_hc_data_t *hc_data, uint8_t *key_data, usb_port_t port)
}
kmem_free(key_descr, klen);
+ mutex_enter(&hc_data->hc_mutex);
return (rval);
}
@@ -2649,21 +2696,27 @@ wusb_4way_handshake(wusb_hc_data_t *hc_data, usb_port_t port,
uchar_t adata2[] = "out-of-bandMIC";
uchar_t bdata[32], keyout[32], mic[8];
int rval;
+ usb_pipe_handle_t w_ph;
USB_DPRINTF_L4(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_4way_handshake: port = %d", port);
+ mutex_enter(&hc_data->hc_mutex);
dev_info = hc_data->hc_dev_infos[port];
if (dev_info == NULL) {
+ mutex_exit(&hc_data->hc_mutex);
return (USB_FAILURE);
}
cc = dev_info->wdev_cc;
if (dev_info->wdev_ph == NULL || cc == NULL) {
+ mutex_exit(&hc_data->hc_mutex);
return (USB_FAILURE);
}
+ w_ph = dev_info->wdev_ph;
+
hs = (wusb_hndshk_data_t *)kmem_zalloc(
3 * sizeof (wusb_hndshk_data_t), KM_SLEEP);
@@ -2683,6 +2736,7 @@ wusb_4way_handshake(wusb_hc_data_t *hc_data, usb_port_t port,
!= USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"Nonce generation failed: %d", rval);
+ mutex_exit(&hc_data->hc_mutex);
goto done;
}
@@ -2691,7 +2745,8 @@ wusb_4way_handshake(wusb_hc_data_t *hc_data, usb_port_t port,
USB_DPRINTF_L4(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_4way_handshake: shake 1.............");
- rval = wusb_handshake(dev_info->wdev_ph, &(hs[0]), 1);
+ mutex_exit(&hc_data->hc_mutex);
+ rval = wusb_handshake(w_ph, &(hs[0]), 1);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"handshake 1 failed, rval = %d", rval);
@@ -2702,7 +2757,7 @@ wusb_4way_handshake(wusb_hc_data_t *hc_data, usb_port_t port,
/* handshake 2 */
USB_DPRINTF_L4(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_4way_handshake: shake 2.............");
- rval = wusb_handshake(dev_info->wdev_ph, &(hs[1]), 2);
+ rval = wusb_handshake(w_ph, &(hs[1]), 2);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"handshake 2 failed, rval = %d", rval);
@@ -2721,10 +2776,14 @@ wusb_4way_handshake(wusb_hc_data_t *hc_data, usb_port_t port,
/* derived session keys, refer to WUSB 1.0/6.5.1 */
n.sfn = 0;
n.tkid = tkid[0] | (tkid[1]<<8) | (tkid[2] << 16);
+
+ mutex_enter(&hc_data->hc_mutex);
n.daddr = dev_info->wdev_addr;
+
n.saddr = hc_data->hc_addr;
bcopy(hs[0].Nonce, bdata, 16);
bcopy(hs[1].Nonce, bdata + 16, 16);
+ mutex_exit(&hc_data->hc_mutex);
rval = PRF_256(cc->CK, 16, &n, adata1, 14, bdata, 32, keyout);
if (rval != 0) {
@@ -2769,7 +2828,7 @@ wusb_4way_handshake(wusb_hc_data_t *hc_data, usb_port_t port,
USB_DPRINTF_L4(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_4way_handshake: shake 3.............");
- rval = wusb_handshake(dev_info->wdev_ph, &(hs[2]), 3);
+ rval = wusb_handshake(w_ph, &(hs[2]), 3);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"handshake 3 failed, rval = %d", rval);
@@ -2777,12 +2836,14 @@ wusb_4way_handshake(wusb_hc_data_t *hc_data, usb_port_t port,
goto done;
}
+ mutex_enter(&hc_data->hc_mutex);
/* set PTK for host */
(void) memcpy(dev_info->wdev_ptk, keyout + 16, 16);
USB_DPRINTF_L4(DPRINT_MASK_WHCDI, whcdi_log_handle,
"wusb_4way_handshake: set ptk .............");
rval = wusb_hc_set_ptk(hc_data, dev_info->wdev_ptk, port);
+ mutex_exit(&hc_data->hc_mutex);
if (rval != USB_SUCCESS) {
USB_DPRINTF_L2(DPRINT_MASK_WHCDI, whcdi_log_handle,
"set ptk for host failed, rval = %d", rval);
@@ -2809,7 +2870,7 @@ wusb_4way_handshake(wusb_hc_data_t *hc_data, usb_port_t port,
* set GTK for device
* GTK is initialized when hc_data is inited
*/
- rval = wusb_dev_set_key(dev_info->wdev_ph, 2 << 4,
+ rval = wusb_dev_set_key(w_ph, 2 << 4,
&hc_data->hc_gtk, hc_data->hc_gtk.bLength);
done:
kmem_free(hs, 3 * sizeof (wusb_hndshk_data_t));
diff --git a/usr/src/uts/common/io/warlock/hid_with_usba.wlcmd b/usr/src/uts/common/io/warlock/hid_with_usba.wlcmd
index f40741e759..c6cbe4a0f5 100644
--- a/usr/src/uts/common/io/warlock/hid_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/hid_with_usba.wlcmd
@@ -46,6 +46,7 @@ root usb_get_if_number
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_get_private
root usb_get_current_frame_number
root usb_get_max_isoc_pkts
@@ -191,6 +192,7 @@ add ehci_trans_wrapper::tw_handle_qtd targets ehci_handle_ctrl_qtd
add ehci_trans_wrapper::tw_handle_qtd targets ehci_handle_bulk_qtd
add ehci_trans_wrapper::tw_handle_qtd targets ehci_handle_intr_qtd
+add hubd::h_cleanup_child targets warlock_dummy
add usba_hcdi_ops::usba_hcdi_console_input_init targets \
ohci_hcdi_polled_input_init
add usba_hcdi_ops::usba_hcdi_console_input_fini targets \
diff --git a/usr/src/uts/common/io/warlock/scsa2usb.wlcmd b/usr/src/uts/common/io/warlock/scsa2usb.wlcmd
index 713952a554..96ff440e22 100644
--- a/usr/src/uts/common/io/warlock/scsa2usb.wlcmd
+++ b/usr/src/uts/common/io/warlock/scsa2usb.wlcmd
@@ -19,11 +19,10 @@
# CDDL HEADER END
#
#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
-#ident "%Z%%M% %I% %E% SMI"
one scsa2usb_state
@@ -33,7 +32,6 @@ root scsa2usb_scsi_getcap scsa2usb_scsi_setcap scsa2usb_scsi_init_pkt
root scsa2usb_scsi_destroy_pkt
root scsa2usb_reconnect_event_cb
root scsa2usb_disconnect_event_cb
-root scsa2usb_null_free
root scsa2usb_panic_callb
root scsa2usb_work_thread
diff --git a/usr/src/uts/common/io/warlock/scsa2usb_with_usba.wlcmd b/usr/src/uts/common/io/warlock/scsa2usb_with_usba.wlcmd
index 2caebe76a1..d7b46544a1 100644
--- a/usr/src/uts/common/io/warlock/scsa2usb_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/scsa2usb_with_usba.wlcmd
@@ -19,10 +19,9 @@
# CDDL HEADER END
#
#
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
-#ident "%Z%%M% %I% %E% SMI"
one ohci_state
one ehci_state
@@ -51,6 +50,7 @@ root usb_get_if_number
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_get_private
root usb_get_current_frame_number
root usb_get_max_isoc_pkts
@@ -125,6 +125,9 @@ root hubd_root_hub_cleanup_thread
root ohci_intr
root ehci_intr
+root ohci_quiesce
+root uhci_quiesce
+root ehci_quiesce
root usba_dbuf_tail
root usb_log
@@ -142,6 +145,7 @@ root usb_fail_checkpoint
add usba_pipe_async_req::sync_func targets usba_pipe_sync_close
add usba_pipe_async_req::sync_func targets usba_pipe_sync_reset
+add hubd::h_cleanup_child targets warlock_dummy
add usb_isoc_req::isoc_cb targets warlock_dummy
add usb_isoc_req::isoc_exc_cb targets warlock_dummy
add usba_pipe_async_req::callback targets warlock_dummy
@@ -169,7 +173,6 @@ root scsa2usb_scsi_tgt_init scsa2usb_scsi_tgt_probe scsa2usb_scsi_tgt_free
root scsa2usb_reconnect_event_cb
root scsa2usb_disconnect_event_cb
-root scsa2usb_null_free
root scsa2usb_work_thread
root scsa2usb_panic_callb
diff --git a/usr/src/uts/common/io/warlock/ugen_with_usba.wlcmd b/usr/src/uts/common/io/warlock/ugen_with_usba.wlcmd
index b307a5c21d..964ea09aa3 100644
--- a/usr/src/uts/common/io/warlock/ugen_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/ugen_with_usba.wlcmd
@@ -18,10 +18,9 @@
#
# 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.
#
-#ident "%Z%%M% %I% %E% SMI"
one ohci_state
one ehci_state
@@ -45,6 +44,7 @@ root usb_get_dev_descr
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_get_private
root usb_get_max_isoc_pkts
root usb_pipe_set_private
@@ -109,6 +109,9 @@ root hubd_pre_suspend_event_cb
root hubd_reconnect_event_cb
root hubd_root_hub_cleanup_thread
root hubd_bus_power
+root ehci_quiesce
+root uhci_quiesce
+root ohci_quiesce
### specify the ugen root functions
root ugen_skel_disconnect_ev_cb
@@ -126,6 +129,7 @@ add usb_ctrl_req::ctrl_cb targets warlock_dummy
add usb_ctrl_req::ctrl_exc_cb targets warlock_dummy
add usb_intr_req::intr_cb targets warlock_dummy
add usb_intr_req::intr_exc_cb targets warlock_dummy
+add hubd::h_cleanup_child targets warlock_dummy
add usba_pm_req::cb targets warlock_dummy
add ohci_trans_wrapper::tw_handle_td targets ohci_handle_bulk_td
diff --git a/usr/src/uts/common/io/warlock/usb_ac_with_usba.wlcmd b/usr/src/uts/common/io/warlock/usb_ac_with_usba.wlcmd
index aba4357455..dd4c0a0f46 100644
--- a/usr/src/uts/common/io/warlock/usb_ac_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/usb_ac_with_usba.wlcmd
@@ -47,6 +47,7 @@ root usb_get_if_number
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_get_private
root usb_get_current_frame_number
root usb_get_max_isoc_pkts
@@ -94,6 +95,10 @@ root hcdi_autoclearing
root hcdi_cb_thread
root hcdi_shared_cb_thread
+root ohci_quiesce
+root uhci_quiesce
+root ehci_quiesce
+
root usb_ugen_attach
root usb_ugen_close
root usb_ugen_detach
@@ -164,6 +169,7 @@ root usb_ac_stop_play
root usb_ac_stop_record
root usb_ac_teardown
+add hubd::h_cleanup_child targets warlock_dummy
add usba_pipe_async_req::sync_func targets usba_pipe_sync_close
add usba_pipe_async_req::sync_func targets usba_pipe_sync_reset
diff --git a/usr/src/uts/common/io/warlock/usb_ia_with_usba.wlcmd b/usr/src/uts/common/io/warlock/usb_ia_with_usba.wlcmd
index 400af40f87..4c86ebcf06 100644
--- a/usr/src/uts/common/io/warlock/usb_ia_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/usb_ia_with_usba.wlcmd
@@ -1,5 +1,5 @@
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# CDDL HEADER START
@@ -21,7 +21,6 @@
#
# CDDL HEADER END
#
-#ident "%Z%%M% %I% %E% SMI"
one ohci_state
@@ -51,6 +50,7 @@ root usb_get_if_number
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_reset
root usb_pipe_get_private
root usb_get_current_frame_number
@@ -142,6 +142,9 @@ root hcdi_autoclearing
root hcdi_cb_thread
root hcdi_shared_cb_thread
+root ohci_quiesce
+root uhci_quiesce
+root ehci_quiesce
root usba_pipe_do_async_func_thread
root usba_get_hc_dma_attr
@@ -152,6 +155,7 @@ root usba_taskq_destroy
root usba_mk_mctl
root usb_fail_checkpoint
+add hubd::h_cleanup_child targets warlock_dummy
add usb_bulk_req::bulk_cb targets warlock_dummy
add usb_bulk_req::bulk_exc_cb targets warlock_dummy
add usb_ctrl_req::ctrl_cb targets warlock_dummy
diff --git a/usr/src/uts/common/io/warlock/usb_mid_with_usba.wlcmd b/usr/src/uts/common/io/warlock/usb_mid_with_usba.wlcmd
index c8248fc9de..7685d3e02d 100644
--- a/usr/src/uts/common/io/warlock/usb_mid_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/usb_mid_with_usba.wlcmd
@@ -1,5 +1,5 @@
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# CDDL HEADER START
@@ -21,7 +21,6 @@
#
# CDDL HEADER END
#
-#ident "%Z%%M% %I% %E% SMI"
one ohci_state
@@ -51,6 +50,7 @@ root usb_get_if_number
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_reset
root usb_pipe_get_private
root usb_get_current_frame_number
@@ -60,6 +60,9 @@ root usba_ready_interface_node
root usba_free_hcdi_ops
root ohci_intr
root ehci_intr
+root ohci_quiesce
+root uhci_quiesce
+root ehci_quiesce
root usba_dbuf_tail
root usb_log
@@ -140,6 +143,7 @@ root usba_taskq_destroy
root usba_mk_mctl
root usb_fail_checkpoint
+add hubd::h_cleanup_child targets warlock_dummy
add usb_bulk_req::bulk_cb targets warlock_dummy
add usb_bulk_req::bulk_exc_cb targets warlock_dummy
add usb_ctrl_req::ctrl_cb targets warlock_dummy
diff --git a/usr/src/uts/common/io/warlock/usbftdi_with_usba.wlcmd b/usr/src/uts/common/io/warlock/usbftdi_with_usba.wlcmd
index bf0eaffeef..5f40e18082 100644
--- a/usr/src/uts/common/io/warlock/usbftdi_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/usbftdi_with_usba.wlcmd
@@ -47,6 +47,7 @@ root usb_get_if_number
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_get_private
root usb_get_current_frame_number
root usb_get_max_isoc_pkts
@@ -143,6 +144,9 @@ root usb_fail_checkpoint
root ohci_intr
root ehci_intr
+root ohci_quiesce
+root uhci_quiesce
+root ehci_quiesce
### specify the uftdi root functions
@@ -194,6 +198,7 @@ add ds_ops::ds_in_pipe targets uftdi_in_pipe
add uftdi_state::uf_cb.cb_tx targets usbser_tx_cb
add uftdi_state::uf_cb.cb_rx targets usbser_rx_cb
+add hubd::h_cleanup_child targets warlock_dummy
add usb_ctrl_req::ctrl_cb targets warlock_dummy
add usb_ctrl_req::ctrl_exc_cb targets warlock_dummy
add usb_bulk_req::bulk_cb targets uftdi_bulkin_cb
diff --git a/usr/src/uts/common/io/warlock/usbprn_with_usba.wlcmd b/usr/src/uts/common/io/warlock/usbprn_with_usba.wlcmd
index d3c8386557..55785e7015 100644
--- a/usr/src/uts/common/io/warlock/usbprn_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/usbprn_with_usba.wlcmd
@@ -1,5 +1,5 @@
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# CDDL HEADER START
@@ -21,7 +21,6 @@
#
# CDDL HEADER END
#
-#ident "%Z%%M% %I% %E% SMI"
one ohci_state
one ehci_state
@@ -45,6 +44,7 @@ root usb_get_if_number
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_get_private
root usb_get_current_frame_number
root usb_get_max_isoc_pkts
@@ -94,6 +94,9 @@ root hcdi_autoclearing
root hcdi_cb_thread
root hcdi_shared_cb_thread
+root ohci_quiesce
+root uhci_quiesce
+root ehci_quiesce
root hubd_restore_state_cb
root hubd_disconnect_event_cb
@@ -139,6 +142,7 @@ root usbprn_reconnect_event_cb
root usbprn_disconnect_event_cb
root usbprn_power
+add hubd::h_cleanup_child targets warlock_dummy
add usb_ctrl_req::ctrl_cb targets warlock_dummy
add usb_ctrl_req::ctrl_exc_cb targets warlock_dummy
add usb_bulk_req::bulk_cb targets usbprn_bulk_xfer_cb
diff --git a/usr/src/uts/common/io/warlock/usbser_edge_with_usba.wlcmd b/usr/src/uts/common/io/warlock/usbser_edge_with_usba.wlcmd
index 50e2f88102..eb9f49649b 100644
--- a/usr/src/uts/common/io/warlock/usbser_edge_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/usbser_edge_with_usba.wlcmd
@@ -1,8 +1,7 @@
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
-#ident "%Z%%M% %I% %E% SMI"
one ohci_state
one ehci_state
@@ -32,6 +31,7 @@ root usb_get_if_number
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_get_private
root usb_get_current_frame_number
root usb_get_max_isoc_pkts
@@ -129,6 +129,9 @@ root usb_fail_checkpoint
root ohci_intr
root ehci_intr
+root ohci_quiesce
+root uhci_quiesce
+root ehci_quiesce
### specify the edgeport root functions
root usbser_soft_state_size
@@ -188,6 +191,7 @@ add edge_port::ep_cb.cb_tx targets usbser_tx_cb
add edge_port::ep_cb.cb_rx targets usbser_rx_cb
add edge_port::ep_cb.cb_status targets usbser_status_cb
+add hubd::h_cleanup_child targets warlock_dummy
add usb_ctrl_req::ctrl_cb targets warlock_dummy
add usb_ctrl_req::ctrl_exc_cb targets warlock_dummy
add usb_bulk_req::bulk_cb targets edgesp_bulkin_cb
diff --git a/usr/src/uts/common/io/warlock/usbser_keyspan_with_usba.wlcmd b/usr/src/uts/common/io/warlock/usbser_keyspan_with_usba.wlcmd
index d9bfab4102..787b6ce387 100644
--- a/usr/src/uts/common/io/warlock/usbser_keyspan_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/usbser_keyspan_with_usba.wlcmd
@@ -20,11 +20,10 @@
#
#
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
-#ident "%Z%%M% %I% %E% SMI"
one ohci_state
one ehci_state
@@ -53,6 +52,7 @@ root usb_get_if_number
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_get_private
root usb_get_current_frame_number
root usb_get_max_isoc_pkts
@@ -150,6 +150,9 @@ root usb_fail_checkpoint
root ohci_intr
root ehci_intr
+root ohci_quiesce
+root uhci_quiesce
+root ehci_quiesce
### specify the keyspan root functions
root usbser_soft_state_size
@@ -208,6 +211,7 @@ add keyspan_port::kp_cb.cb_tx targets usbser_tx_cb
add keyspan_port::kp_cb.cb_rx targets usbser_rx_cb
add keyspan_port::kp_cb.cb_status targets usbser_status_cb
+add hubd::h_cleanup_child targets warlock_dummy
add usb_ctrl_req::ctrl_cb targets warlock_dummy
add usb_ctrl_req::ctrl_exc_cb targets warlock_dummy
add usb_bulk_req::bulk_cb targets keyspan_bulkin_cb
diff --git a/usr/src/uts/common/io/warlock/usbskel_with_usba.wlcmd b/usr/src/uts/common/io/warlock/usbskel_with_usba.wlcmd
index 22f4007431..68446e9b98 100644
--- a/usr/src/uts/common/io/warlock/usbskel_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/usbskel_with_usba.wlcmd
@@ -1,5 +1,5 @@
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# CDDL HEADER START
@@ -21,7 +21,6 @@
#
# CDDL HEADER END
#
-#ident "%Z%%M% %I% %E% SMI"
one ohci_state
one ehci_state
@@ -46,6 +45,7 @@ root usb_get_dev_descr
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_reset
root usb_pipe_get_private
root usb_get_max_isoc_pkts
@@ -117,7 +117,9 @@ root usba_taskq_destroy
root hcdi_autoclearing
root hcdi_cb_thread
root hcdi_shared_cb_thread
-
+root ohci_quiesce
+root uhci_quiesce
+root ehci_quiesce
root hubd_bus_power
root hubd_hotplug_thread
@@ -139,6 +141,7 @@ root usbskel_exception_callback
root usbskel_disconnect_callback
root usbskel_reconnect_callback
+add hubd::h_cleanup_child targets warlock_dummy
add usba_pipe_async_req::sync_func targets usba_pipe_sync_close
add usba_pipe_async_req::sync_func targets usba_pipe_sync_reset
diff --git a/usr/src/uts/common/io/warlock/usbsprl_with_usba.wlcmd b/usr/src/uts/common/io/warlock/usbsprl_with_usba.wlcmd
index d2cf713966..4fdb0bf320 100644
--- a/usr/src/uts/common/io/warlock/usbsprl_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/usbsprl_with_usba.wlcmd
@@ -17,10 +17,9 @@
#
# 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.
#
-#ident "%Z%%M% %I% %E% SMI"
one ohci_state
one ehci_state
@@ -47,6 +46,7 @@ root usb_get_if_number
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_get_private
root usb_get_current_frame_number
root usb_get_max_isoc_pkts
@@ -143,6 +143,9 @@ root usb_fail_checkpoint
root ohci_intr
root ehci_intr
+root ohci_quiesce
+root uhci_quiesce
+root ehci_quiesce
### specify the pl2303 root functions
@@ -194,6 +197,7 @@ add ds_ops::ds_in_pipe targets pl2303_in_pipe
add pl2303_state::pl_cb.cb_tx targets usbser_tx_cb
add pl2303_state::pl_cb.cb_rx targets usbser_rx_cb
+add hubd::h_cleanup_child targets warlock_dummy
add usb_ctrl_req::ctrl_cb targets warlock_dummy
add usb_ctrl_req::ctrl_exc_cb targets warlock_dummy
add usb_bulk_req::bulk_cb targets pl2303_bulkin_cb
diff --git a/usr/src/uts/common/io/warlock/usbvc_with_usba.wlcmd b/usr/src/uts/common/io/warlock/usbvc_with_usba.wlcmd
index ba95bb221f..08f1bc60e1 100644
--- a/usr/src/uts/common/io/warlock/usbvc_with_usba.wlcmd
+++ b/usr/src/uts/common/io/warlock/usbvc_with_usba.wlcmd
@@ -19,10 +19,9 @@
# 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.
#
-#ident "%Z%%M% %I% %E% SMI"
one ohci_state
one ehci_state
@@ -46,6 +45,7 @@ root usb_get_if_number
root usb_parse_CV_cfg_descr
root usb_parse_CV_ep_descr
root usb_parse_CV_if_descr
+root usb_parse_comp_ep_descr
root usb_pipe_get_private
root usb_get_current_frame_number
root usb_get_max_isoc_pkts
@@ -139,6 +139,9 @@ root usb_fail_checkpoint
root ohci_intr
root ehci_intr
+root ohci_quiesce
+root uhci_quiesce
+root ehci_quiesce
### specify the usbvc root functions
root usbvc_open
@@ -151,6 +154,7 @@ root usbvc_isoc_exc_cb
root usbvc_disconnect_event_cb
root usbvc_reconnect_event_cb
+add hubd::h_cleanup_child targets warlock_dummy
add usb_ctrl_req::ctrl_cb targets warlock_dummy
add usb_ctrl_req::ctrl_exc_cb targets warlock_dummy
add usb_isoc_req::isoc_cb targets usbvc_isoc_cb
diff --git a/usr/src/uts/common/sys/usb/hubd/hubdvar.h b/usr/src/uts/common/sys/usb/hubd/hubdvar.h
index cbe0b2f855..3c85cefd51 100644
--- a/usr/src/uts/common/sys/usb/hubd/hubdvar.h
+++ b/usr/src/uts/common/sys/usb/hubd/hubdvar.h
@@ -260,6 +260,8 @@ _NOTE(DATA_READABLE_WITHOUT_LOCK(hubd::h_default_pipe
hubd::h_hubpm
hubd::h_dip
hubd::h_ignore_pwr_budget
+ hubd::h_hub_descr
+ hubd::h_cleanup_child
))
_NOTE(SCHEME_PROTECTS_DATA("stable data", usb_ep_descr))
diff --git a/usr/src/uts/common/sys/usb/usba/usba_types.h b/usr/src/uts/common/sys/usb/usba/usba_types.h
index 5a6f753515..e007d5d3c0 100644
--- a/usr/src/uts/common/sys/usb/usba/usba_types.h
+++ b/usr/src/uts/common/sys/usb/usba/usba_types.h
@@ -234,6 +234,7 @@ typedef struct usba_wireless_data {
usb_uwb_cap_descr_t *uwb_descr; /* UWB capability descr */
} usba_wireless_data_t;
+
/*
* This structure uniquely identifies a USB device
* with all interfaces, or just one interface of a USB device.
@@ -355,6 +356,7 @@ typedef struct usba_device {
_NOTE(MUTEX_PROTECTS_DATA(usba_device::usb_mutex, usba_device))
_NOTE(MUTEX_PROTECTS_DATA(usba_device::usb_mutex, usba_evdata))
+_NOTE(MUTEX_PROTECTS_DATA(usba_device::usb_mutex, usba_wireless_data))
_NOTE(SCHEME_PROTECTS_DATA("chg at attach only",
usba_evdata::ev_rm_cb_id))
@@ -365,6 +367,13 @@ _NOTE(SCHEME_PROTECTS_DATA("chg at attach only",
_NOTE(SCHEME_PROTECTS_DATA("chg at attach only",
usba_evdata::ev_resume_cb_id))
+_NOTE(SCHEME_PROTECTS_DATA("chg at attach only",
+ usba_wireless_data::wusb_bos))
+_NOTE(SCHEME_PROTECTS_DATA("chg at attach only",
+ usba_wireless_data::wusb_bos_length))
+_NOTE(SCHEME_PROTECTS_DATA("chg at attach only",
+ usba_wireless_data::uwb_descr))
+
/* this should be really stable data */
_NOTE(DATA_READABLE_WITHOUT_LOCK(usba_device::usb_serialno_str))
_NOTE(DATA_READABLE_WITHOUT_LOCK(usba_device::usb_root_hub_dip))
@@ -398,9 +407,14 @@ _NOTE(DATA_READABLE_WITHOUT_LOCK(usba_device::usb_client_ev_cb_list))
_NOTE(DATA_READABLE_WITHOUT_LOCK(usba_device::usb_dip))
_NOTE(DATA_READABLE_WITHOUT_LOCK(usba_device::usb_is_wireless))
_NOTE(DATA_READABLE_WITHOUT_LOCK(usba_device::usb_wireless_data))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(usba_device::usb_is_wa))
_NOTE(SCHEME_PROTECTS_DATA("set at device creation",
usba_device::usb_shared_taskq))
+_NOTE(SCHEME_PROTECTS_DATA("local use only",
+ usb_key_descr::bDescriptorType))
+_NOTE(SCHEME_PROTECTS_DATA("local use only",
+ usb_key_descr::bLength))
/*
* serialization in drivers
*/
diff --git a/usr/src/uts/common/sys/usb/usba/whcdi.h b/usr/src/uts/common/sys/usb/usba/whcdi.h
index bdbf4537f4..c5fbafb67a 100644
--- a/usr/src/uts/common/sys/usb/usba/whcdi.h
+++ b/usr/src/uts/common/sys/usb/usba/whcdi.h
@@ -68,6 +68,7 @@ typedef struct wusb_dev_info {
_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_dev_info::wdev_addr))
_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_dev_info::wdev_uwb_descr))
_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_dev_info::wdev_hc))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_dev_info::wdev_secrt_data))
/*
* According to WUSB 1.0 spec, WUSB hosts can support up to 127 devices.
@@ -150,8 +151,31 @@ _NOTE(MUTEX_PROTECTS_DATA(wusb_hc_data_t::hc_mutex, wusb_dev_info_t))
_NOTE(MUTEX_PROTECTS_DATA(wusb_hc_data_t::hc_mutex, wusb_hc_data_t))
_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::hc_num_ports))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::hc_num_mmcies))
_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::hc_dip))
-
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::hc_gtk))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::add_mmc_ie))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::rem_mmc_ie))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::set_cluster_id))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::set_encrypt))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::set_gtk))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::set_ptk))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::set_num_dnts))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::set_stream_idx))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::set_wusb_mas))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::stop_ch))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::create_child))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::destroy_child))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::disconnect_dev))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::reconnect_dev))
+_NOTE(DATA_READABLE_WITHOUT_LOCK(wusb_hc_data_t::get_time))
+
+_NOTE(SCHEME_PROTECTS_DATA("local use only",
+ wusb_ie_host_disconnect::bLength))
+_NOTE(SCHEME_PROTECTS_DATA("local use only",
+ wusb_ie_host_disconnect::bIEIdentifier))
+_NOTE(SCHEME_PROTECTS_DATA("local use only",
+ wusb_ccm_nonce::sfn))
/*
* WUSB 1.0 4.3.8.5 says the range of cluster id is in 0x80-0xfe,
* we limit the maximum WUSB host controller numbers to 31 now,
@@ -258,7 +282,7 @@ wusb_cc_t *wusb_hc_cc_matched(wusb_hc_cc_list_t *cc_list, uint8_t *cdid);
/* security functions */
int wusb_dev_set_encrypt(usb_pipe_handle_t ph, uint8_t value);
-int wusb_enable_dev_encrypt(wusb_dev_info_t *dev_info);
+int wusb_enable_dev_encrypt(wusb_hc_data_t *hc, wusb_dev_info_t *dev_info);
int wusb_dev_set_key(usb_pipe_handle_t ph, uint8_t key_index,
usb_key_descr_t *key, size_t klen);
int wusb_hc_set_encrypt(wusb_hc_data_t *hc_data, usb_port_t port,
diff --git a/usr/src/uts/intel/hid/Makefile b/usr/src/uts/intel/hid/Makefile
index a3d918bbf4..20376e28e0 100644
--- a/usr/src/uts/intel/hid/Makefile
+++ b/usr/src/uts/intel/hid/Makefile
@@ -20,7 +20,7 @@
#
#
# uts/intel/hid/Makefile
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
@@ -112,7 +112,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
@@ -148,6 +148,7 @@ uhci_files:
ehci_files:
@cd ../ehci;pwd; $(MAKE) warlock
+
warlock_ddi.files:
cd ../warlock; pwd; $(MAKE) warlock
diff --git a/usr/src/uts/intel/scsa2usb/Makefile b/usr/src/uts/intel/scsa2usb/Makefile
index 0f2419a89b..f1673e6c2e 100644
--- a/usr/src/uts/intel/scsa2usb/Makefile
+++ b/usr/src/uts/intel/scsa2usb/Makefile
@@ -20,7 +20,7 @@
#
#
# uts/intel/scsa2usb/Makefile
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
@@ -114,7 +114,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/intel/ugen/Makefile b/usr/src/uts/intel/ugen/Makefile
index 5544dac706..de0ca3af98 100644
--- a/usr/src/uts/intel/ugen/Makefile
+++ b/usr/src/uts/intel/ugen/Makefile
@@ -19,7 +19,7 @@
# CDDL HEADER END
#
#
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
@@ -100,7 +100,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/intel/usb_ac/Makefile b/usr/src/uts/intel/usb_ac/Makefile
index 29ce6e73fb..5b18985111 100644
--- a/usr/src/uts/intel/usb_ac/Makefile
+++ b/usr/src/uts/intel/usb_ac/Makefile
@@ -108,7 +108,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/intel/usb_ia/Makefile b/usr/src/uts/intel/usb_ia/Makefile
index 0bd9d32ceb..daac68d010 100644
--- a/usr/src/uts/intel/usb_ia/Makefile
+++ b/usr/src/uts/intel/usb_ia/Makefile
@@ -20,10 +20,9 @@
#
#
# uts/intel/usb_ia/Makefile
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
-#ident "%Z%%M% %I% %E% SMI"
#
# This makefile drives the production of the usb_ia driver kernel module.
#
@@ -106,7 +105,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/intel/usb_mid/Makefile b/usr/src/uts/intel/usb_mid/Makefile
index 3fa1458089..6f5d3df456 100644
--- a/usr/src/uts/intel/usb_mid/Makefile
+++ b/usr/src/uts/intel/usb_mid/Makefile
@@ -20,10 +20,9 @@
#
# uts/intel/usb_mid/Makefile
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
-#ident "%Z%%M% %I% %E% SMI"
#
# This makefile drives the production of the usb_mid driver kernel module.
#
@@ -106,7 +105,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/intel/usbftdi/Makefile b/usr/src/uts/intel/usbftdi/Makefile
index 2af8e23760..4dfbef27bc 100644
--- a/usr/src/uts/intel/usbftdi/Makefile
+++ b/usr/src/uts/intel/usbftdi/Makefile
@@ -95,7 +95,7 @@ TEST = test
#
WARLOCK_CMD = $(WLCMD_DIR)/$(MODULE).wlcmd
USBSER_FILES = $(USBSER_OBJS:%.o=../usbser/%.ll)
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/intel/usbprn/Makefile b/usr/src/uts/intel/usbprn/Makefile
index 8838fc5c50..8dbb7d0823 100644
--- a/usr/src/uts/intel/usbprn/Makefile
+++ b/usr/src/uts/intel/usbprn/Makefile
@@ -20,7 +20,7 @@
#
#
# uts/intel/usbprn/Makefile
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
@@ -105,7 +105,8 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+#USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/intel/usbskel/Makefile b/usr/src/uts/intel/usbskel/Makefile
index d730fcdf63..57efcd878d 100644
--- a/usr/src/uts/intel/usbskel/Makefile
+++ b/usr/src/uts/intel/usbskel/Makefile
@@ -20,7 +20,7 @@
#
#
# uts/intel/usbskel/Makefile
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
@@ -106,7 +106,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/intel/usbsksp/Makefile b/usr/src/uts/intel/usbsksp/Makefile
index 0efc49b304..a8141b4d45 100644
--- a/usr/src/uts/intel/usbsksp/Makefile
+++ b/usr/src/uts/intel/usbsksp/Makefile
@@ -20,7 +20,7 @@
#
#
#
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# uts/intel/usbsksp/Makefile
@@ -97,7 +97,7 @@ TEST = test
WARLOCK_CMD = $(WLCMD_DIR)/usbser_keyspan.wlcmd
USBSER_FILES = $(USBSER_OBJS:%.o=../usbser/%.ll)
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/intel/usbsprl/Makefile b/usr/src/uts/intel/usbsprl/Makefile
index 68dd0ef75c..24cbdebf47 100644
--- a/usr/src/uts/intel/usbsprl/Makefile
+++ b/usr/src/uts/intel/usbsprl/Makefile
@@ -20,7 +20,7 @@
#
#
# uts/intel/usbsprl/Makefile
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
@@ -94,7 +94,7 @@ TEST = test
#
WARLOCK_CMD = $(WLCMD_DIR)/$(MODULE).wlcmd
USBSER_FILES = $(USBSER_OBJS:%.o=../usbser/%.ll)
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/intel/usbvc/Makefile b/usr/src/uts/intel/usbvc/Makefile
index fdd43a5f20..c3898620e8 100644
--- a/usr/src/uts/intel/usbvc/Makefile
+++ b/usr/src/uts/intel/usbvc/Makefile
@@ -20,10 +20,9 @@
#
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
-#ident "%Z%%M% %I% %E% SMI"
#
# This makefile drives the production of the usbvc driver kernel module.
@@ -113,7 +112,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/sparc/hid/Makefile b/usr/src/uts/sparc/hid/Makefile
index 80bffaa47f..e1a1ecfd7b 100644
--- a/usr/src/uts/sparc/hid/Makefile
+++ b/usr/src/uts/sparc/hid/Makefile
@@ -21,7 +21,7 @@
#
# uts/sparc/hid/Makefile
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
@@ -111,7 +111,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/sparc/scsa2usb/Makefile b/usr/src/uts/sparc/scsa2usb/Makefile
index 468624518d..ac55a7de42 100644
--- a/usr/src/uts/sparc/scsa2usb/Makefile
+++ b/usr/src/uts/sparc/scsa2usb/Makefile
@@ -19,7 +19,7 @@
# CDDL HEADER END
#
#
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# uts/sparc/scsa2usb/Makefile
@@ -110,7 +110,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/sparc/ugen/Makefile b/usr/src/uts/sparc/ugen/Makefile
index 1c2316c6cd..9d9e2b6564 100644
--- a/usr/src/uts/sparc/ugen/Makefile
+++ b/usr/src/uts/sparc/ugen/Makefile
@@ -21,7 +21,7 @@
#
# uts/sparc/ugen/Makefile
#
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
@@ -104,7 +104,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/sparc/usb_ia/Makefile b/usr/src/uts/sparc/usb_ia/Makefile
index 7362164b0a..71356e1d4f 100644
--- a/usr/src/uts/sparc/usb_ia/Makefile
+++ b/usr/src/uts/sparc/usb_ia/Makefile
@@ -21,14 +21,13 @@
#
# uts/sparc/usb_ia/Makefile
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# This makefile drives the production of the usb_ia driver kernel module.
# sparc architecture dependent
#
-#ident "%Z%%M% %I% %E% SMI"
#
# Path to the base of the uts directory tree (usually /usr/src/uts).
@@ -104,7 +103,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/sparc/usb_mid/Makefile b/usr/src/uts/sparc/usb_mid/Makefile
index 14afaee71e..61ea14e1b3 100644
--- a/usr/src/uts/sparc/usb_mid/Makefile
+++ b/usr/src/uts/sparc/usb_mid/Makefile
@@ -21,14 +21,13 @@
# uts/sparc/usb_mid/Makefile
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# This makefile drives the production of the usb_mid driver kernel module.
# sparc architecture dependent
#
-#ident "%Z%%M% %I% %E% SMI"
#
# Path to the base of the uts directory tree (usually /usr/src/uts).
@@ -104,7 +103,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/sparc/usbftdi/Makefile b/usr/src/uts/sparc/usbftdi/Makefile
index 1fc04dfe03..025cfef7f1 100644
--- a/usr/src/uts/sparc/usbftdi/Makefile
+++ b/usr/src/uts/sparc/usbftdi/Makefile
@@ -95,7 +95,7 @@ TEST = test
#
WARLOCK_CMD = $(WLCMD_DIR)/$(MODULE).wlcmd
USBSER_FILES = $(USBSER_OBJS:%.o=../usbser/%.ll)
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/sparc/usbprn/Makefile b/usr/src/uts/sparc/usbprn/Makefile
index c8a8b7abf4..64011303d3 100644
--- a/usr/src/uts/sparc/usbprn/Makefile
+++ b/usr/src/uts/sparc/usbprn/Makefile
@@ -19,7 +19,7 @@
# CDDL HEADER END
#
#
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
@@ -101,7 +101,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/sparc/usbskel/Makefile b/usr/src/uts/sparc/usbskel/Makefile
index 714825125c..f2b6289f9a 100644
--- a/usr/src/uts/sparc/usbskel/Makefile
+++ b/usr/src/uts/sparc/usbskel/Makefile
@@ -21,7 +21,7 @@
#
# uts/sparc/usbskel/Makefile
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
@@ -105,7 +105,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/sparc/usbsksp/Makefile b/usr/src/uts/sparc/usbsksp/Makefile
index cc36a3e9c1..16987d8e66 100644
--- a/usr/src/uts/sparc/usbsksp/Makefile
+++ b/usr/src/uts/sparc/usbsksp/Makefile
@@ -20,7 +20,7 @@
#
#
#
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# uts/sparc/usbsksp/Makefile
@@ -102,7 +102,7 @@ TEST = test
#
WARLOCK_CMD = $(WLCMD_DIR)/usbser_keyspan.wlcmd
USBSER_FILES = $(USBSER_OBJS:%.o=../usbser/%.ll)
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/sparc/usbsprl/Makefile b/usr/src/uts/sparc/usbsprl/Makefile
index 0ed18caad9..2911e5ff6e 100644
--- a/usr/src/uts/sparc/usbsprl/Makefile
+++ b/usr/src/uts/sparc/usbsprl/Makefile
@@ -21,7 +21,7 @@
#
# uts/sparc/usbsprl/Makefile
#
-# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
@@ -100,7 +100,7 @@ TEST = test
#
WARLOCK_CMD = $(WLCMD_DIR)/$(MODULE).wlcmd
USBSER_FILES = $(USBSER_OBJS:%.o=../usbser/%.ll)
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)
diff --git a/usr/src/uts/sparc/usbvc/Makefile b/usr/src/uts/sparc/usbvc/Makefile
index 537906c461..e68cb46a4c 100644
--- a/usr/src/uts/sparc/usbvc/Makefile
+++ b/usr/src/uts/sparc/usbvc/Makefile
@@ -20,10 +20,9 @@
#
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
-#ident "%Z%%M% %I% %E% SMI"
#
# uts/sparc/usbvc/Makefile
@@ -111,7 +110,7 @@ TEST = test
#
# lock_lint rules
#
-USBA_FILES = $(USBA_OBJS:%.o=../usba/%.ll)
+USBA_FILES = $(USBA_WITHOUT_WUSB_OBJS:%.o=../usba/%.ll)
UHCI_FILES = $(UHCI_OBJS:%.o=../uhci/%.ll)
OHCI_FILES = $(OHCI_OBJS:%.o=../ohci/%.ll)
EHCI_FILES = $(EHCI_OBJS:%.o=../ehci/%.ll)