ata_host_activate(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… ata_host_activate(9) β€” the kernel API manual, but make it make sense

okay so bestie, welcome to the ata_host_activate page from the Kernel API Manual. yes it's a kernel function, no you're not scared of it, let's go 🫢


✨ NAME ✨

ata_host_activate β€” start host, request IRQ and register it. that's the whole vibe. three things, one function, iconic behavior honestly πŸ‘‘


🌸 SYNOPSIS 🌸

int ata_host_activate (struct ata_host *host , int irq , irq_handler_t
irq_handler , unsigned long irq_flags , const struct scsi_host_template
*sht );

πŸŽ€ ARGUMENTS πŸŽ€

  • host β€” the target ATA host. literally the star of the show, main character energy ✨
  • irq β€” the IRQ to request. this is the interrupt line you're asking for, no cap
  • irq_handler β€” the irq_handler used when requesting IRQ. yes the name's the same as the type, don't come for me, that's just how it is πŸ’€
  • irq_flags β€” the irq_flags used when requesting IRQ
  • sht β€” the scsi_host_template to use when registering the host. this is the paperwork you hand over at registration 🧾

πŸ¦‹ DESCRIPTION πŸ¦‹

so here's the deal: after you've allocated an ATA host and initialized it, most libata LLDs do three separate steps to activate the host β€” start host, request IRQ, and register it. three whole steps. exhausting. 😭

this helper is the shortcut: it takes the necessary arguments and does all three steps in one go. one call, three deeds, slay ✨

now for the plot twist 🌈 β€” an invalid IRQ skips the IRQ registration entirely, and it expects the host to have set polling mode on the port. and in that case, irq_handler should be NULL. like, genuinely NULL, not "eh close enough" πŸ™ˆ

LOCKING: inherited from the calling layer (may sleep). so like... you can sleep. but read the room, okay? πŸ’…

⭐ RETURN ⭐

0 on success, -errno otherwise. that's it, that's the return. success is zero, everything else is the errno telling you what went wrong πŸ”₯


πŸ‘‘ SEE ALSO πŸ‘‘

kernel file ./drivers/ata/libata-core.c β€” and bestie, the friend group is huge, buckle up πŸ’–

ata_link_next(9), ata_dev_next(9), ata_dev_phys_link(9), ata_force_cbl(9), ata_force_pflags(9), ata_force_link_limits(9), ata_force_xfermask(9), ata_force_quirks(9), atapi_cmd_type(9), ata_set_rwcmd_protocol(9), ata_tf_read_block(9), ata_build_rw_tf(9), ata_pack_xfermask(9), ata_unpack_xfermask(9), ata_xfer_mask2mode(9), ata_xfer_mode2mask(9), ata_xfer_mode2shift(9), ata_mode_string(9), ata_dev_classify(9), ata_id_string(9), ata_id_c_string(9), ata_read_native_max_address(9), ata_set_max_sectors(9), ata_hpa_resize(9), ata_dump_id(9), ata_id_xfermask(9), ata_exec_internal(9), ata_pio_need_iordy(9), ata_pio_mask_no_iordy(9), ata_do_dev_read_id(9), ata_dev_read_id(9), ata_dev_power_set_standby(9), ata_dev_power_set_active(9), ata_read_log_page(9), ata_dev_configure(9), ata_cable_40wire(9), ata_cable_80wire(9), ata_cable_unknown(9), ata_cable_ignore(9), ata_cable_sata(9), sata_print_link_status(9), ata_dev_pair(9), ata_timing_cycle2mode(9), ata_down_xfermask_limit(9), ata_set_mode(9), ata_wait_ready(9), ata_wait_after_reset(9), ata_std_prereset(9), ata_std_postreset(9), ata_dev_same_device(9), ata_dev_reread_id(9), ata_dev_revalidate(9), ata_is_40wire(9), cable_is_40wire(9), ata_dev_xfermask(9), ata_dev_set_xfermode(9), ata_dev_set_feature(9), ata_dev_init_params(9), atapi_check_dma(9), ata_std_qc_defer(9), ata_sg_init(9), ata_sg_clean(9), ata_sg_setup(9), swap_buf_le16(9), ata_qc_free(9), ata_qc_complete(9), ata_qc_get_active(9), ata_qc_issue(9), ata_phys_link_online(9), ata_phys_link_offline(9), ata_link_online(9), ata_link_offline(9), ata_host_suspend(9), ata_host_resume(9), ata_dev_init(9), ata_link_init(9), sata_link_init_spd(9), ata_port_alloc(9), ata_host_alloc(9), ata_host_alloc_pinfo(9), ata_finalize_port_ops(9), ata_host_start(9), ata_host_init(9), ata_host_register(9), ata_dev_free_resources(9), ata_port_detach(9), ata_host_detach(9), ata_pci_remove_one(9), ata_platform_remove_one(9), ata_msleep(9), ata_wait_register(9)

like I said. huge friend group. iykyk 🧚


and that's the page, bestie!! πŸ’œ this one lives over in ./drivers/ata and the copyright/version situation is dated October 2026 β€” so yeah, from the future, we stay ahead πŸ’…βœ¨ no cap, go activate some hosts πŸ¦‹

πŸ“¦ where this page comes from