Карта страниц на устройствах с отображением памяти не работает

В чем может быть проблема?

На самом деле у вас есть выбор «Рабочий стол» во время установки. Остальное: Минимум.

Это подойдет для недостающих частей: # yum groupinstall Desktop

1
18.05.2016, 22:42
1 ответ

Краткий ответ:Интерфейс карты страниц предоставляет информацию, хранящуюся на странице структуры, связанной с адресом. Адреса ввода-вывода представляют собой необработанные отображения pfn без связанной страницы структуры и поэтому отображаются как нули.

Более длинный ответ Переназначение физических адресов (, включая адреса ввода-вывода ), в пользовательское пространство выполняется вызовом remap_pfn_range.Эти переназначенные адреса не имеют связанного с ними struct page(они являются необработанными отображениями pfn ). Чтобы помнить, что эти адреса являются специальными, эта функция устанавливает VM_PFNMAPна vma.

Интерфейс карты страниц предоставляет набор полей, которые имеют отношение к тому, что находится в struct page, связанном с адресом. Но для этих адресов такой структуры нет. Таким образом, pagemap просто пропускает их:

Когда используется pagemap, ядро ​​выполняет обход страницы, используя walk_page_range. vmas с тегом VM_PFNMAPобрабатываются по-разному:

/*
 * vma(VM_PFNMAP) doesn't have any valid struct pages behind VM_PFNMAP
 * range, so we don't walk over it as we do for normal vmas. However,
 * Some callers are interested in handling hole range and they don't
 * want to just ignore any single address range. Such users certainly
 * define their ->pte_hole() callbacks, so let's delegate them to handle
 * vma(VM_PFNMAP).
 */

pte _отверстие карты страницы просто помещает кучу нулевых записей (по модулю некоторого дополнительного флага дляVM_SOFTDIRTY). Вот почему вы этого не видите...

Я не знаю ни одного интерфейса ядра, позволяющего получить физический адрес для таких отображений. Но это было бы легко сделать с модулем ядра или с помощью crash.

1
28.01.2020, 01:17

Теги

Похожие вопросы