diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 90b2b67..587d380 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -1069,17 +1069,17 @@
 	{
 		out_addr = (unsigned char *)(image_addr + imagesize_actual + page_size);
 		out_avai_len = target_get_max_flash_size() - imagesize_actual - page_size;
-		dprintf(SPEW, "decompress image start\n");
+		dprintf(INFO, "decompressing kernel image: start\n");
 		rc = decompress((unsigned char *)(image_addr + page_size),
 				hdr->kernel_size, out_addr, out_avai_len,
 				&dtb_offset, &out_len);
 		if (rc)
 		{
-			dprintf(CRITICAL, "decompress image failed!!!\n");
+			dprintf(CRITICAL, "decompressing kernel image failed!!!\n");
 			ASSERT(0);
 		}
 
-		dprintf(SPEW, "decompressed image finished.\n");
+		dprintf(INFO, "decompressing kernel image: done\n");
 		kptr = (struct kernel64_hdr *)out_addr;
 		kernel_start_addr = out_addr;
 		kernel_size = out_len;
@@ -1143,17 +1143,17 @@
 			unsigned int compressed_size = 0;
 			out_addr += out_len;
 			out_avai_len -= out_len;
-			dprintf(SPEW, "decompress dtb start\n");
+			dprintf(INFO, "decompressing dtb: start\n");
 			rc = decompress((unsigned char *)dt_table_offset + dt_entry.offset,
 					dt_entry.size, out_addr, out_avai_len,
 					&compressed_size, &dtb_size);
 			if (rc)
 			{
-				dprintf(CRITICAL, "decompress dtb failed!!!\n");
+				dprintf(CRITICAL, "decompressing dtb failed!!!\n");
 				ASSERT(0);
 			}
 
-			dprintf(SPEW, "decompressed dtb finished.\n");
+			dprintf(INFO, "decompressing dtb: done\n");
 			best_match_dt_addr = out_addr;
 		} else {
 			best_match_dt_addr = (unsigned char *)dt_table_offset + dt_entry.offset;
@@ -1801,17 +1801,17 @@
 		{
 			out_addr = (unsigned char *)target_get_scratch_address() + scratch_offset;
 			out_avai_len = target_get_max_flash_size() - scratch_offset;
-			dprintf(SPEW, "decompress dtb start\n");
+			dprintf(INFO, "decompressing dtb: start\n");
 			rc = decompress(best_match_dt_addr,
 					dt_entry.size, out_addr, out_avai_len,
 					&compressed_size, &dtb_size);
 			if (rc)
 			{
-				dprintf(CRITICAL, "decompress dtb failed!!!\n");
+				dprintf(CRITICAL, "decompressing dtb failed!!!\n");
 				ASSERT(0);
 			}
 
-			dprintf(SPEW, "decompressed dtb finished.\n");
+			dprintf(INFO, "decompressing dtb: done\n");
 			best_match_dt_addr = out_addr;
 		} else {
 			dtb_size = dt_entry.size;
@@ -1931,17 +1931,17 @@
 		out_addr = (unsigned char *)target_get_scratch_address();
 		out_addr = (unsigned char *)(out_addr + image_actual + page_size);
 		out_avai_len = target_get_max_flash_size() - image_actual - page_size;
-		dprintf(SPEW, "decompress image start\n");
+		dprintf(INFO, "decompressing kernel image: start\n");
 		ret = decompress((unsigned char *)(ptr + page_size),
 				hdr->kernel_size, out_addr, out_avai_len,
 				&dtb_offset, &out_len);
 		if (ret)
 		{
-			dprintf(CRITICAL, "decompress image failed!!!\n");
+			dprintf(CRITICAL, "decompressing image failed!!!\n");
 			ASSERT(0);
 		}
 
-		dprintf(SPEW, "decompressed image finished.\n");
+		dprintf(INFO, "decompressing kernel image: done\n");
 		kptr = (struct kernel64_hdr *)out_addr;
 		kernel_start_addr = out_addr;
 		kernel_size = out_len;
diff --git a/platform/msm_shared/rpm-glink.c b/platform/msm_shared/rpm-glink.c
index 4b74c98..77538f0 100644
--- a/platform/msm_shared/rpm-glink.c
+++ b/platform/msm_shared/rpm-glink.c
@@ -92,7 +92,7 @@
 			send_err = glink_tx(rpm_glink_port, NULL, (const void *)rpm_data, len_to_rpm, 0);
 			if (send_err)
 			{
-				dprintf(CRITICAL, "%s:%d, Glink tx error\n", __func__, __LINE__);
+				dprintf(CRITICAL, "%s:%d, Glink tx error: 0x%x\n", __func__, __LINE__, send_err);
 				free(rpm_data);
 				free_kvp_object(&req.data);
 				break;
@@ -112,7 +112,7 @@
 			fill_kvp_object(&cmd.data, data, len);
 			send_err = glink_tx(rpm_glink_port, NULL, (const void *)&cmd, len_to_rpm, 0);
 			if (send_err)
-				dprintf(CRITICAL, "%s:%d, Glink tx error\n", __func__, __LINE__);
+				dprintf(CRITICAL, "%s:%d, Glink tx error: 0x%x\n", __func__, __LINE__, send_err);
 			free_kvp_object(&cmd.data);
 			break;
 		default:
@@ -336,7 +336,7 @@
 	}
 	else
 	{
-		dprintf(CRITICAL, "RPM Glink Init Failure\n");
+		dprintf(CRITICAL, "RPM Glink Init Failure 0x%x\n", ret);
 		ASSERT(0);
 	}
 	event_wait(&wait_for_init);
@@ -361,7 +361,7 @@
 
 	if (ret)
 	{
-		dprintf(CRITICAL, "Glink SSR Channel: Tx for link tear down request failure\n");
+		dprintf(CRITICAL, "Glink SSR Channel: Tx for link tear down request failure with error code: 0x%x\n", ret);
 		ASSERT(0);
 	}
 
