ata_sff_drain_fifo(9)
β¨ ata_sff_drain_fifo β¨
okay so bestie, welcome to the Kernel API Manual π this one's a lil function from the SFF controller corner of the kernel, and honestly it's giving "cleanup crew main character energy" π§Ήβ¨
πΈ NAME πΈ
ata_sff_drain_fifo β the stock FIFO drain logic for SFF controllers, no cap π«Ά
π¦ SYNOPSIS π¦
void ata_sff_drain_fifo (struct ata_queued_cmd *qc );
literally one job, one argument, and it returns void because it's not here to report back, it's here to drain π
π ARGUMENTS π
qcβ the command π« (yes, that's the whole description, she's a woman of few words and we respect it)
β DESCRIPTION β
okay so picture this: a command fails to complete π and now there's stuck data just sitting there in the FIFO and in the device being all stubborn about it. ata_sff_drain_fifo drains the FIFO and the device of all that leftover mess πΏ
and like, why do we care? because in some cases this is necessary before a reset will recover the device β the reset literally can't do its thing until the junk is cleared out. so this is the pre-reset vibes check, fr fr π
π SEE ALSO π
bestie there are so many friends in this family, buckle up π’ all of these live in the kernel file ./drivers/ata/libata-sff.c:
ata_sff_check_status(9)ata_sff_altstatus(9)ata_sff_irq_status(9)ata_sff_sync(9)ata_sff_pause(9)ata_sff_dma_pause(9)ata_sff_wait_ready(9)ata_sff_set_devctl(9)ata_sff_dev_select(9)ata_dev_select(9)ata_sff_irq_on(9)ata_sff_tf_load(9)ata_sff_tf_read(9)ata_sff_exec_command(9)ata_tf_to_host(9)ata_sff_data_xfer(9)ata_sff_data_xfer32(9)ata_pio_sector(9)ata_pio_sectors(9)atapi_send_cdb(9)__atapi_pio_bytes(9)atapi_pio_bytes(9)ata_hsm_ok_in_wq(9)ata_hsm_qc_complete(9)ata_sff_hsm_move(9)ata_sff_qc_issue(9)ata_sff_qc_fill_rtf(9)ata_sff_port_intr(9)ata_sff_interrupt(9)ata_sff_lost_interrupt(9)ata_sff_freeze(9)ata_sff_thaw(9)ata_sff_prereset(9)ata_devchk(9)ata_sff_dev_classify(9)ata_sff_wait_after_reset(9)ata_sff_softreset(9)sata_sff_hardreset(9)ata_sff_postreset(9)ata_sff_error_handler(9)ata_sff_std_ports(9)ata_pci_sff_init_host(9)ata_pci_sff_prepare_host(9)ata_pci_sff_activate_host(9)ata_pci_sff_init_one(9)ata_bmdma_fill_sg(9)ata_bmdma_fill_sg_dumb(9)ata_bmdma_qc_prep(9)ata_bmdma_dumb_qc_prep(9)ata_bmdma_qc_issue(9)ata_bmdma_port_intr(9)ata_bmdma_interrupt(9)ata_bmdma_error_handler(9)ata_bmdma_post_internal_cmd(9)ata_bmdma_irq_clear(9)ata_bmdma_setup(9)ata_bmdma_start(9)ata_bmdma_stop(9)ata_bmdma_status(9)ata_bmdma_port_start(9)ata_bmdma_port_start32(9)ata_pci_bmdma_clear_simplex(9)ata_pci_bmdma_init(9)ata_pci_bmdma_prepare_host(9)ata_pci_bmdma_init_one(9)ata_sff_port_init(9)
like I said. a whole squad π«Άβ¨
ok and before I forget β this page lives under ./drivers/ata, and the version vibes are October 2026 π
(that's the date stamped on the page, not me being delulu about the future π). mwah, bye bestie, go drain that fifo π
π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms