Index: src/sys/dev/ic/mpt_mpilib.h
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/mpt_mpilib.h,v
retrieving revision 1.6
diff -u -r1.6 mpt_mpilib.h
--- src/sys/dev/ic/mpt_mpilib.h	10 Feb 2024 18:43:52 -0000	1.6
+++ src/sys/dev/ic/mpt_mpilib.h	25 Jun 2026 16:13:55 -0000
@@ -1980,6 +1980,7 @@
 #define MPI_RAIDVOL0_STATUS_STATE_OPTIMAL               (0x00)
 #define MPI_RAIDVOL0_STATUS_STATE_DEGRADED              (0x01)
 #define MPI_RAIDVOL0_STATUS_STATE_FAILED                (0x02)
+#define MPI_RAIDVOL0_STATUS_STATE_MISSING               (0x03)
 
 typedef struct _RAID_VOL0_SETTINGS
 {
Index: src/sys/dev/ic/mpt_netbsd.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/mpt_netbsd.c,v
retrieving revision 1.40
diff -u -r1.40 mpt_netbsd.c
--- src/sys/dev/ic/mpt_netbsd.c	9 Feb 2024 22:08:34 -0000	1.40
+++ src/sys/dev/ic/mpt_netbsd.c	25 Jun 2026 16:13:55 -0000
@@ -1481,6 +1481,151 @@
 		}
 		break;
 
