create_hyp_io_mappings(9)
π create_hyp_io_mappings β from the Kernel API Manual, bestie β¨
okay so picture this: you're in the <rainbow>Kernel API Manual</rainbow> and you found this little icon. It's literally called create_hyp_io_mappings, and what it does is map IO into both kernel and HYP. That's it. That's the whole vibe. Two worlds, one mapping, main character energy π«Ά
β¨ SYNOPSIS β¨
int create_hyp_io_mappings (phys_addr_t phys_addr , size_t size , void
__iomem **kaddr , void __iomem **haddr );
she takes four things and returns an int, no cap π
π ARGUMENTS π
phys_addrβ the physical start address that gets mapped. like, where the actual hardware lives, periodt πsizeβ size of the region being mapped. how much we're taking, bestie πkaddrβ Kernel VA for this mapping. one address, for the kernel side πΈhaddrβ HYP VA for this mapping. and the other one, for the HYP side π¦
not me re-reading this like yes, bothkaddrandhaddrare pointers-to-pointers (void __iomem **) β that detail matters, don't @ me π
π SEE ALSO π
Kernel file ./arch/arm64/kvm/mmu.c β and also, the whole friend group, fr fr:
kvm_arch_flush_remote_tlbs(9)__unmap_stage2_range(9)stage2_flush_vm(9)free_hyp_pgds(9)create_hyp_mappings(9)hyp_alloc_private_va_range(9)create_hyp_exec_mappings(9)kvm_init_stage2_mmu(9)stage2_unmap_vm(9)kvm_phys_addr_ioremap(9)kvm_stage2_wp_range(9)kvm_mmu_wp_memory_region(9)kvm_mmu_split_memory_region(9)kvm_handle_guest_abort(9)
and that's the page, bestie π sourced from ./arch/arm64/kvm, dated October 2026 β iconic of her, honestly. go map some IO π§ββοΈβ¨
π¦ 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