Я пытаюсь понять, как архитектура ARM (ARMv8) поддерживает ошибочный адрес в среде виртуализации. Для гипервизора каждое устройство доступа от гостя должно быть перехвачено для эмуляции устройства.
При доступе к памяти у гостя возникнет исключение, и гипервизор распознает причину исключения, прочитав ESR. Затем поймите, что причина в data_abort.
. После этого основной адрес с точки зрения гипервизора представляет основной интерес с ошибочным адресом: он получит адрес с ошибкой, прочитав HPFAR (частичное из IPA) и FAR (VA изошибочный адрес). Благодаря их объединению (верхняя часть ошибочного адреса исходит от HPFAR, а нижняя часть от FAR), гипервизор, наконец, может узнать ошибочный адрес, однако это действительно не 64-битный адрес. Он представляет только диапазон IPA ([51:12] или [47:12], в зависимости от версии ARMv8), а не полный 64-разрядный IPA.
Даже если большая часть реальной платформы неРазмер памяти 2 ^ 64, я думаю, что архитектура ARM должна поддерживать представление 64-битного IPA, но это не так.
Кто-нибудь может мне сказать, пропустил ли я что-то или есть особая причина, по которой ARM не поддерживает64 бит IPA?