On 11/18/22 20:10, Bagas Sanjaya wrote: > Greetings, > > I found a new htmldocs warning on mm-everything: > > WARNING: kernel-doc './scripts/kernel-doc -rst -enable-lineno -sphinx-version 2.4.4 -internal ./include/linux/mm_types.h' failed with return code 1 > > Checking the header with './scripts/kernel-doc -v -none > ./include/linux/mm_types.h', I got the full error: > > include/linux/mm_types.h:255: info: Scanning doc for struct encoded_page > include/linux/mm_types.h:268: error: Cannot parse struct or union! > include/linux/mm_types.h:287: info: Scanning doc for struct folio > include/linux/mm_types.h:917: info: Scanning doc for typedef vm_fault_t > include/linux/mm_types.h:924: info: Scanning doc for enum vm_fault_reason > include/linux/mm_types.h:1028: info: Scanning doc for enum fault_flag > 1 errors > > The culprit is encoded_page struct, which is null struct (nonexistent type) > with kernel-doc comments: > > /** > * struct encoded_page - a nonexistent type marking this pointer > * > * An 'encoded_page' pointer is a pointer to a regular 'struct page', but > * with the low bits of the pointer indicating extra context-dependent > * information. Not super-common, but happens in mmu_gather and mlock > * handling, and this acts as a type system check on that use. > * > * We only really have two guaranteed bits in general, although you could > * play with 'struct page' alignment (see CONFIG_HAVE_ALIGNED_STRUCT_PAGE) > * for more. > * > * Use the supplied helper functions to endcode/decode the pointer and bits. > */ > struct encoded_page; > > The struct is introduced by d57ab372568585 ("mm: introduce 'encoded' page > pointers with embedded extra bits"). https://lore.kernel.org/all/CAHk-=wiyYSrBiOKJEV3phOBDT7EMgdXCnDUrp57E8HGNT4SFdA@xxxxxxxxxxxxxx/ I guess that nobody has "fixed" it yet. -- ~Randy