ata_host_start(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ‘‘ ata_host_start β€” the Kernel API Manual page, but make it a group chat

okay so bestie, this page is literally called ata_host_start(9) and it lives in the Kernel API Manual. It's about spinning up an ATA host's ports and then, uh, freezing them?? which sounds mean but it's fine, it's the whole point. Let's go πŸ’…


✨ NAME ✨

ata_host_start β€” start and freeze ports of an ATA host 🫢


🌸 SYNOPSIS 🌸

int ata_host_start (struct ata_host *host );

πŸŽ€ ARGUMENTS πŸŽ€

  • host β€” the ATA host whose ports we're about to start. This is your host. Be nice to it. πŸ’–

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so here's the vibe: this function starts the ports of host, and then freezes them. Yes, both. Start, then freeze. That's the whole bit, periodt. 🧊

The started status gets recorded in host->flags, which is lowkey iconic because it means this function can be called multiple times and it won't freak out. Ports are guaranteed to get started only once β€” no cap, no double-starting, none of that mess.

And if host->ops isn't initialized yet, it gets set to the first non-dummy port ops. Cute little fallback, love that for it. ✨

LOCKING: inherited from the calling layer β€” and yes, it may sleep. 😴 So like... don't call it from somewhere spicy, bestie. Respect the sleep.

πŸ”₯ RETURN πŸ”₯

  • 0 β€” all ports started successfully, we ate, no crumbs πŸ‘‘
  • -errno β€” something went sideways, and you get the negative errno to tell you what 🫠

πŸ’œ SEE ALSO πŸ’œ

First off: the kernel file is ./drivers/ata/libata-core.c. Go say hi. 🌈

Then there's, like, a whole friend group of related calls β€” each one is (...) with the (9) section suffix, shown here exactly so you can copy-paste them and look like a genius:

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_init(9), ata_host_register(9), ata_host_activate(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) πŸ¦‹πŸ’–


okay that's the whole page, bestie β€” good luck out there, hydrate, and remember: start then freeze, 0 or -errno, and it may sleep so act accordingly πŸ˜­πŸ’…

signed off with love from ./drivers/ata (the drivers/ata corner of the kernel), dated October 2026, and this gorgeous page is ata_host_start(9) βœ¨πŸŽ€πŸ’–

πŸ“¦ where this page comes from