nand_block_markbad_lowlevel(9)
okay bestie, welcome to the nand_block_markbad_lowlevel(9) page from the Kernel API Manual β yes, the name is a whole mouthful, but it's giving important. we're gonna mark blocks bad and be cute about it. π
β¨ NAME β¨
nand_block_markbad_lowlevel β mark a block bad. that's the whole errand, no cap. like, a block is getting cancelled. π«
πΈ SYNOPSIS πΈ
int nand_block_markbad_lowlevel (struct nand_chip *chip , loff_t ofs );
π ARGUMENTS π
chipβ NAND chip object. the NAND chip in question, the main character. πofsβ offset from device start. literally where the drama is located, measured from the start of the device. π
π DESCRIPTION π
so this function performs the generic NAND bad block marking steps β i.e., bad block table(s) and/or marker(s). that's the whole job. the hardware driver is only allowed to specify how to write bad block markers to OOB (chip->legacy.block_markbad), and that's it. we don't let it freestyle beyond that. periodt π
ββοΈ
we try operations in this exact order, no skipping, no cap:
- erase the affected block, to allow OOB marker to be written cleanly
- write bad block marker to OOB area of affected block (unless flag
NAND_BBT_NO_OOB_BBMis present) - update the BBT
note that we retain the first error encountered in (2) or (3), finish the procedures, and dump the error in the end. yes bestie, we keep the first oopsie, finish the whole routine, and then spill the error at the end. the way that's such main character error handling. ππ₯
π¦ SEE ALSO π¦
the kernel file is ./drivers/mtd/nand/raw/nand_base.c β that's the source file, iykyk. and then there's the whole extended friend group of references, every single one invited: nand_extract_bits(9), nand_select_target(9), nand_deselect_target(9), nand_release_device(9), nand_bbm_get_next_page(9), nand_block_bad(9), nand_region_is_secured(9), nand_get_device(9), nand_check_wp(9), nand_fill_oob(9), nand_do_write_oob(9), nand_default_block_markbad(9), nand_markbad_bbm(9), nand_block_isreserved(9), nand_block_checkbad(9), nand_soft_waitrdy(9), nand_gpio_waitrdy(9), panic_nand_wait(9), nand_reset_interface(9), nand_setup_interface(9), nand_choose_best_sdr_timings(9), nand_choose_best_nvddr_timings(9), nand_choose_best_timings(9), nand_choose_interface_config(9), nand_fill_column_cycles(9), nand_read_page_op(9), nand_read_param_page_op(9), nand_change_read_column_op(9), nand_read_oob_op(9), nand_prog_page_begin_op(9), nand_prog_page_end_op(9), nand_prog_page_op(9), nand_change_write_column_op(9), nand_readid_op(9), nand_status_op(9), nand_exit_status_op(9), nand_erase_op(9), nand_set_features_op(9), nand_get_features_op(9), nand_reset_op(9), nand_read_data_op(9), nand_write_data_op(9), struct nand_op_parser_ctx(9), nand_op_parser_must_split_instr(9), nand_op_parser_match_pat(9), nand_op_parser_exec_op(9), nand_subop_get_addr_start_off(9), nand_subop_get_num_addr_cyc(9), nand_subop_get_data_start_off(9), nand_subop_get_data_len(9), nand_reset(9), nand_get_features(9), nand_set_features(9), nand_read_page_raw_notsupp(9), nand_read_page_raw(9), nand_monolithic_read_page_raw(9), nand_read_page_raw_syndrome(9), nand_read_page_swecc(9), nand_read_subpage(9), nand_read_page_hwecc(9), nand_read_page_hwecc_oob_first(9), nand_read_page_syndrome(9), nand_transfer_oob(9), nand_setup_read_retry(9), nand_do_read_ops(9), nand_read_oob_std(9), nand_read_oob_syndrome(9), nand_write_oob_std(9), nand_write_oob_syndrome(9), nand_do_read_oob(9), nand_read_oob(9), nand_write_page_raw_notsupp(9), nand_write_page_raw(9), nand_monolithic_write_page_raw(9), nand_write_page_raw_syndrome(9), nand_write_page_swecc(9), nand_write_page_hwecc(9), nand_write_subpage_hwecc(9), nand_write_page_syndrome(9), nand_write_page(9), nand_do_write_ops(9), panic_nand_write(9), nand_write_oob(9), nand_erase(9), nand_erase_nand(9), nand_sync(9), nand_block_isbad(9), nand_block_markbad(9), nand_suspend(9), nand_resume(9), nand_shutdown(9), nand_lock(9), nand_unlock(9), rawnand_dt_parse_gpio_cs(9), nand_scan_ident(9), nand_check_ecc_caps(9), nand_match_ecc_req(9), nand_maximize_ecc(9), nand_ecc_choose_conf(9), nand_scan_tail(9), nand_scan_with_ids(9), nand_cleanup(9).
and that's the page, bestie. source/version: ./drivers/mtd/nand/raw Β· date: October 2026 Β· page: nand_block_markbad_lowlevel(9). go mark some blocks bad, but like, responsibly. mwah ππ
π¦ 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