- Page faults are handled in an (obviously) architecture-dependent way... - ...So, the entry point for page faults is somewhere in arch/*... - See, for example, arch/x86/mm/fault.c::do_page_fault() + After some architecture-dependent stuff, do_page_fault() ends up in calling do_kern_addr_fault() or do_user_addr_fault() + do_user_addr_fault() -> handle_mm_fault() (architecture-independent code) + mm/memory.c::handle_mm_fault() -> handle_pte_fault() + For anonymous pages, it invokes do_anonymous_page() which somehow results in alloc_pages() do_anonymous_page() -> vma_alloc_zeroed_movable_folio() -> vma_alloc_folio() -> __folio_alloc() -> alloc_pages()