I'm trying to understand how ARM architecture(ARMv8) support for faulting address in the virtualization environment. For the hypervisor, every device access from the guest must be trapped to emulate a device.
The memory access from the guest will generate an exception and the hypervisor will recognize the reason of exception by reading ESR. Then realize the reason is data_abort.
After then, the faulting address is the main interest from the perspective of the hypervisor that it will get the faulting address by reading HPFAR(partial of IPA) and FAR(VA of the faulting address). With Merging them(upper part of faulting address comes from HPFAR and lower part from FAR), the hypervisor finally could know the faulting address, however, it's not 64-bit address indeed. It only represents the IPA range of ([51:12] or [47:12], depends on the version of ARMv8) not the full 64-bit IPA.
Even though most of the actual platform doesn't have 2^64 size of memory, I think ARM architecture must support to represent 64bit full of IPA but it seems not.
Can anybody tell me whether I missed something or there's a special reason why ARM does not support 64bit of IPA?
It does not support 64bit for the PA either which might be one reason. BTW, what is the background of this question?
View all questions in Cortex-M / M-Profile forum