ata_acpi_run_tf(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ NAME πŸŽ€

okay so bestie, this is the ata_acpi_run_tf(9) page from the Kernel API Manual, and the whole vibe is: send taskfile registers to host controller. That’s it, that’s the function. βœ¨πŸ’…

πŸ¦‹ SYNOPSIS πŸ¦‹

int ata_acpi_run_tf (struct ata_device *dev , const struct ata_acpi_gtf
*gtf , const struct ata_acpi_gtf *prev_gtf );

🌸 ARGUMENTS 🌸

  • dev β€” target ATA device. 🫢
  • gtf β€” raw ATA taskfile register set (0x1f1 - 0x1f7). πŸ”₯
  • prev_gtf β€” previous command. πŸ’–

✨ DESCRIPTION ✨

okay so picture this: it outputs the ATA taskfile to the standard ATA host controller. It writes the control, feature, nsect, lbal, lbam, and lbah registers. Optionally β€” and yes, specifically with ATA_TFLAG_LBA48 β€” it writes hob_feature, hob_nsect, hob_lbal, hob_lbam, and hob_lbah. Iconic register behavior, no cap. Slay. πŸ’…

This function waits for idle (!BUSY and !DRQ) after writing registers. If the control register has a new value, this function also waits for idle after writing control and before writing the remaining registers. The way it’s giving careful sequencing. πŸ¦‹

LOCKING: EH context. No cap, periodt. πŸ”’

πŸ’– RETURN πŸ’–

  • 1 β€” command is executed successfully. πŸŽ‰
  • 0 β€” ignored, rejected or filtered out. πŸ™ˆ
  • -errno β€” other errors. 😭

🌈 SEE ALSO 🌈

Kernel file ./drivers/ata/libata-acpi.c β€” and here’s the whole bestie squad:


This page is from source/version ./drivers/ata, dated October 2026, and it’s all about ata_acpi_run_tf(9) β€” bye bestie, go send those registers! πŸ’…βœ¨

πŸ“¦ where this page comes from