MLX(4)

πŸ“¦
version 15.1 Β· 3 versions
, in freebsd 15.1, nixpkgs unstable

πŸ’Ύ MLX(4) β€” the Mylex DAC-family Parallel SCSI RAID driver, bestie edition πŸŽ€

okay so this is from the Kernel Interfaces Manual, section 4 (that's the kernel-drivers girlies πŸ’…), and it's literally all about mlx, the Mylex DAC-family Parallel SCSI RAID driver. buckle up, it's giving hardware era nostalgia ✨


🌸 NAME 🌸

mlx β€” the Mylex DAC-family Parallel SCSI RAID driver. that's it, that's the name, and honestly? iconic. πŸ‘‘


✨ SYNOPSIS ✨

so if you wanna bake this driver into the kernel, you gotta drop these lines into your kernel configuration file, no cap:

device pci
device mlx

or, if you're feeling lazy-in-a-good-way and wanna load it as a module at boot time, just put this line in loader.conf(5):

mlx_load="YES"

periodt. that's the whole vibe check. 🫢


πŸ’œ DESCRIPTION πŸ’œ

the mlx driver is here to provide support for Mylex DAC-family PCI to SCSI RAID controllers β€” and yes, that includes the versions that got relabeled by Digital/Compaq, so don't come for her, she's been through a rebrand or two. 🌈


πŸ¦‹ HARDWARE πŸ¦‹

here's the full guest list πŸ’Œ β€” the mlx driver supports these Parallel SCSI RAID controllers:

  • Mylex DAC960P (Wide Fast SCSI-2)
  • Mylex DAC960PD / DEC KZPSC (Wide Fast SCSI-2)
  • Mylex DAC960PDU (Ultra SCSI-3)
  • Mylex DAC960PL (Wide Fast SCSI-2)
  • Mylex DAC960PJ (Wide Ultra SCSI-3)
  • Mylex DAC960PG (Wide Ultra SCSI-3)
  • Mylex DAC960PU / DEC PZPAC (Wide Ultra SCSI-3)
  • Mylex AcceleRAID 150 (DAC960PRL) (Wide Ultra2 SCSI)
  • Mylex AcceleRAID 250 (DAC960PTL1) (Wide Ultra2 SCSI)
  • Mylex eXtremeRAID 1100 (DAC1164P) (Wide Ultra2 SCSI)
  • RAIDarray 230 controllers, aka the Ultra-SCSI DEC KZPAC-AA (1-ch, 4MB cache), KZPAC-CA (3-ch, 4MB), KZPAC-CB (3-ch, 8MB cache)

literally a whole roster. some real main character energy on that list πŸ”₯


πŸ’€ DIAGNOSTICS πŸ’€

this is the part where the controller and the driver just start talking at you in the kernel log. every single message is catalogued below, organized by vibe. don't skip, there's lore here πŸ‘€

🧚 Controller initialisation phase

mlx%d: controller initialisation in progress...
mlx%d: initialisation complete

the controller firmware is out here doing its little initialisation thing β€” either it's in progress, or it's done. either way, slay. ✨

mlx%d: physical drive %d:%d not responding

bestie that drive at channel:target is not responding 😭 it may have failed or straight-up been removed.

mlx%d: spinning up drives...

drive startup is happening as we speak β€” and heads up, this may take several minutes, so go get a snack. πŸ“

mlx%d: configuration checksum error

the array configuration has become corrupted. not the vibe. πŸ’€

mlx%d: mirror race recovery in progress
mlx%d: mirror race on a critical system drive
mlx%d: mirror race recovery failed

these error codes are… undocumented. iykyk 🫠

mlx%d: physical drive %d:%d COD mismatch

the configuration data on the drive at channel:target doesn't match the rest of the array. awkward. πŸ™ˆ

mlx%d: system drive installation aborted

errors happened and prevented one or more system drives from being configured. cancelled. 🚫

mlx%d: new controller configuration found

the controller found a configuration on disk that supersedes the one in its nonvolatile memory β€” so it will reset and come up with the new configuration. glow-up complete πŸ’…

mlx%d: FATAL MEMORY PARITY ERROR

firmware detected a fatal memory error β€” and the driver will not attempt to attach to this controller. like, at all. πŸ›‘

mlx%d: unknown firmware initialisation error %x:%x:%x

an unknown error happened during initialisation… and it will be ignored. mystery box behavior, we love to see it 🎁

πŸŽ€ Driver initialisation/shutdown phase:

mlx%d: can't allocate scatter/gather DMA tag
mlx%d: can't allocate buffer DMA tag
mlx%d: can't allocate s/g table
mlx%d: can't make initial s/g list mapping
mlx%d: can't make permanent s/g list mapping
mlx%d: can't allocate interrupt
mlx%d: can't set up interrupt

a resource allocation error occurred while initialising the driver. initialisation has failed and the driver will not attach to this controller. she's not coming to the party 😭

mlx%d: error fetching drive status

couldn't fetch the current status of all system drives β€” attachment of system drives will be aborted. nope, not today. πŸ™…

mlx%d: device_add_child failed

creating the system drive instances failed, so attachment of one or more system drives may have been aborted. mess. πŸ’€

mlxd%d: detaching...

the indicated system drive is being detached. bye bestie πŸ‘‹

mlxd%d: still open, can't detach

the indicated system drive is still open or mounted, so the controller cannot be detached. she's busy, leave her alone. βœ‹

mlx%d: flushing cache...

the controller cache is being flushed before detach or shutdown. tidy queen 🧼

πŸ¦‹ Operational diagnostics:

mlx%d: ENQUIRY failed - %s
mlx%d: ENQUIRY2 failed
mlx%d: ENQUIRY_OLD failed
mlx%d: FLUSH failed - %s
mlx%d: CHECK ASYNC failed - %s
mlx%d: REBUILD ASYNC failed - %s
mlx%d: command failed - %s

the controller rejected a command β€” for the reason given. rude, but okay. πŸ’…

mlx%d: I/O beyond end of unit (%u,%d > %u)
mlx%d: I/O error - %s

an I/O error was reported by the controller. 😬

mlx%d: periodic enquiry failed - %s

an attempt to poll the controller for status failed β€” for the reason given. the poll just didn't hit. πŸ“‰

mlx%d: mlx_periodic_enquiry: unknown command %x

the periodic status poll issued a command which has become corrupted. glitch in the matrix πŸ’€

mlxd%d: drive offline
mlxd%d: drive online
mlxd%d: drive critical

the system disk indicated has changed state. we're keeping tabs πŸ‘€

mlx%d: physical drive %d:%d reset
mlx%d: physical drive %d:%d killed %s
mlx%d: physical drive %d:%d error log: sense = %d asc = %x asq = %x
mlx%d:   info %4D csi %4D

the drive at channel:target got reset, killed for the given reason, or hit a SCSI error. rest in pieces πŸͺ¦

mlx%d: unknown log message type %x
mlx%d: error reading message log - %s

an error occurred while trying to read the controller's message log. can't read the group chat rn 😭

mlxd%d: consistency check started
mlx%d: consistency check completed

a user-initiated consistency check has started/completed. you did that πŸ‘‘

mlx%d: drive rebuild started for %d:%d
mlx%d: drive rebuild completed

a user-initiated physical drive rebuild has started/completed. self-care for the array 🌸

mlx%d: background check/rebuild operation started
mlx%d: background check/rebuild operation completed

an automatic system drive consistency check or physical drive rebuild has started/completed. she works hard behind the scenes ✨

mlx%d: channel %d pausing for %d seconds
mlx%d: channel %d resuming
mlx%d: pause command failed - %s
mlx%d: pause failed for channel %d
mlx%d: resume command failed - %s
mlx%d: resume failed for channel %d

controller/channel pause operation notification. (and real talk β€” channel pause is not currently supported on any controller.) 🫠

mlx%d: controller wedged (not taking commands)

the controller is not responding to attempts to submit new commands. she's stuck, stuck. πŸ’€

mlx%d: duplicate done event for slot %d
mlx%d: done event for nonbusy slot %d

corruption has occurred β€” either in the controller's onboard list of commands or in the driver itself. pick your fighter πŸ™ˆ


πŸ” SEE ALSO πŸ”

  • mlxcontrol(8) β€” go check her out, she's the whole point of cross-referencing 🫢

πŸ‘‘ AUTHORS πŸ‘‘

the mlx driver was written by Michael Smith <msmith@FreeBSD.org>. legend behavior.

this manual page was written by Jeroen Ruigrok van der Werven <asmodai@FreeBSD.org> and Michael Smith <msmith@FreeBSD.org>. collab of the year, no notes πŸŽ€


⚠️ BUGS ⚠️

okay, real talk, the caveats β€” reading these is mandatory, i don't make the rules:

  • the DEC KZPSC has insufficient flash ROM to hold any reasonably recent firmware. this has caused problems for this driver. not her fault, she's doing her best 😭
  • the driver does not yet support the version 6.x firmware as found in the AcceleRAID 352 and eXtremeRAID 2000 and 3000 products. so if that's your hardware… not yet, bestie. πŸ™ˆ

πŸ’– and that's the whole page!! every flag, every message, every controller, every warning β€” nothing skipped, nothing invented. facts preserved, vibes immaculate. πŸ¦‹

kiss kiss, this page came to you from the Debian edition of the manual, dated May 27, 2025 β€” that's the MLX(4) footer energy, and we're closing it out with a lil πŸ’… and a 🫢. love u, go RAID responsibly ✨

πŸ“¦ where this page comes from