SIIS(4)

πŸ’– SIIS(4) β€” SiliconImage Serial ATA Host Controller driver πŸ’–

okay bestie, sit down, hydrate, because we're about to talk about the SiliconImage Serial ATA Host Controller driver and honestly? it's giving iconic storage energy. this is the siis manual page, section 4 of the Kernel Interfaces Manual, and yes we're doing the whole thing, no skipping, no skimming, we eat every option here πŸ’…


✨ NAME ✨

siis β€” the SiliconImage Serial ATA Host Controller driver. that's her. that's the whole name. queen of SATA silicon πŸŽ€


✨ SYNOPSIS ✨

so to get this driver compiled into your kernel, you literally just drop these lines into your kernel configuration file, like so:

device pci
device scbus
device siis

orrr, if you'd rather be chill and load it as a module at boot time (main character move, no recompile needed), put this line in loader.conf(5):

siis_load="YES"

and now the tunables, bestie, because you can set these from loader(8) πŸ‘‘:

  • hint.siis.X.msi β€” controls Message Signaled Interrupts (MSI) usage by the specified controller. no cap, that's literally what it does.
  • hint.siisch.X.pm_level β€” controls SATA interface Power Management for the specified channel. the tradeoff is so real: you save some power, but you pay for it with additional command latency. the possible values are:
    • 0 β€” interface Power Management is disabled (this is the default);
    • 1 β€” the device is allowed to initiate a PM state change, and the host is just passive about it. lowkey hands-off.
⚠️ okay so listen, important: interface Power Management is not compatible with device presence detection. and if you hot-plug a device? a manual bus reset is needed. like, you have to do it. no autopilot here 🫢
  • hint.siisch.X.sata_rev β€” setting this to a nonzero value limits the maximum SATA revision (speed). values 1, 2 and 3 are respectively 1.5, 3 and 6Gbps. periodt πŸ’…

✨ DESCRIPTION ✨

so what does this driver even do, you ask? it provides the CAM(4) subsystem with native access to the SATA ports of controller. every single SATA port gets represented to CAM as a separate bus with 16 targets β€” yes, sixteen, we love a generous queen ✨. most of the bus-management details are handled by the SATA-specific transport of CAM, so it's not doing all that work alone.

connected ATA disks? handled by the ATA protocol disk peripheral driver ada(4) πŸ¦‹. ATAPI devices? handled by the SCSI protocol peripheral drivers cd(4), da(4), sa(4), etc. the whole gang's here.

driver features include β€” and bestie the list ate:

  • support for Serial ATA and ATAPI devices
  • Port Multipliers (including FIS-based switching, fancy)
  • hardware command queues (31 command per port, slay)
  • Native Command Queuing
  • SATA interface Power Management
  • device hot-plug 🌑️
  • Message Signaled Interrupts

and the glow-up detail: the activity LEDs of the adapters supported by the siis driver can be controlled via the led(4) API, for localization or status reporting purposes. so you can make your machine literally sparkle for status. we love a functional aesthetic πŸ’–


🌈 HARDWARE 🌈

the siis driver supports the following controller chips, and they're all kind of a moment:

  • SiI3124 (PCI-X 133MHz/64bit, 4 ports)
  • SiI3131 (PCIe 1.0 x1, 1 port)
  • SiI3132 (PCIe 1.0 x1, 2 ports)
  • SiI3531 (PCIe 1.0 x1, 1 port)

πŸŽ€ FILES πŸŽ€

  • /dev/led/siisch* β€” identification LED device nodes. yes, that's where the blinky little besties live ✨

πŸ’œ SEE ALSO πŸ’œ

ada(4), ata(4), cam(4), cd(4), da(4), led(4), sa(4)

go read those too, iykyk 🫢


πŸ¦‹ HISTORY πŸ¦‹

the siis driver first appeared in FreeBSD 8.0. a true icon from the jump πŸ‘‘


πŸ‘‘ AUTHORS πŸ‘‘

Alexander Motin <mav@FreeBSD.org>


and that's the whole page, bestie, we read every line, no skimming, we're so back πŸ’… this was Debian's rendering from March 23, 2015, so shoutout to that date for preserving the lore β€” mwah, go forth and manage your SATA ports responsibly 🌸

πŸ“¦ where this page comes from