diff mbox series

[v3,13/13] libflash/ipmi-hiomap: Add helpers for logging

Message ID 1573060953-6464-14-git-send-email-debmc@linux.ibm.com
State Changes Requested
Headers show
Series ipmi-hiomap: Enablement for Async opal_flash_op's | expand

Checks

Context Check Description
snowpatch_ozlabs/apply_patch success Successfully applied on branch master (d75e82dbfbb9443efeb3f9a5921ac23605aab469)
snowpatch_ozlabs/snowpatch_job_snowpatch-skiboot fail Test snowpatch/job/snowpatch-skiboot on branch master
snowpatch_ozlabs/snowpatch_job_snowpatch-skiboot-dco success Signed-off-by present

Commit Message

Deb McLemore Nov. 6, 2019, 5:22 p.m. UTC
Add some logging helpers.

Signed-off-by: Deb McLemore <debmc@linux.ibm.com>
---
 libflash/ipmi-hiomap.c | 287 ++++++++++++++++++++++++-------------------------
 1 file changed, 140 insertions(+), 147 deletions(-)
diff mbox series

Patch

diff --git a/libflash/ipmi-hiomap.c b/libflash/ipmi-hiomap.c
index df67173..f4a50e4 100644
--- a/libflash/ipmi-hiomap.c
+++ b/libflash/ipmi-hiomap.c
@@ -1,8 +1,6 @@ 
 // SPDX-License-Identifier: Apache-2.0
 /* Copyright 2018-2019 IBM Corp. */
 
-#define pr_fmt(fmt) "HIOMAP: " fmt
-
 #include <hiomap.h>
 #include <inttypes.h>
 #include <ipmi.h>
@@ -23,6 +21,12 @@ 
 
 #define CMD_OP_HIOMAP_EVENT	0x0f
 
