Неправильные указатели при попытке выделить страницы в виртуальном адресном пространстве ядра

Я работаю над драйвером Linux для x86-64 CentOS 7. У нас есть модуль ядра, который читает и записывает в файлы. Этот модуль пытается получить страницы, которые гарантированно будут смежными. Работает нормально когда пытаюсь поменьше read/write рабочие места 5 ГБ или 10 ГБ. Я получаю правильные указатели виртуального адресного пространства ядра, такие как 0xffff 8xxx xxxx xxxx
Однако, если я попробую большую работу / данные (скажем, от 20 до 50 ГБ), я получу эти адресные указатели, которые выглядят как 0x0000 00xx xxxx xxxxx, Это не указатели виртуального адресного пространства ядра.

Из-за этого я вижу сбой ОС. Однако, если я очищаю частоту кеша во время работы с помощью echo 3 > /proc/sys/vm/drop_caches тогда он работает нормально, и я получаю правильные указатели виртуального адресного пространства ядра.

Мои извинения за этот неопределенный тип вопроса. Любые намеки и предложения приветствуются.

Спасибо

0 ответов

Другие вопросы по тегам