So a user mode program in Linux can do most things (I think most things) that can be done in kernel mode.
Ну, не все программы пользовательского режима могут, только те, у кого есть соответствующие привилегии. И это определяется ядром.
/dev/mem
защищен обычными правами доступа к файловой системе и возможностью CAP_SYS_RAWIO
. iopl()
и ioperm()
также ограничены той же возможностью.
/dev/mem
также может быть полностью скомпилирован из ядра(CONFIG_DEVMEM
).
Doesn't allowing a user mode program to have all this power defeats the purpose of having CPU modes?
Ну, может быть. Это зависит от того, что вы хотите, чтобы космические процессы привилегированного пользователя -могли делать. Пользовательские космические процессы -также могут уничтожить весь жесткий диск, если у них есть доступ к/dev/sda
(или эквивалентному ), даже если это противоречит цели наличия драйвера файловой системы для обработки доступа к хранилищу.
(Далее следует тот факт, что iopl()
работает, используя режимы привилегий процессора на i386, так что нельзя сказать, что он противоречит их назначению.)
Судя по всему, драйвер mfi (4)для контроллера PERC H330 имеет проблемы с некоторыми версиями прошивки (по крайней мере 25.3.0.0016 и 25.5.2.0001 ).
Для этой карты лучше использовать драйвер mrsas (4 ). Есть сообщение об удвоении производительности при использовании mrsas
по сравнению с mfi
.
Вы отдаете приоритет драйверу mrsas
с помощью этой настройки в/boot/device.hints
hw.mfi.mrsas_enable="1"
Из Ошибка 239801:
mfi (4 )может сообщать об ошибках ввода-вывода, не связанных с фактическим аппаратным сбоем. после обновления FreeBSD до 11.3 или 12.0.
Похоже, ошибка ввода-вывода зависит от конкретной версии прошивки. Некоторые старше версии прошивок нормально работают даже с mfi (4 )на 11.3 и 12.0.
Если устройство также поддерживается mrsas (4 ), переключение на него решит проблему. Ошибка. Обратите внимание, что это вызовет проблему несовместимости ---mfi (4 )использует /dev/mfi *узлы устройств для подключенных дисков и mfiutil (8 )в качестве пространства пользователя полезность. mrsas (4 )использует /dev/da *и утилиту, поставляемую поставщиком -, такую как вместо него мегакли.