+#define hiomap_trace(fmt, a...)    prlog(PR_TRACE,"HIOMAP: %s " fmt, __func__, ## a)
+#define hiomap_info(fmt, a...)     prlog(PR_INFO,"HIOMAP: %s " fmt, __func__, ## a)
+#define hiomap_notice(fmt, a...)   prlog(PR_NOTICE,"HIOMAP: %s " fmt, __func__, ## a)
+#define hiomap_warn(fmt, a...)     prlog(PR_WARNING,"HIOMAP: %s " fmt, __func__, ## a)
+#define hiomap_error(fmt, a...)    prlog(PR_ERR,"HIOMAP: %s " fmt, __func__, ## a)
+
 struct ipmi_hiomap_result {
 	struct ipmi_hiomap *ctx;
 	int16_t cc;
@@ -58,13 +62,13 @@  static inline uint16_t bytes_to_blocks_align_up(struct ipmi_hiomap *ctx,
 /* Call under ctx->lock */
 static int hiomap_protocol_ready(struct ipmi_hiomap *ctx)
 {
-	prlog(PR_TRACE, "%s ctx->bmc_state=%i\n", __func__, ctx->bmc_state);
+	hiomap_trace("ctx->bmc_state=%i\n", ctx->bmc_state);
 	if (!(ctx->bmc_state & HIOMAP_E_DAEMON_READY)) {
-		prlog(PR_NOTICE, "%s FLASH_ERR_DEVICE_GONE\n", __func__);
+		hiomap_notice("FLASH_ERR_DEVICE_GONE\n");
 		return FLASH_ERR_DEVICE_GONE;
 	}
 	if (ctx->bmc_state & HIOMAP_E_FLASH_LOST) {
-		prlog(PR_NOTICE, "%s HIOMAP_E_FLASH_LOST\n", __func__);
+		hiomap_notice("HIOMAP_E_FLASH_LOST\n");
 		return FLASH_ERR_AGAIN;
 	}
 
@@ -102,10 +106,10 @@  static int hiomap_queue_msg(struct ipmi_hiomap *ctx, struct ipmi_msg *msg)
 			ipmi_free_msg(msg);
 			return rc;
 		}
-		prlog(PR_TRACE, "%s SENDING SYNC\n", __func__);
+		hiomap_trace("SENDING SYNC\n");
 		ipmi_queue_msg_sync(msg);
 	} else {
-		prlog(PR_TRACE, "%s SENDING ASYNC\n", __func__);
+		hiomap_trace("SENDING ASYNC\n");
 		rc = ipmi_queue_msg(msg);
 	}
 
@@ -117,64 +121,61 @@  static int hiomap_window_valid(struct ipmi_hiomap *ctx, uint64_t pos,
 			        uint64_t len)
 {
 	if (ctx->bmc_state & HIOMAP_E_FLASH_LOST) {
-		prlog(PR_NOTICE, "%s HIOMAP_E_FLASH_LOST\n", __func__);
+		hiomap_notice("HIOMAP_E_FLASH_LOST\n");
 		return FLASH_ERR_AGAIN;
 	}
 	if (ctx->bmc_state & HIOMAP_E_PROTOCOL_RESET) {
-		prlog(PR_NOTICE, "%s HIOMAP_E_PROTOCOL_RESET\n", __func__);
+		hiomap_notice("HIOMAP_E_PROTOCOL_RESET\n");
 		return FLASH_ERR_AGAIN;
 	}
 	if (ctx->bmc_state & HIOMAP_E_WINDOW_RESET) {
-		prlog(PR_NOTICE, "%s HIOMAP_E_WINDOW_RESET\n", __func__);
+		hiomap_notice("HIOMAP_E_WINDOW_RESET\n");
 		return FLASH_ERR_AGAIN;
 	}
 	if (ctx->window_state == closed_window) {
-		prlog(PR_TRACE, "%s window_state=closed_window\n", __func__);
+		hiomap_trace("window_state=closed_window\n");
 		return FLASH_ERR_PARM_ERROR;
 	}
 	if (pos < ctx->current.cur_pos) {
-		prlog(PR_TRACE, "%s we need to move the window pos=%llu < ctx->current.cur_pos=0x%x\n",
-			__func__, pos, ctx->current.cur_pos);
+		hiomap_trace("we need to move the window pos=%llu < ctx->current.cur_pos=0x%x\n",
+			pos, ctx->current.cur_pos);
 		return FLASH_ERR_PARM_ERROR;
 	}
 	if ((pos + len) > (ctx->current.cur_pos + ctx->current.size)) {
 		/* we will compensate the proper values in caller */
 		if ((pos + ctx->current.size) <= (ctx->current.cur_pos + ctx->current.size)) {
-			prlog(PR_TRACE, "%s OK pos=%llu "
+			hiomap_trace("OK pos=%llu "
 				"ctx->current.size=0x%x "
 				"ctx->current.cur_pos=0x%x\n",
-				__func__,
 				pos,
 				ctx->current.size,
 				ctx->current.cur_pos);
 		} else {
-			prlog(PR_TRACE, "%s CHECKING further pos=%llu "
+			hiomap_trace("CHECKING further pos=%llu "
 				"for len=%llu ctx->current.size=0x%x "
 				"ctx->current.cur_pos=0x%x\n",
-				__func__,
 				pos,
 				len,
 				ctx->current.size,
 				ctx->current.cur_pos);
 			if ((pos + ctx->current.adjusted_window_size) <= (ctx->current.cur_pos + ctx->current.size)) {
-				prlog(PR_TRACE, "%s OK use ADJUSTED pos=%llu "
+				hiomap_trace("OK use ADJUSTED pos=%llu "
 					"adjusted_len=%i for len=%llu "
 					"ctx->current.size=0x%x "
 					"ctx->current.cur_pos=0x%x\n",
-					__func__,
 					pos,
 					ctx->current.adjusted_window_size,
 					len,
 					ctx->current.size,
 					ctx->current.cur_pos);
 			} else {
-				prlog(PR_TRACE, "%s we need to MOVE the window\n", __func__);
+				hiomap_trace("we need to MOVE the window\n");
 				return FLASH_ERR_PARM_ERROR;
 			}
 		}
 	}
 
-	prlog(PR_TRACE, "%s ALL GOOD, no move needed\n", __func__);
+	hiomap_trace("ALL GOOD, no move needed\n");
 	return 0;
 }
 
@@ -194,7 +195,7 @@  static void move_cb(struct ipmi_msg *msg)
 	int lock_try_counter = 10;
 
 	if ((msg->resp_size != 8) || (msg->cc != IPMI_CC_NO_ERROR) || (msg->data[1] != ctx->inflight_seq)) {
-		prlog(PR_TRACE, "Command %u (4=READ 6=WRITE): move_cb "
+		hiomap_trace("Command %u (4=READ 6=WRITE): "
 			"Unexpected results to check: response size we "
 			"expect 8 but received %u, ipmi cc=%d "
 			"(should be zero), expected ipmi seq %i but got "
@@ -209,10 +210,9 @@  static void move_cb(struct ipmi_msg *msg)
 		ctx->window_state = closed_window;
 		goto out;
 	} else {
-		prlog(PR_TRACE, "Entered %s for %s window from "
+		hiomap_trace("Entered for %s window from "
 			"OLD block pos 0x%x for 0x%x bytes at "
 			"lpc_addr 0x%x ipmi seq=%i\n",
-			__func__,
 			(msg->data[0] == HIOMAP_C_CREATE_READ_WINDOW) ? "read" : "write",
 			ctx->current.cur_pos,
 			ctx->current.size,
@@ -268,19 +268,18 @@  static void move_cb(struct ipmi_msg *msg)
 		 */
 		*ctx->active_size = (ctx->current.cur_pos + ctx->current.size) - ctx->requested_pos;
 		ctx->current.adjusted_window_size = (ctx->current.cur_pos + ctx->current.size) - ctx->requested_pos;
-		prlog(PR_TRACE, "%s VALID MOVE ADJUSTMENT "
+		hiomap_trace("VALID MOVE ADJUSTMENT "
 			"*ctx->active_size=%llu "
 			"ctx->requested_pos=%llu "
 			"ctx->current.adjusted_window_size=%i\n",
-			__func__,
 			*ctx->active_size,
 			ctx->requested_pos,
 			ctx->current.adjusted_window_size);
 	}
 
 	if (ctx->requested_len != 0 && *ctx->active_size == 0) {
-		prlog(PR_NOTICE, "%s Invalid window properties: len: %llu, size: %llu\n",
-			__func__, ctx->requested_len, *ctx->active_size);
+		hiomap_notice("Invalid window properties: len: %llu, size: %llu\n",
+			ctx->requested_len, *ctx->active_size);
 		ctx->cc = OPAL_PARAMETER;
 		ctx->window_state = closed_window;
 		goto out;
@@ -291,7 +290,7 @@  static void move_cb(struct ipmi_msg *msg)
 	else
 		ctx->window_state = write_window;
 
-	prlog(PR_TRACE, "Opened %s window to NEW block pos 0x%x for 0x%x bytes "
+	hiomap_trace("Opened %s window to NEW block pos 0x%x for 0x%x bytes "
 		"at lpc_addr 0x%x ipmi seq=%i active size=%llu "
 		"adjusted_window_size=%i\n",
 		(msg->data[0] == HIOMAP_C_CREATE_READ_WINDOW) ? "read" : "write",
@@ -302,7 +301,7 @@  static void move_cb(struct ipmi_msg *msg)
 		*ctx->active_size,
 		ctx->current.adjusted_window_size);
 
-out:	prlog(PR_TRACE, "Exiting the move window callback "
+out:	hiomap_trace("Exiting the move window callback "
 		"transaction ipmi seq=%i\n",
 		ctx->inflight_seq);
 	unlock(&ctx->lock);
@@ -322,15 +321,14 @@  static void ipmi_hiomap_cmd_cb(struct ipmi_msg *msg)
 
 	/* We at least need the command and sequence */
 	if (msg->resp_size < 2) {
-		prerror("Illegal response size: %u\n", msg->resp_size);
+		hiomap_error("Illegal response size: %u\n", msg->resp_size);
 		res->cc = IPMI_ERR_UNSPECIFIED;
 		ipmi_free_msg(msg);
 		return;
 	}
 
 	if (msg->data[1] != ctx->inflight_seq) {
-		prlog(PR_TRACE, "%s Unmatched ipmi sequence number: wanted %u got %u\n",
-			__func__,
+		hiomap_trace("Unmatched ipmi sequence number: wanted %u got %u\n",
 			ctx->inflight_seq,
 			msg->data[1]);
 		res->cc = IPMI_ERR_UNSPECIFIED;
@@ -345,7 +343,7 @@  static void ipmi_hiomap_cmd_cb(struct ipmi_msg *msg)
 
 		ctx->cc = IPMI_CC_NO_ERROR;
 		if (msg->resp_size != 6) {
-			prerror("%u: Unexpected response size: %u\n", msg->data[0],
+			hiomap_error("%u: Unexpected response size: %u\n", msg->data[0],
 				msg->resp_size);
 			res->cc = IPMI_ERR_UNSPECIFIED;
 			break;
@@ -353,7 +351,7 @@  static void ipmi_hiomap_cmd_cb(struct ipmi_msg *msg)
 
 		ctx->version = msg->data[2];
 		if (ctx->version < 2) {
-			prerror("Failed to negotiate protocol v2 or higher: %d\n",
+			hiomap_error("Failed to negotiate protocol v2 or higher: %d\n",
 				ctx->version);
 			res->cc = IPMI_ERR_UNSPECIFIED;
 			break;
@@ -370,7 +368,7 @@  static void ipmi_hiomap_cmd_cb(struct ipmi_msg *msg)
 
 		ctx->cc = IPMI_CC_NO_ERROR;
 		if (msg->resp_size != 6) {
-			prerror("%u: Unexpected response size: %u\n", msg->data[0],
+			hiomap_error("%u: Unexpected response size: %u\n", msg->data[0],
 				msg->resp_size);
 			res->cc = IPMI_ERR_UNSPECIFIED;
 			break;
@@ -389,16 +387,14 @@  static void ipmi_hiomap_cmd_cb(struct ipmi_msg *msg)
 	case HIOMAP_C_ERASE:
 	case HIOMAP_C_RESET:
 		if (msg->resp_size != 2) {
-			prerror("%s %u: Unexpected response size: %u\n",
-				__func__,
+			hiomap_error("%u: Unexpected response size: %u\n",
 				msg->data[0],
 				msg->resp_size);
 			res->cc = IPMI_ERR_UNSPECIFIED;
 			ctx->cc = OPAL_HARDWARE;
 			break;
 		} else {
-			prlog(PR_TRACE, "%s Command=%u 1=RESET 7=DIRTY 8=FLUSH 9=ACK 10=ERASE ipmi seq=%u ctx->inflight_seq=%u\n",
-				__func__,
+			hiomap_trace("Command=%u 1=RESET 7=DIRTY 8=FLUSH 9=ACK 10=ERASE ipmi seq=%u ctx->inflight_seq=%u\n",
 				msg->data[0],
 				msg->data[1],
 				ctx->inflight_seq);
@@ -406,8 +402,8 @@  static void ipmi_hiomap_cmd_cb(struct ipmi_msg *msg)
 		}
 		break;
 	default:
-		prlog(PR_WARNING, "%s Unimplemented command handler: %u\n",
-		      __func__, msg->data[0]);
+		hiomap_warn("Unimplemented command handler: %u\n",
+		      msg->data[0]);
 		break;
 	};
 	ipmi_free_msg(msg);
@@ -433,7 +429,7 @@  static int hiomap_wait_for_cc(struct ipmi_hiomap *ctx, int *cc, uint8_t *seq, ui
 	uint64_t timeout_counter;
 	int rc;
 
-	prlog(PR_TRACE, "Start wait for cc ipmi seq=%i *cc=%i ticks=%llu\n", *seq, *cc, ticks);
+	hiomap_trace("Start wait for cc ipmi seq=%i *cc=%i ticks=%llu\n", *seq, *cc, ticks);
 	rc = 0;
 	if (this_cpu()->tb_invalid) {
 		/*
@@ -446,15 +442,15 @@  static int hiomap_wait_for_cc(struct ipmi_hiomap *ctx, int *cc, uint8_t *seq, ui
 			lock(&ctx->lock);
 			ctx->window_state = closed_window;
 			++ctx->missed_cc_count;
-			prlog(PR_NOTICE, "%s tb_invalid, CLOSING WINDOW for cc "
+			hiomap_notice("tb_invalid, CLOSING WINDOW for cc "
 				"ipmi seq=%i ctx->missed_cc_count=%i\n",
-				__func__, *seq, ctx->missed_cc_count);
+				*seq, ctx->missed_cc_count);
 			unlock(&ctx->lock);
 			rc = FLASH_ERR_MISSED_CC;
 		}
-		prlog(PR_NOTICE, "%s tb_invalid, hopefully this will "
+		hiomap_notice("tb_invalid, hopefully this will "
 			"retry/recover rc=%i\n",
-			__func__, rc);
+			rc);
 		return rc;
 	}
 	start_time = mftb();
@@ -468,7 +464,7 @@  static int hiomap_wait_for_cc(struct ipmi_hiomap *ctx, int *cc, uint8_t *seq, ui
 		ipmi_hiomap_ticks = IPMI_HIOMAP_TICKS;
 	}
 
-	prlog(PR_TRACE, "wait_time=%llu ipmi_hiomap_ticks=%llu ipmi seq=%i "
+	hiomap_trace("wait_time=%llu ipmi_hiomap_ticks=%llu ipmi seq=%i "
 			"ctx->missed_cc_count=%i\n",
 		wait_time, ticks, *seq, ctx->missed_cc_count);
 	while (wait_time < ipmi_hiomap_ticks) {
@@ -478,27 +474,27 @@  static int hiomap_wait_for_cc(struct ipmi_hiomap *ctx, int *cc, uint8_t *seq, ui
 			wait_time = tb_to_msecs(now - start_time);
 		}
 		if (*cc == IPMI_CC_NO_ERROR) {
-			prlog(PR_TRACE, "Break cc ipmi seq=%i "
+			hiomap_trace("Break cc ipmi seq=%i "
 				"ctx->missed_cc_count=%i\n",
 				*seq, ctx->missed_cc_count);
 			break;
 		}
 	}
-	prlog(PR_TRACE, "Status CHECK wait_for_cc wait_time=%llu *cc=%i "
+	hiomap_trace("Status CHECK wait_time=%llu *cc=%i "
 		"ipmi seq=%i ctx->missed_cc_count=%i\n",
 		wait_time, *cc, *seq, ctx->missed_cc_count);
 	if (*cc != IPMI_CC_NO_ERROR) {
 		lock(&ctx->lock);
 		ctx->window_state = closed_window;
 		++ctx->missed_cc_count;
-		prlog(PR_TRACE, "CLOSING WINDOW for cc ipmi seq=%i "
+		hiomap_trace("CLOSING WINDOW for cc ipmi seq=%i "
 			"ctx->missed_cc_count=%i\n",
 			*seq, ctx->missed_cc_count);
 		unlock(&ctx->lock);
 		rc = FLASH_ERR_MISSED_CC;
 	}
 
-	prlog(PR_TRACE, "Stop wait for *cc=%i ipmi seq=%i "
+	hiomap_trace("Stop wait for *cc=%i ipmi seq=%i "
 		"ctx->missed_cc_count=%i\n",
 		*cc, *seq, ctx->missed_cc_count);
 	return rc;
@@ -547,8 +543,8 @@  static int hiomap_get_info(struct ipmi_hiomap *ctx)
 	rc = hiomap_wait_for_cc(ctx, &ctx->cc, &ctx->inflight_seq, IPMI_ACK_DEFAULT);
 
 	if (rc) {
-		prlog(PR_TRACE, "%s hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
-			__func__, rc, IPMI_ACK_DEFAULT);
+		hiomap_trace("hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
+			rc, IPMI_ACK_DEFAULT);
 	}
 
 	return rc;
@@ -592,8 +588,8 @@  static int hiomap_get_flash_info(struct ipmi_hiomap *ctx)
 
 	rc = hiomap_wait_for_cc(ctx, &ctx->cc, &ctx->inflight_seq, IPMI_ACK_DEFAULT);
 	if (rc) {
-		prlog(PR_TRACE, "%s hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
-			__func__, rc, IPMI_ACK_DEFAULT);
+		hiomap_trace("hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
+			rc, IPMI_ACK_DEFAULT);
 	}
 
 	return rc;
@@ -676,7 +672,7 @@  static int hiomap_window_move(struct ipmi_hiomap *ctx, uint8_t command,
 	rc = hiomap_queue_msg(ctx, msg);
 
 	if (rc) {
-		prlog(PR_NOTICE, "%s move queue msg failed: rc=%d\n", __func__, rc);
+		hiomap_notice("move queue msg failed: rc=%d\n", rc);
 		return rc;
 	}
 
@@ -705,7 +701,7 @@  static int hiomap_mark_dirty(struct ipmi_hiomap *ctx, uint64_t offset,
 	unlock(&ctx->lock);
 
 	if (state != write_window) {
-		prlog(PR_NOTICE, "%s failed: state=%i\n", __func__, state);
+		hiomap_notice("failed: state=%i\n", state);
 		return FLASH_ERR_PARM_ERROR;
 	}
 
@@ -724,12 +720,12 @@  static int hiomap_mark_dirty(struct ipmi_hiomap *ctx, uint64_t offset,
 	rc = hiomap_queue_msg(ctx, msg);
 
 	if (rc) {
-		prlog(PR_NOTICE, "%s dirty queue msg failed: rc=%d\n", __func__, rc);
+		hiomap_notice("dirty queue msg failed: rc=%d\n", rc);
 		return rc;
 	}
 
-	prlog(PR_TRACE, "%s Start to mark flash dirty at pos %llu size %llu bytes ipmi seq=%i\n",
-		__func__, offset, size, dirty_seq);
+	hiomap_trace("Start to mark flash dirty at pos %llu size %llu bytes ipmi seq=%i\n",
+		offset, size, dirty_seq);
 
 	return 0;
 }
@@ -753,7 +749,7 @@  static int hiomap_flush(struct ipmi_hiomap *ctx)
 	unlock(&ctx->lock);
 
 	if (state != write_window) {
-		prlog(PR_NOTICE, "%s failed: state=%i\n", __func__, state);
+		hiomap_notice("failed: state=%i\n", state);
 		return FLASH_ERR_PARM_ERROR;
 	}
 
@@ -767,11 +763,11 @@  static int hiomap_flush(struct ipmi_hiomap *ctx)
 	rc = hiomap_queue_msg(ctx, msg);
 
 	if (rc) {
-		prlog(PR_NOTICE, "%s flush queue msg failed: rc=%d\n", __func__, rc);
+		hiomap_notice("flush queue msg failed: rc=%d\n", rc);
 		return rc;
 	}
 
-	prlog(PR_TRACE, "%s Start to flush writes ipmi seq=%i\n", __func__, flush_seq);
+	hiomap_trace("Start to flush writes ipmi seq=%i\n", flush_seq);
 
 	return 0;
 }
@@ -807,24 +803,24 @@  static int hiomap_ack(struct ipmi_hiomap *ctx, uint8_t ack)
 		         bmc_platform->sw->ipmi_oem_hiomap_cmd,
 			 ipmi_hiomap_cmd_cb, &ack_res, req, sizeof(req), 2);
 
-	prlog(PR_TRACE, "%s SENDING req[1]=%i\n", __func__, req[1]);
+	hiomap_trace("SENDING req[1]=%i\n", req[1]);
 	rc = hiomap_queue_msg(ctx, msg);
 	lock(&ctx->lock);
 	ctx->bl.flags = orig_flags;
 	unlock(&ctx->lock);
 	if (rc) {
-		prlog(PR_NOTICE, "%s queue msg failed: rc=%d\n", __func__, rc);
+		hiomap_notice("queue msg failed: rc=%d\n", rc);
 		return rc;
 	}
 
 	rc = hiomap_wait_for_cc(ctx, &ctx->cc, &ctx->inflight_seq, IPMI_ACK_DEFAULT);
 	if (rc) {
-		prlog(PR_TRACE, "%s hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
-			__func__, rc, IPMI_ACK_DEFAULT);
+		hiomap_trace("hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
+			rc, IPMI_ACK_DEFAULT);
 		return rc;
 	}
 
-	prlog(PR_NOTICE, "%s Acked events: 0x%x\n", __func__, ack);
+	hiomap_notice("Acked events: 0x%x\n", ack);
 
 	return 0;
 }
@@ -851,7 +847,7 @@  static int hiomap_erase(struct ipmi_hiomap *ctx, uint64_t offset,
 	unlock(&ctx->lock);
 
 	if (state != write_window) {
-		prlog(PR_NOTICE, "%s failed: state=%i\n", __func__, state);
+		hiomap_notice("failed: state=%i\n", state);
 		return FLASH_ERR_PARM_ERROR;
 	}
 
@@ -870,12 +866,11 @@  static int hiomap_erase(struct ipmi_hiomap *ctx, uint64_t offset,
 	rc = hiomap_queue_msg(ctx, msg);
 
 	if (rc) {
-		prlog(PR_NOTICE, "%s erase queue msg failed: rc=%d\n", __func__, rc);
+		hiomap_notice("erase queue msg failed: rc=%d\n", rc);
 		return rc;
 	}
 
-	prlog(PR_TRACE, "%s Erasing flash at pos %llu for size %llu\n",
-		__func__,
+	hiomap_trace("Erasing flash at pos %llu for size %llu\n",
 		offset, size);
 
 	return 0;
@@ -891,7 +886,7 @@  static bool hiomap_reset(struct ipmi_hiomap *ctx)
 	int tmp_sync_flags;
 	int rc;
 
-	prlog(PR_NOTICE, "%s Reset ENTRY\n", __func__);
+	hiomap_notice("Reset ENTRY\n");
 	reset_res.ctx = ctx;
 	reset_res.cc = -1;
 
@@ -917,19 +912,19 @@  static bool hiomap_reset(struct ipmi_hiomap *ctx)
 	unlock(&ctx->lock);
 
 	if (rc) {
-		prlog(PR_NOTICE, "%s reset queue msg failed: rc=%d\n", __func__, rc);
+		hiomap_notice("reset queue msg failed: rc=%d\n", rc);
 		return false;
 	}
 
 	rc = hiomap_wait_for_cc(ctx, &ctx->cc, &ctx->inflight_seq, IPMI_ACK_DEFAULT);
 
 	if (rc) {
-		prlog(PR_NOTICE, "%s hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
-			__func__, rc, IPMI_ACK_DEFAULT);
+		hiomap_notice("hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
+			rc, IPMI_ACK_DEFAULT);
 		return false;
 	}
 
-	prlog(PR_NOTICE, "%s Reset EXIT\n", __func__);
+	hiomap_notice("Reset EXIT\n");
 	return true;
 }
 
@@ -937,15 +932,13 @@  static void hiomap_event(uint8_t events, void *context)
 {
 	struct ipmi_hiomap *ctx = context;
 
-	prlog(PR_NOTICE, "%s Received events: 0x%x ctx->bmc_state=%i\n",
-		__func__,
+	hiomap_notice("Received events: 0x%x ctx->bmc_state=%i\n",
 		events,
 		ctx->bmc_state);
 
 	lock(&ctx->lock);
 	ctx->bmc_state = events | (ctx->bmc_state & HIOMAP_E_ACK_MASK);
-	prlog(PR_NOTICE, "%s Updated bmc_state Received events: 0x%x ctx->bmc_state=%i\n",
-		__func__,
+	hiomap_notice("Updated bmc_state Received events: 0x%x ctx->bmc_state=%i\n",
 		events,
 		ctx->bmc_state);
 	unlock(&ctx->lock);
@@ -960,7 +953,7 @@  static int lpc_window_read(struct ipmi_hiomap *ctx, uint32_t pos,
 	if ((ctx->current.lpc_addr + ctx->current.size) < (off + len))
 		return FLASH_ERR_PARM_ERROR;
 
-	prlog(PR_TRACE, "LPC Reading at 0x%08x for 0x%08x offset: 0x%08x\n",
+	hiomap_trace("LPC Reading at 0x%08x for 0x%08x offset: 0x%08x\n",
 	      pos, len, off);
 
 	while(len) {
@@ -980,7 +973,7 @@  static int lpc_window_read(struct ipmi_hiomap *ctx, uint32_t pos,
 			chunk = 1;
 		}
 		if (rc) {
-			prlog(PR_ERR, "lpc_read failure %d to FW 0x%08x\n", rc, off);
+			hiomap_error("lpc_read failure %d to FW 0x%08x\n", rc, off);
 			return rc;
 		}
 		len -= chunk;
@@ -1008,7 +1001,7 @@  static int lpc_window_write(struct ipmi_hiomap *ctx, uint32_t pos,
 	if ((ctx->current.lpc_addr + ctx->current.size) < (off + len))
 		return FLASH_ERR_PARM_ERROR;
 
-	prlog(PR_TRACE, "LPC Writing at 0x%08x for 0x%08x offset: 0x%08x\n",
+	hiomap_trace("LPC Writing at 0x%08x for 0x%08x offset: 0x%08x\n",
 	      pos, len, off);
 
 	while(len) {
@@ -1024,7 +1017,7 @@  static int lpc_window_write(struct ipmi_hiomap *ctx, uint32_t pos,
 			chunk = 1;
 		}
 		if (rc) {
-			prlog(PR_ERR, "%s failure %d to FW 0x%08x\n", __func__, rc, off);
+			hiomap_error("failure %d to FW 0x%08x\n", rc, off);
 			return rc;
 		}
 		len -= chunk;
@@ -1044,7 +1037,7 @@  static int ipmi_hiomap_handle_events(struct ipmi_hiomap *ctx)
 	lock(&ctx->lock);
 
 	status = ctx->bmc_state;
-	prlog(PR_TRACE, "%s status=%i\n", __func__, status);
+	hiomap_trace("status=%i\n", status);
 
 	/*
 	 * Immediately clear the ackable events to make sure we don't race to
@@ -1068,16 +1061,16 @@  static int ipmi_hiomap_handle_events(struct ipmi_hiomap *ctx)
 	 * recovered.
 	 */
 	if (status & HIOMAP_E_PROTOCOL_RESET) {
-		prlog(PR_TRACE, "%s status=HIOMAP_E_PROTOCOL_RESET\n", __func__);
+		hiomap_trace("status=HIOMAP_E_PROTOCOL_RESET\n");
 	}
 
 	if (status & HIOMAP_E_WINDOW_RESET) {
-		prlog(PR_TRACE, "%s status=HIOMAP_E_WINDOW_RESET\n", __func__);
+		hiomap_trace("status=HIOMAP_E_WINDOW_RESET\n");
 	}
 
 	if (status & (HIOMAP_E_PROTOCOL_RESET | HIOMAP_E_WINDOW_RESET)) {
 		ctx->window_state = closed_window;
-		prlog(PR_TRACE, "%s closed_window\n", __func__);
+		hiomap_trace("closed_window\n");
 	}
 
 	unlock(&ctx->lock);
@@ -1096,32 +1089,32 @@  static int ipmi_hiomap_handle_events(struct ipmi_hiomap *ctx)
 	 * the BMC's cache must be valid if opening the window is successful.
 	 */
 	if (status & HIOMAP_E_ACK_MASK) {
-		prlog(PR_TRACE, "%s status=%i HIOMAP_E_ACK_MASK so TRY to ACK\n", __func__, status);
+		hiomap_trace("status=%i HIOMAP_E_ACK_MASK so TRY to ACK\n", status);
 		/* ACK is unversioned, can send it if the daemon is ready */
 		rc = hiomap_ack(ctx, status & HIOMAP_E_ACK_MASK);
 		if (rc) {
-			prlog(PR_NOTICE, "%s Failed to ack events rc=%i: status & HIOMAP_E_ACK_MASK=0x%x status=%i\n",
-			      __func__, rc, (status & HIOMAP_E_ACK_MASK), status);
+			hiomap_notice("Failed to ack events rc=%i: status & HIOMAP_E_ACK_MASK=0x%x status=%i\n",
+			      rc, (status & HIOMAP_E_ACK_MASK), status);
 			goto restore;
 		}
 	}
 
 	if (status & HIOMAP_E_PROTOCOL_RESET) {
-		prlog(PR_INFO, "%s Protocol was reset\n", __func__);
+		hiomap_info("Protocol was reset\n");
 
 		rc = hiomap_get_info(ctx);
 		if (rc) {
-			prerror("%s Failure to renegotiate after protocol reset\n", __func__);
+			hiomap_error("Failure to renegotiate after protocol reset\n");
 			goto restore;
 		}
 
 		rc = hiomap_get_flash_info(ctx);
 		if (rc) {
-			prerror("Failure to fetch flash info after protocol reset\n");
+			hiomap_error("Failure to fetch flash info after protocol reset\n");
 			goto restore;
 		}
 
-		prlog(PR_INFO, "%s Restored state after protocol reset\n", __func__);
+		hiomap_info("Restored state after protocol reset\n");
 	}
 
 	/*
@@ -1139,9 +1132,9 @@  restore:
 	 * than necessary, but never less than necessary.
 	 */
 	lock(&ctx->lock);
-	prlog(PR_TRACE, "%s PRE restore status=%i PRE ctx->bmc_state=%i rc=%i\n", __func__, status, ctx->bmc_state, rc);
+	hiomap_trace("PRE restore status=%i PRE ctx->bmc_state=%i rc=%i\n", status, ctx->bmc_state, rc);
 	ctx->bmc_state |= (status & HIOMAP_E_ACK_MASK);
-	prlog(PR_TRACE, "%s POST restored status=%i POST ctx->bmc_state=%i rc=%i\n", __func__, status, ctx->bmc_state, rc);
+	hiomap_trace("POST restored status=%i POST ctx->bmc_state=%i rc=%i\n", status, ctx->bmc_state, rc);
 	unlock(&ctx->lock);
 
 	return rc;
@@ -1165,7 +1158,7 @@  static int ipmi_hiomap_read(struct blocklevel_device *bl, uint64_t pos,
 
 	rc = ipmi_hiomap_handle_events(ctx);
 	if (rc) {
-		prlog(PR_NOTICE, "%s ipmi_hiomap_handle_events failed: rc=%d\n", __func__, rc);
+		hiomap_notice("ipmi_hiomap_handle_events failed: rc=%d\n", rc);
 		goto out;
 	}
 
@@ -1181,7 +1174,7 @@  static int ipmi_hiomap_read(struct blocklevel_device *bl, uint64_t pos,
 	}
 	unlock(&ctx->lock);
 
-	prlog(PR_TRACE, "Flash READ at pos %llu for %llu bytes\n", pos, len);
+	hiomap_trace("Flash READ at pos %llu for %llu bytes\n", pos, len);
 	while (len > 0) {
 		lock(&ctx->lock);
 		state = ctx->window_state;
@@ -1191,15 +1184,15 @@  static int ipmi_hiomap_read(struct blocklevel_device *bl, uint64_t pos,
 			rc = hiomap_window_move(ctx, HIOMAP_C_CREATE_READ_WINDOW, pos,
 				len, &size);
 			if (rc) {
-				prlog(PR_NOTICE, "%s hiomap_window_move failed: rc=%d\n",
-					__func__, rc);
+				hiomap_notice("hiomap_window_move failed: rc=%d\n",
+					rc);
 				goto out;
 			}
 		} else {
 			rc = hiomap_wait_for_cc(ctx, &ctx->cc, &ctx->inflight_seq, IPMI_HIOMAP_TICKS_DEFAULT);
 			if (rc) {
-				prlog(PR_TRACE, "%s move hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
-					__func__, rc, IPMI_HIOMAP_TICKS_DEFAULT);
+				hiomap_trace("move hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
+					rc, IPMI_HIOMAP_TICKS_DEFAULT);
 				goto out;
 			}
 		}
@@ -1214,14 +1207,14 @@  static int ipmi_hiomap_read(struct blocklevel_device *bl, uint64_t pos,
 			 * just double-checking
 			 */
 			if (ctx->cc != IPMI_CC_NO_ERROR) {
-				prlog(PR_NOTICE, "%s failed: cc=%d\n", __func__, ctx->cc);
+				hiomap_notice("failed: cc=%d\n", ctx->cc);
 				rc = OPAL_HARDWARE;
 				goto out;
 			}
 			/* Perform the read for this window */
 			rc = lpc_window_read(ctx, pos, buf, size);
 			if (rc) {
-				prlog(PR_NOTICE, "%s lpc_window_read failed: rc=%d\n", __func__, rc);
+				hiomap_notice("lpc_window_read failed: rc=%d\n", rc);
 				goto out;
 			}
 
@@ -1230,7 +1223,7 @@  static int ipmi_hiomap_read(struct blocklevel_device *bl, uint64_t pos,
 			rc = hiomap_window_valid(ctx, pos, size);
 			unlock(&ctx->lock);
 			if (rc) {
-				prlog(PR_NOTICE, "%s hiomap_window_valid failed: rc=%d\n", __func__, rc);
+				hiomap_notice("hiomap_window_valid failed: rc=%d\n", rc);
 				goto out;
 			}
 
@@ -1266,7 +1259,7 @@  static int ipmi_hiomap_write(struct blocklevel_device *bl, uint64_t pos,
 
 	rc = ipmi_hiomap_handle_events(ctx);
 	if (rc) {
-		prlog(PR_NOTICE, "%s ipmi_hiomap_handle_events failed: rc=%d\n", __func__, rc);
+		hiomap_notice("ipmi_hiomap_handle_events failed: rc=%d\n", rc);
 		goto out;
 	}
 
@@ -1282,7 +1275,7 @@  static int ipmi_hiomap_write(struct blocklevel_device *bl, uint64_t pos,
 	}
 	unlock(&ctx->lock);
 
-	prlog(PR_TRACE, "Flash WRITE at pos %llu for %llu bytes\n", pos, len);
+	hiomap_trace("Flash WRITE at pos %llu for %llu bytes\n", pos, len);
 	while (len > 0) {
 		lock(&ctx->lock);
 		state = ctx->window_state;
@@ -1292,15 +1285,15 @@  static int ipmi_hiomap_write(struct blocklevel_device *bl, uint64_t pos,
 			rc = hiomap_window_move(ctx, HIOMAP_C_CREATE_WRITE_WINDOW, pos,
 					        len, &size);
 			if (rc) {
-				prlog(PR_NOTICE, "%s hiomap_window_move failed: rc=%d\n",
-					__func__, rc);
+				hiomap_notice("hiomap_window_move failed: rc=%d\n",
+					rc);
 				goto out;
 			}
 		} else {
 			rc = hiomap_wait_for_cc(ctx, &ctx->cc, &ctx->inflight_seq, IPMI_LONG_TICKS);
 			if (rc) {
-				prlog(PR_TRACE, "%s move hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
-					__func__, rc, IPMI_LONG_TICKS);
+				hiomap_trace("move hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
+					rc, IPMI_LONG_TICKS);
 				goto out;
 			}
 		}
@@ -1311,7 +1304,7 @@  static int ipmi_hiomap_write(struct blocklevel_device *bl, uint64_t pos,
 
 		if (state == write_window) {
 			if (ctx->cc != IPMI_CC_NO_ERROR) {
-				prlog(PR_NOTICE, "%s failed: cc=%d\n", __func__, ctx->cc);
+				hiomap_notice("failed: cc=%d\n", ctx->cc);
 				rc = OPAL_HARDWARE;
 				goto out;
 			}
@@ -1319,19 +1312,19 @@  static int ipmi_hiomap_write(struct blocklevel_device *bl, uint64_t pos,
 			/* Perform the write for this window */
 			rc = lpc_window_write(ctx, pos, buf, size);
 			if (rc) {
-				prlog(PR_NOTICE, "%s lpc_window_write failed: rc=%d\n", __func__, rc);
+				hiomap_notice("lpc_window_write failed: rc=%d\n", rc);
 				goto out;
 			}
 
 			rc = hiomap_mark_dirty(ctx, pos, size);
 			if (rc) {
-				prlog(PR_NOTICE, "%s hiomap_mark_dirty failed: rc=%d\n", __func__, rc);
+				hiomap_notice("hiomap_mark_dirty failed: rc=%d\n", rc);
 				goto out;
 			}
 			rc = hiomap_wait_for_cc(ctx, &ctx->cc, &ctx->inflight_seq, IPMI_LONG_TICKS);
 			if (rc) {
-				prlog(PR_TRACE, "%s dirty hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
-					__func__, rc, IPMI_LONG_TICKS);
+				hiomap_trace("dirty hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
+					rc, IPMI_LONG_TICKS);
 				goto out;
 			}
 
@@ -1343,13 +1336,13 @@  static int ipmi_hiomap_write(struct blocklevel_device *bl, uint64_t pos,
 			 */
 			rc = hiomap_flush(ctx);
 			if (rc) {
-				prlog(PR_NOTICE, "%s hiomap_flush failed: rc=%d\n", __func__, rc);
+				hiomap_notice("hiomap_flush failed: rc=%d\n", rc);
 				goto out;
 			}
 			rc = hiomap_wait_for_cc(ctx, &ctx->cc, &ctx->inflight_seq, IPMI_LONG_TICKS);
 			if (rc) {
-				prlog(PR_TRACE, "%s flush hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
-					__func__, rc, IPMI_LONG_TICKS);
+				hiomap_trace("flush hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
+					rc, IPMI_LONG_TICKS);
 				goto out;
 			}
 
@@ -1385,7 +1378,7 @@  static int ipmi_hiomap_erase(struct blocklevel_device *bl, uint64_t pos,
 
 	rc = ipmi_hiomap_handle_events(ctx);
 	if (rc) {
-		prlog(PR_NOTICE, "%s ipmi_hiomap_handle_events failed: rc=%d\n", __func__, rc);
+		hiomap_notice("ipmi_hiomap_handle_events failed: rc=%d\n", rc);
 		goto out;
 	}
 
@@ -1400,7 +1393,7 @@  static int ipmi_hiomap_erase(struct blocklevel_device *bl, uint64_t pos,
 	}
 	unlock(&ctx->lock);
 
-	prlog(PR_TRACE, "Flash ERASE at pos %llu for %llu bytes\n", pos, len);
+	hiomap_trace("Flash ERASE at pos %llu for %llu bytes\n", pos, len);
 
 	while (len > 0) {
 		lock(&ctx->lock);
@@ -1411,15 +1404,15 @@  static int ipmi_hiomap_erase(struct blocklevel_device *bl, uint64_t pos,
 			rc = hiomap_window_move(ctx, HIOMAP_C_CREATE_WRITE_WINDOW, pos,
 					        len, &size);
 			if (rc) {
-				prlog(PR_NOTICE, "%s hiomap_window_move failed: rc=%d\n",
-					__func__, rc);
+				hiomap_notice("hiomap_window_move failed: rc=%d\n",
+					rc);
 				goto out;
 			}
 		} else {
 			rc = hiomap_wait_for_cc(ctx, &ctx->cc, &ctx->inflight_seq, IPMI_LONG_TICKS);
 			if (rc) {
-				prlog(PR_TRACE, "%s move hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
-					__func__, rc, IPMI_LONG_TICKS);
+				hiomap_trace("move hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
+					rc, IPMI_LONG_TICKS);
 				goto out;
 			}
 		}
@@ -1429,19 +1422,19 @@  static int ipmi_hiomap_erase(struct blocklevel_device *bl, uint64_t pos,
 		unlock(&ctx->lock);
 		if (state == write_window) {
 			if (ctx->cc != IPMI_CC_NO_ERROR) {
-				prlog(PR_NOTICE, "%s failed: cc=%d\n", __func__, ctx->cc);
+				hiomap_notice("failed: cc=%d\n", ctx->cc);
 				rc = OPAL_HARDWARE;
 				goto out;
 			}
 			rc = hiomap_erase(ctx, pos, size);
 			if (rc) {
-				prlog(PR_NOTICE, "%s hiomap_erase failed: rc=%d\n", __func__, rc);
+				hiomap_notice("hiomap_erase failed: rc=%d\n", rc);
 				goto out;
 			}
 			rc = hiomap_wait_for_cc(ctx, &ctx->cc, &ctx->inflight_seq, IPMI_LONG_TICKS);
 			if (rc) {
-				prlog(PR_TRACE, "%s move hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
-					__func__, rc, IPMI_LONG_TICKS);
+				hiomap_trace("move hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
+					rc, IPMI_LONG_TICKS);
 				goto out;
 			}
 
@@ -1451,13 +1444,13 @@  static int ipmi_hiomap_erase(struct blocklevel_device *bl, uint64_t pos,
 			 */
 			rc = hiomap_flush(ctx);
 			if (rc) {
-				prlog(PR_NOTICE, "%s hiomap_flush failed: rc=%d\n", __func__, rc);
+				hiomap_notice("hiomap_flush failed: rc=%d\n", rc);
 				goto out;
 			}
 			rc = hiomap_wait_for_cc(ctx, &ctx->cc, &ctx->inflight_seq, IPMI_LONG_TICKS);
 			if (rc) {
-				prlog(PR_TRACE, "%s move hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
-					__func__, rc, IPMI_LONG_TICKS);
+				hiomap_trace("move hiomap_wait_for_cc failed: rc=%d ticks=%i\n",
+					rc, IPMI_LONG_TICKS);
 				goto out;
 			}
 
@@ -1486,13 +1479,13 @@  static int ipmi_hiomap_get_flash_info(struct blocklevel_device *bl,
 
 	rc = ipmi_hiomap_handle_events(ctx);
 	if (rc) {
-		prlog(PR_NOTICE, "%s ipmi_hiomap_handle_events failed: rc=%d\n", __func__, rc);
+		hiomap_notice("ipmi_hiomap_handle_events failed: rc=%d\n", rc);
 		return rc;
 	}
 
 	rc = hiomap_get_flash_info(ctx);
 	if (rc) {
-		prlog(PR_NOTICE, "%s hiomap_get_flash failed: rc=%d\n", __func__, rc);
+		hiomap_notice("hiomap_get_flash_info failed: rc=%d\n", rc);
 		return rc;
 	}
 
@@ -1541,37 +1534,37 @@  int ipmi_hiomap_init(struct blocklevel_device **bl)
 	/* Ack all pending ack-able events to avoid spurious failures */
 	rc = hiomap_ack(ctx, HIOMAP_E_ACK_MASK);
 	if (rc) {
-		prlog(PR_NOTICE, "%s Failed to ack events: 0x%x\n",
-		      __func__, HIOMAP_E_ACK_MASK);
+		hiomap_notice("Failed to ack events: 0x%x\n",
+		      HIOMAP_E_ACK_MASK);
 		goto err;
 	}
 
 	rc = ipmi_sel_register(CMD_OP_HIOMAP_EVENT, hiomap_event, ctx);
 	if (rc < 0) {
-		prerror("%s Failed ipmi_sel_register: %d\n", __func__, rc);
+		hiomap_error("Failed ipmi_sel_register: %d\n", rc);
 		goto err;
 	}
 
 	/* Negotiate protocol behaviour */
 	rc = hiomap_get_info(ctx);
 	if (rc) {
-		prerror("%s Failed to get hiomap parameters: %d\n", __func__, rc);
+		hiomap_error("Failed to get hiomap parameters: %d\n", rc);
 		goto err;
 	}
 
 	/* Grab the flash parameters */
 	rc = hiomap_get_flash_info(ctx);
 	if (rc) {
-		prerror("%s Failed to get flash parameters: %d\n", __func__, rc);
+		hiomap_error("Failed to get flash parameters: %d\n", rc);
 		goto err;
 	}
 
-	prlog(PR_NOTICE, "Negotiated hiomap protocol v%u\n", ctx->version);
-	prlog(PR_NOTICE, "Block size is %uKiB\n",
+	hiomap_notice("Negotiated hiomap protocol v%u\n", ctx->version);
+	hiomap_notice("Block size is %uKiB\n",
 	      1 << (ctx->block_size_shift - 10));
-	prlog(PR_NOTICE, "BMC suggested flash timeout of %us\n", ctx->timeout);
-	prlog(PR_NOTICE, "Flash size is %uMiB\n", ctx->total_size >> 20);
-	prlog(PR_NOTICE, "Erase granule size is %uKiB\n",
+	hiomap_notice("BMC suggested flash timeout of %us\n", ctx->timeout);
+	hiomap_notice("Flash size is %uMiB\n", ctx->total_size >> 20);
+	hiomap_notice("Erase granule size is %uKiB\n",
 	      ctx->erase_granule >> 10);
 
 	ctx->bl.keep_alive = 0;