+	case MPI_EVENT_INTEGRATED_RAID:
+#define MSG_LEN 64
+#define ERR_LEN 32
+		char raid_msg[MSG_LEN], err_msg[ERR_LEN];
+		EVENT_DATA_RAID *data = (EVENT_DATA_RAID *) msg->Data;
+		uint32_t sstatus = le32toh(data->SettingsStatus);
+		uint8_t sflags = sstatus & 0xff;
+		uint8_t sstate = (sstatus >> 8) & 0xff;
+
+		switch(data->ReasonCode) {
+		case MPI_EVENT_RAID_RC_VOLUME_CREATED:
+			snprintf(raid_msg, MSG_LEN,
+			    "volume %d created", data->VolumeID);
+			break;
+		case MPI_EVENT_RAID_RC_VOLUME_DELETED:
+			snprintf(raid_msg, MSG_LEN,
+			    "volume %d deleted", data->VolumeID);
+			break;
+		case MPI_EVENT_RAID_RC_VOLUME_SETTINGS_CHANGED:
+			snprintf(raid_msg, MSG_LEN,
+			    "volume %d settings changed",
+			    data->VolumeID);
+			break;
+		case MPI_EVENT_RAID_RC_VOLUME_STATUS_CHANGED:
+			snprintf(raid_msg, MSG_LEN,
+			    "volume %d status ", data->VolumeID);
+			switch (sstate) {
+			case MPI_RAIDVOL0_STATUS_STATE_OPTIMAL:
+				strncat(raid_msg, "optimal", MSG_LEN - 1);
+				break;
+			case MPI_RAIDVOL0_STATUS_STATE_DEGRADED:
+				strncat(raid_msg, "degraded", MSG_LEN - 1);
+				break;
+			case MPI_RAIDVOL0_STATUS_STATE_FAILED:
+				strncat(raid_msg, "failed", MSG_LEN - 1);
+				break;
+			case MPI_RAIDVOL0_STATUS_STATE_MISSING:
+				strncat(raid_msg, "missing", MSG_LEN - 1);
+				break;
+			default:
+				snprintf(err_msg, ERR_LEN, "unknown: 0x%02x%02x", sstate, sflags);
+				strncat(raid_msg, err_msg, MSG_LEN - 1);
+				break;
+			}
+			switch (sflags) {
+			case MPI_RAIDVOL0_STATUS_FLAG_ENABLED:
+				strncat(raid_msg, ", enabled", MSG_LEN - 1);
+				break;
+			case MPI_RAIDVOL0_STATUS_FLAG_QUIESCED:
+				strncat(raid_msg, ", quiesced", MSG_LEN - 1);
+				break;
+			case MPI_RAIDVOL0_STATUS_FLAG_RESYNC_IN_PROGRESS:
+				strncat(raid_msg, ", resyncing", MSG_LEN - 1);
+				break;
+			}
+			break;
+		case MPI_EVENT_RAID_RC_VOLUME_PHYSDISK_CHANGED:
+			snprintf(raid_msg, MSG_LEN,
+			    "volume of physdisk %d (id %d) changed",
+			    data->PhysDiskNum, data->VolumeID);
+			break;
+		case MPI_EVENT_RAID_RC_PHYSDISK_CREATED:
+			snprintf(raid_msg, MSG_LEN,
+			    "physdisk %d (id %d) created",
+			    data->PhysDiskNum, data->VolumeID);
+			break;
+		case MPI_EVENT_RAID_RC_PHYSDISK_DELETED:
+			snprintf(raid_msg, MSG_LEN,
+			    "physdisk %d (id %d) deleted",
+			    data->PhysDiskNum, data->VolumeID);
+			break;
+		case MPI_EVENT_RAID_RC_PHYSDISK_SETTINGS_CHANGED:
+			snprintf(raid_msg, MSG_LEN,
+			    "physdisk %d (id %d) settings changed",
+			    data->PhysDiskNum, data->VolumeID);
+			break;
+		case MPI_EVENT_RAID_RC_PHYSDISK_STATUS_CHANGED:
+			snprintf(raid_msg, MSG_LEN,
+			    "physdisk %d (id %d) status ",
+			    data->PhysDiskNum, data->VolumeID);
+			switch (sstate) {
+			case MPI_PHYSDISK0_STATUS_ONLINE:
+				strncat(raid_msg, "online", MSG_LEN - 1);
+				break;
+			case MPI_PHYSDISK0_STATUS_MISSING:
+				strncat(raid_msg, "missing", MSG_LEN - 1);
+				break;
+			case MPI_PHYSDISK0_STATUS_NOT_COMPATIBLE:
+				strncat(raid_msg, "not compatible",
+				    MSG_LEN - 1);
+				break;
+			case MPI_PHYSDISK0_STATUS_FAILED:
+				strncat(raid_msg, "failed", MSG_LEN - 1);
+				break;
+			case MPI_PHYSDISK0_STATUS_INITIALIZING:
+				strncat(raid_msg, "initializing", MSG_LEN - 1);
+				break;
+			case MPI_PHYSDISK0_STATUS_OFFLINE_REQUESTED:
+				strncat(raid_msg, "offline requested",
+				    MSG_LEN - 1);
+				break;
+			case MPI_PHYSDISK0_STATUS_FAILED_REQUESTED:
+				strncat(raid_msg, "failed requested",
+				    MSG_LEN - 1);
+				break;
+			case MPI_PHYSDISK0_STATUS_OTHER_OFFLINE:
+				strncat(raid_msg, "offline", MSG_LEN - 1);
+				break;
+			default:
+				strncat(raid_msg, "unknown", MSG_LEN - 1);
+				break;
+			}
+			switch (sflags) {
+			case MPI_PHYSDISK0_STATUS_FLAG_OUT_OF_SYNC:
+				strncat(raid_msg, ", out of sync",
+				    MSG_LEN - 1);
+				break;
+			case MPI_PHYSDISK0_STATUS_FLAG_QUIESCED:
+				strncat(raid_msg, ", quiesced", MSG_LEN - 1);
+				break;
+			}
+			break;
+		case MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED:
+			snprintf(raid_msg, MSG_LEN,
+			    "physdisk %d domain val needed", data->PhysDiskNum);
+			break;
+		case MPI_EVENT_RAID_RC_SMART_DATA:
+			snprintf(raid_msg, MSG_LEN,
+			    "smart data ASC/ASCQ: 0x%02x/0x%02x",
+			    data->ASC, data->ASCQ);
+			break;
+		case MPI_EVENT_RAID_RC_REPLACE_ACTION_STARTED:
+			snprintf(raid_msg, MSG_LEN,
+			    "replace physdisk %d started", data->PhysDiskNum);
+			break;
+		default:
+			snprintf(raid_msg, MSG_LEN,
+			    "unknown reason code");
+			break;
+		}
+		mpt_prt(mpt, "Integrated RAID Event: %s", raid_msg);
+#undef MSG_LEN
+#undef ERR_LEN
+		break;
+
 	case MPI_EVENT_SAS_DEVICE_STATUS_CHANGE:
 	case MPI_EVENT_SAS_DISCOVERY:
 		/* ignore these events for now */
@@ -1493,7 +1638,7 @@
 		break;
 
 	default:
-		mpt_prt(mpt, "Unknown async event: 0x%x", msg->Event);
+		mpt_prt(mpt, "Unknown async event: 0x%x", le32toh(msg->Event));
 		break;
 	}
 
Index: src/etc/etc.sparc64/MAKEDEV.conf
===================================================================
RCS file: /cvsroot/src/etc/etc.sparc64/MAKEDEV.conf,v
retrieving revision 1.20
diff -u -r1.20 MAKEDEV.conf
--- src/etc/etc.sparc64/MAKEDEV.conf	5 Apr 2020 14:09:17 -0000	1.20
+++ src/etc/etc.sparc64/MAKEDEV.conf	25 Jun 2026 16:13:55 -0000
@@ -21,6 +21,7 @@
 	makedev altq
 	makedev wscons
 	makedev kttcp
+	makedev bio
 	makedev cfs
 	;;
 
