LINUX.ORG.RU

Сообщения Heven

 

Смена физического адреса буфера в пространстве пользователя

Доброго времени суток.

Столкнулся со следующей проблемой:

Есть Soc от Xilinx с ARM ядрами. Ось Petalinux. Ядро 4.14. В пространстве ядра есть самописный драйвер DMA, задача которого считать из SHARE MEMORY в буфер приложения в пространстве пользователя. Сейчас это делается следующем образом:

  1. выделяется статический буфер в приложение в пространстве пользователя.

  2. Через ioctrl передаётся виртуальный адрес буфера в драйвер в пространстве ядра и драйвер берёт буфер через get_user_pages по виртуальному адресу. Это работает НО, периодически я вижу, что система поменяла в пространстве пользователя связку виртуального и физического адреса и как следствие в драйвере в пространстве ядра уже не валидные страницы из пространства пользователя.

Вопрос: как это обойти?

 ,

Heven
()

RSS подписка на новые темы