ata_sff_error_handler(9)
π ata_sff_error_handler β the stock error handler for SFF controllers
okay so bestie, welcome to the Kernel API Manual (that's the manual name, keep it in your notes π) β this one lives in section 9 and it's literally the designated adult in the room when an SFF controller has a bad day. no cap. π«Ά
β¨ NAME β¨
ata_sff_error_handler β Stock error handler for SFF controller π
β¨ SYNOPSIS β¨
void ata_sff_error_handler (struct ata_port *ap );
that's the whole signature, she's short and she knows it π
β¨ ARGUMENTS β¨
apβ the port to handle error for. yeah. that port. the one going through it rn π
β¨ DESCRIPTION β¨
Stock error handler for SFF controller. that's the whole vibe β it's the off-the-rack, ready-to-wear error handler π and she is iconic for it.
She can handle both PATA and SATA controllers, so no picking favourites here, both get the same love π
Many controllers should be able to use this EH as-is, or with some added handling before and after β like, you can dress her up, accessorise, add your own little bits on either side, and she still slays β¨
LOCKING: Kernel thread context (may sleep). so like, she's allowed to nap π΄ do NOT come at her about it. if you're in a context where sleeping is forbidden, this is not the function for you, periodt.
β¨ SEE ALSO β¨
Kernel file ./drivers/ata/libata-sff.c plus the whole extended fam β every single one, fr fr, I'm not skipping a single cousin at this function reunion π§:
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_drain_fifo(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. everybody's invited. π
and that's the whole page, bestie π this cutie is brought to you by the Kernel API Manual, filed under ./drivers/ata, dated October 2026 β mwah, go handle some errors responsibly, ily ππ¦π
π¦ 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