LINUX.ORG.RU

Еще раз про использование FPU в драйвере (+)


0

0

Приветствую!

Скажите, плиз, чем черевато использование команд FPU в драйвере? Знаю что операции с плавающей точкой нельзя/не рекомендуется использовать в режиме ядра.

Объясню ситуацию: есть драйвер, обслуживающий PCI железяку. Драйвер использует FPU и при этом не заморачивается с сохранением/восстановлением его контекста. Пока драйвер работает нормально, но нету уверенности, что он будет себя также вести, когда на систему будет поставлено другое ПО.

Уточню вопрос: что произойдет если драйвер выполнит операцию с плавающей точкой, когда FPU находится(был прерван) в режиме выполнения каких-ть SSE команд? Как это повлияет на работоспособность системы в целом? Сработает исключение или просто операция выполнится неверно? Это как-ть повлияет на дальнейшую работоспособность системы и других приложений?

Я не разработчик этого драйвера, просто надо оценить возможность его использования.

Заранее спасибо.

окружите операции с плавающей точкой скобками
kernel_fpu_begin()/kernel_fpu_end()

> что произойдет если драйвер выполнит операцию с плавающей точкой, когда FPU находится(был прерван) в режиме выполнения каких-ть SSE команд?

могут быть проблемы. они же могут быть, если прерванный
процес делал невинные вычисления с fpu.

idle ★★★★★
()

Если совсем мучит паранойя, то можно попытаться скомпилить ядро с флагом -msoft-float.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.