Separating the various v2p versions for the different paging modes is definitely an improvement, but I don't think the abstraction of intel_init() and amd64_init() really adds much here.

Depending on how the logic looks for adding ARM support to this file, it might be clearer to have a single x86_init() function that handles the 3 cases for Intel.  Then when ARM is added, it is just the second case here and the flow here is clearer.