ata_sff_interrupt(9)
β¨ ata_sff_interrupt(9) β¨
okay so bestie, welcome to the Kernel API Manual π this one's about ata_sff_interrupt, and yes it's giving "tiny function, huge responsibility" energy. let's get into it π«Ά
πΈ NAME πΈ
ata_sff_interrupt β the Default SFF ATA host interrupt handler π
like, the default one. the main character. the one that shows up when nobody more specific was assigned π
π¦ SYNOPSIS π¦
irqreturn_t ata_sff_interrupt (int irq , void *dev_instance );
π ARGUMENTS π
irqβ the irq line. and bestieβ¦ it's unused π like it literally gets passed in and then just sits there. iconic but unemployed.dev_instanceβ a pointer to ourata_hostinformation structure π this one's the actual VIP, it's where all the host info lives.
π DESCRIPTION π
so this is the default interrupt handler for PCI IDE devices. periodt.
what it does: it calls ata_sff_port_intr for each port that is not disabled π― like, every port that's still in the group chat gets the message. the disabled ones? left on read π
LOCKING: it obtains the host lock during operation π no cap, that's a real caveat β it grabs the lock while it's doing its thing, so plan accordingly.
β RETURN β
returns IRQ_NONE or IRQ_HANDLED β just those two, that's the whole menu π
π SEE ALSO π
the kernel file is ./drivers/ata/libata-sff.c π and here's the whole extended friend group, fr fr β every single one of them:
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_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_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)
that's a lot of cousins but we love them all π
ngl bestie, the whole point is just: default handler β loops the non-disabled ports β calls ata_sff_port_intr β holds the host lock β returns one of two codes. that's it, that's the tea β
and that's the page!! π brought to you by the ./drivers/ata crew, dated October 2026 β mwah, go read the source, ily, bye ππ§
π¦ 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