summaryrefslogtreecommitdiff
path: root/usr/src/lib/efcode/fcdriver
diff options
context:
space:
mode:
authordhain <none@none>2005-10-26 16:23:44 -0700
committerdhain <none@none>2005-10-26 16:23:44 -0700
commit6d22b73346a02763769401e9f28b596670cc3d16 (patch)
treee7d7f39c1e781bfcbe0eabe6de0780f2eca0205c /usr/src/lib/efcode/fcdriver
parent595aa6e48d8a5812a3a42afa5f63ee6f772c7f4e (diff)
downloadillumos-gate-6d22b73346a02763769401e9f28b596670cc3d16.tar.gz
5107846 DR hangs on fcode_interpreter() running parallel DR.
5043347 PANIC with efcode probing of bad I/O hw in slot;
Diffstat (limited to 'usr/src/lib/efcode/fcdriver')
-rw-r--r--usr/src/lib/efcode/fcdriver/get_req.c10
-rw-r--r--usr/src/lib/efcode/fcdriver/misc.c9
2 files changed, 13 insertions, 6 deletions
diff --git a/usr/src/lib/efcode/fcdriver/get_req.c b/usr/src/lib/efcode/fcdriver/get_req.c
index 6a87b375d5..1423524a5d 100644
--- a/usr/src/lib/efcode/fcdriver/get_req.c
+++ b/usr/src/lib/efcode/fcdriver/get_req.c
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -252,7 +252,9 @@ void
find_fcode(fcode_env_t *env)
{
fstack_t *dp = env->ds;
+ common_data_t *cdp = env->private;
static char func_name[] = "find_fcode";
+ int error;
my_unit(env);
push_a_string(env, "device-id");
@@ -300,7 +302,13 @@ find_fcode(fcode_env_t *env)
func_name, TOS);
return;
}
+
debug_msg(DEBUG_FIND_FCODE, "%s: not found\n", func_name);
+ error = FC_NO_FCODE;
+ if (ioctl(cdp->fcode_fd, FC_SET_FCODE_ERROR, &error) < 0) {
+ log_perror(MSG_FATAL, "ioctl(FC_SET_FCODE_ERROR) failed");
+ return;
+ }
}
int
diff --git a/usr/src/lib/efcode/fcdriver/misc.c b/usr/src/lib/efcode/fcdriver/misc.c
index 4e62b11e03..b2ea8a9e00 100644
--- a/usr/src/lib/efcode/fcdriver/misc.c
+++ b/usr/src/lib/efcode/fcdriver/misc.c
@@ -20,8 +20,8 @@
* CDDL HEADER END
*/
/*
- * Copyright (c) 2000 by Sun Microsystems, Inc.
- * All rights reserved.
+ * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
@@ -54,9 +54,8 @@ fc_reg_read(fcode_env_t *env, char *service, fstack_t virt, int *errp)
/* Don't report error on peeks */
*errp = error;
else if (error) {
- log_message(MSG_ERROR, "fc_read_reg: ERROR: cookie: %llx"
+ forth_abort(env, "fc_read_reg: ERROR: cookie: %llx"
" virt: %llx\n", (uint64_t)virt, (uint64_t)virtaddr);
- data = 0;
}
return (data);
}
@@ -81,7 +80,7 @@ fc_reg_write(fcode_env_t *env, char *service, fstack_t virt, fc_cell_t data,
/* Don't report error on pokes */
*errp = error;
else if (error) {
- log_message(MSG_ERROR, "fc_write_reg: ERROR: cookie: %llx"
+ forth_abort(env, "fc_write_reg: ERROR: cookie: %llx"
" virt: %llx\n", (uint64_t)virt, (uint64_t)virtaddr);
}
}