ata_force_pflags(9)
π ata_force_pflags β the kernel API manual, bestie edition
okay so real talk, this is ata_force_pflags(9) from the Kernel API Manual and it's literally the little gremlin that reads your libata.force boot soup and makes the port actually obey it. short page, but it ate. π«Ά
β¨ NAME β¨
ata_force_pflags β force port flags according to libata.force
like, the whole entire point of this function is making the port flags match what you demanded in libata.force. no cap. π
πΈ SYNOPSIS πΈ
void ata_force_pflags (struct ata_port *ap );
returns nothing (void), takes exactly one thing, and honestly that's the vibe. β¨
π¦ ARGUMENTS π¦
apβ the ATA port of interest π (yes that's the actual wording and yes it's sending me, "port of interest" like it's a crush)
π DESCRIPTION π
Force port flags according to libata.force... and whine about it. π
fr fr, the "whine about it" is doing so much work here β it's in the manpage, i'm not making that up. the function reads the libata.force knobs, shoves the port flags into place, and then complains loudly when it has to override things. main character behaviour honestly.
LOCKING: EH context. π¨ like, do not just wander in from anywhere, this runs in error-handler context, iykyk. respect the lock, bestie.
π SEE ALSO π
the friend group. the whole group chat. all of them are (9) kernel API pages and all of them are coming to the function:
ata_link_next(9)ata_dev_next(9)ata_dev_phys_link(9)ata_force_cbl(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_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)
also the source lives at the kernel file ./drivers/ata/libata-core.c β that's where the lore is kept. π
and that's the whole page! sign-off time: this lil drop is filed under ./drivers/ata, dated October 2026, and it's ata_force_pflags(9) β slay, go force some port flags bestie π
πβ¨
π¦ 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