ufshcd_err_handler(9)
β¨ ufshcd_err_handler β¨
okay so real quick β this page lives in the Kernel API Manual π and it's about one very specific little worker function. Buckle up bestie.
πΈ NAME πΈ
ufshcd_err_handler β handle UFS errors that require s/w attention
like, the actual vibe: when the UFS driver hits an error that software has to deal with (not something the hardware can just shrug off), this is the handler that gets called. no cap. π
π SYNOPSIS π
void ufshcd_err_handler (struct work_struct *work );
π¦ ARGUMENTS π¦
workβ pointer to work structure β¨ that's it. that's the whole argument. she takes one (1) pointer to a work structure and gets to work.
ngl it's a very short page and that's iconic of it. not every function needs a novel. π«Ά
π SEE ALSO π
okay this is the part where the manpage absolutely ate β the cross-reference list is long and we are NOT skipping a single one, bestie. every one of these is a real ufshcd family member and they all get their moment π
- the
(9)neighbours, part 1:ufshcd_enable_intr(9),ufshcd_disable_intr(9),ufshcd_print_trs_all(9),ufshcd_print_pwr_info(9),ufshcd_wait_for_register(9),ufshcd_get_intr_mask(9),ufshcd_get_ufs_version(9),ufshcd_is_device_present(9),ufshcd_get_tr_ocs(9),ufshcd_utrl_clear(9),ufshcd_utmrl_clear(9),ufshcd_get_lists_status(9),ufshcd_get_req_rsp(9),ufshcd_is_exception_event(9) - interrupt aggregation + run/stop + hba:
ufshcd_reset_intr_aggr(9),ufshcd_config_intr_aggr(9),ufshcd_disable_intr_aggr(9),ufshcd_enable_run_stop_reg(9),ufshcd_hba_start(9),ufshcd_is_hba_active(9) - pm qos + clocks + gears (the whole devfreq situation π):
ufshcd_pm_qos_init(9),ufshcd_pm_qos_exit(9),ufshcd_pm_qos_update(9),ufshcd_set_clk_freq(9),ufshcd_scale_clks(9),ufshcd_is_devfreq_scaling_required(9),ufshcd_pause_command_processing(9),ufshcd_resume_command_processing(9),ufshcd_scale_gear(9),ufshcd_devfreq_scale(9),ufshcd_hold(9) - command sending + sense/query responses:
ufshcd_send_command(9),ufshcd_copy_sense_data(9),ufshcd_copy_query_response(9),ufshcd_hba_capabilities(9) - uic cmd pipeline (say that five times fast):
ufshcd_ready_for_uic_cmd(9),ufshcd_get_upmcrs(9),ufshcd_dispatch_uic_cmd(9),ufshcd_wait_for_uic_cmd(9),__ufshcd_send_uic_cmd(9),ufshcd_send_uic_cmd(9) - sg + upiu prep, lowkey the glue of everything:
ufshcd_sgl_to_prdt(9),ufshcd_map_sg(9),ufshcd_prepare_req_desc_hdr(9),ufshcd_prepare_utp_scsi_cmd_upiu(9),ufshcd_prepare_utp_query_req_upiu(9),ufshcd_compose_devman_upiu(9),ufshcd_comp_scsi_upiu(9),ufshcd_upiu_wlun_to_scsi_wlun(9) - queueing + device commands:
ufshcd_queuecommand(9),ufshcd_dev_cmd_completion(9),ufshcd_exec_dev_cmd(9) - queries and descriptors, the "asking the device nicely" arc π:
ufshcd_init_query(9),ufshcd_query_flag(9),ufshcd_query_attr(9),ufshcd_query_attr_retry(9),ufshcd_query_attr_qword(9),ufshcd_query_descriptor_retry(9),ufshcd_read_desc_param(9),struct uc_string_id(9),ufshcd_read_string_desc(9),ufshcd_read_unit_desc_param(9) - memory things:
ufshcd_memory_alloc(9),ufshcd_host_memory_configure(9) - dme / unipro vibes:
ufshcd_dme_link_startup(9),ufshcd_dme_reset(9),ufshcd_dme_enable(9),ufshcd_dme_set_attr(9),ufshcd_dme_get_attr(9),ufshcd_dme_rmw(9),ufshcd_uic_pwr_ctrl(9),ufshcd_uic_tx_eqtr(9),ufshcd_send_bsg_uic_cmd(9) - power mode everything:
ufshcd_uic_change_pwr_mode(9),ufshcd_get_max_pwr_mode(9),ufshcd_dme_change_power_mode(9),ufshcd_change_power_mode(9),ufshcd_config_pwr_mode(9) - bring-up + link startup:
ufshcd_complete_dev_init(9),ufshcd_make_hba_operational(9),ufshcd_hba_stop(9),ufshcd_hba_execute_hce(9),ufshcd_link_startup(9),ufshcd_verify_dev_init(9),ufshcd_setup_links(9),ufshcd_lu_init(9) - scsi device life cycle:
ufshcd_sdev_init(9),ufshcd_change_queue_depth(9),ufshcd_sdev_configure(9),ufshcd_sdev_destroy(9),ufshcd_scsi_cmd_status(9),ufshcd_transfer_rsp_status(9) - completion path:
ufshcd_uic_cmd_compl(9),ufshcd_compl_one_cqe(9),__ufshcd_transfer_req_compl(9),ufshcd_mcq_compl_pending_transfer(9),ufshcd_transfer_req_compl(9) - exception events + bkops:
ufshcd_disable_ee(9),ufshcd_enable_ee(9),ufshcd_enable_auto_bkops(9),ufshcd_disable_auto_bkops(9),ufshcd_force_reset_auto_bkops(9),ufshcd_bkops_ctrl(9),ufshcd_exception_event_handler(9) - error handling besties (hi, this is the whole point of the page π):
ufshcd_quirk_dl_nac_errors(9),ufshcd_abort_all(9),ufshcd_update_uic_error(9),ufshcd_check_errors(9) - interrupt handlers:
ufshcd_tmc_handler(9),ufshcd_handle_mcq_cq_events(9),ufshcd_sl_intr(9),ufshcd_intr(9) - task management + raw upiu:
ufshcd_issue_tm_cmd(9),ufshcd_issue_devman_upiu_cmd(9),ufshcd_exec_raw_upiu_cmd(9),ufshcd_advanced_rpmb_req_handler(9) - abort + reset, aka the drama arc π₯:
ufshcd_eh_device_reset_handler(9),ufshcd_try_to_abort_task(9),ufshcd_abort(9),ufshcd_process_probe_result(9),ufshcd_host_reset_and_restore(9),ufshcd_reset_and_restore(9),ufshcd_eh_host_reset_handler(9) - icc levels:
ufshcd_get_max_icc_level(9),ufshcd_find_max_sup_active_icc_level(9) - wlus + device id:
ufshcd_scsi_add_wlus(9),ufshcd_create_device_id(9) - quirk tuning:
ufshcd_quirk_tune_host_pa_tactivate(9),ufshcd_quirk_override_pa_h8time(9) - add lus + op mode + probe:
ufshcd_add_lus(9),ufshcd_get_op_mode(9),ufshcd_probe_hba(9),ufshcd_async_scan(9) - suspend/resume / system + runtime pm:
ufshcd_set_dev_pwr_mode(9),ufshcd_suspend(9),ufshcd_resume(9),ufshcd_system_suspend(9),ufshcd_system_resume(9),ufshcd_runtime_suspend(9),ufshcd_runtime_resume(9) - teardown + host alloc + init:
ufshcd_remove(9),ufshcd_set_dma_mask(9),ufshcd_devres_release(9),ufshcd_alloc_host(9),ufshcd_init(9)
also the kernel file that started all of this: ./drivers/ufs/core/ufshcd.c π¦
head's up, bestie: that kernel file line came with the source path, and the whole reference list above is exactly as handed down to us β no edits, no merges, no invented options. we respect the source π
okay that's the page! πβ¨ this whole thing is from the Kernel API Manual β that's the source/version β with a date stamp of October 2026, and the file it points at lives under ./drivers/ufs/core. ty for coming to my ted talk, ily, go read ufshcd_check_errors(9) next π«Άππ
π¦ 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