Кажется, я неправильно понял когерентность кэша между ВМ и частью хоста, вот обновленный ответ.
То, что вы хотите, это "виртуальный адрес в ВМ" <-> "виртуальный или физический адрес в пространстве адресов QEMU".
Затем вы можете либо kmalloc его, но это может варьироваться от экземпляра к экземпляру,
или просто объявите глобальную переменную в ядре.
Тогда virt_to_phys даст вам доступ к физическому адресу в пространстве VM, и я полагаю, вы можете перевести его в пространство адресов QEMU. Что вы подразумеваете под "физическим адресом, который использует ядро, не назначенный никакому процессу?" Вы боитесь, что страница, содержащая вашу переменную, может быть заменена? kmalloced память не может быть заменена
Оригинальный (и неправильный) ответ
Если адрес, на который вы хотите написать, находится на его собственной странице, я не вижу, как ioremap
этой страницы будет замедлять выполнение кода на другой странице.
Вам все равно нужна очистка кеша, и без SSE я не вижу, как можно обойти кеш, если включены MMU и кеш. Я вижу только эти два варианта:
ioremap и объявить определенную страницу без кэширования
используйте «нормальный» адрес и вручную выполняйте очистку кэша каждый раз, когда вы пишете.