diff --git a/ru/projects/busdma/index.sgml b/ru/projects/busdma/index.sgml new file mode 100644 index 0000000000..3550b129f4 --- /dev/null +++ b/ru/projects/busdma/index.sgml @@ -0,0 +1,1209 @@ + + + + + + + %includes; + + +Нет данных"> +Выполнено"> +Выполняется"> +Требует тестирования"> +Не сделано"> +Неизвестно"> + + + + %developers; + +]> + + + &header; + +

Содержание

+ + + + +

Цель проекта

+ +

busdma

+ +

Интерфейсы busdma позволяют драйверам аппаратных устройств работать на + различных платформах без необходимости кодирования специфичных для + аппаратных платформ методов доступа непосредственно в драйверах. Это + снижает затраты на поддержку драйверов для разных платформ, и увеличивает + вероятность того, что драйвер будет "просто работать" на новой платформе. + Модификация драйвера для использования busdma является достаточно + определённым процессом, и не требует глубоких знаний ни драйвера + устройства, ни функций busdma. Для busdma, используемого во FreeBSD, как + правило, требуется внесение изменений двух типов: адаптация реализации + busdma к работе на всех платформах, и преобразование драйверов к + использованию этой технологии. Таким же образом информация о состоянии + этого проекта разбита на поддержку платформ и поддержку драйверов + (отсортированных по категориям). Для завершения этой работы необходим + тщательный аудит системных драйверов устройств, а затем приложение усилий + к преобразованию драйверов.

+ +

INTR_MPSAFE

+ +

Драйверы оборудования регистрируют свои обработчики прерываний при помощи + функции bus_setup_intr(). Установка флага + INTR_MPSAFE указывает коду обработки прерываний системы на + вызов её процедуры без включения семафора Giant. Это даёт значительный + прирост производительности в SMP-системах.

+ +

Драйверы могут устанавливать этот флаг, даже если они не являются + полностью изолированными, если только их обработчик прерываний не + обращается к другим структурам данных в драйвере. Простым способом + обеспечить это является проверка и сброс регистров состояния аппаратных + прерываний, а затем планирование обработки прерывания в очереди задач + (taskqueue) или потоке выполнения ядра (kernel thread).

+ +

Отделение SMPng

+ +

Драйверы должны использовать семафоры и sx-блокировки для защиты + собственных структур данных и аппаратных регистров от параллельно + выполняющихся потоков. Операции с семафорами несколько ресурсоёмки, так + что хорошей стратегией является комбинирование максимально возможного + количества атомарных операций в одну операцию захвата семафора.

+ +

поддержка p!=a

+ +

Поддержка Intel PAE требует, чтобы указатели и физические адреса имели + разный размер. Это значит, что драйверы должны быть писаться с + использованием vm_paddr_t или bus_addr_t, без предположений о том, что + физические адреса могут быть представлены при помощи void *. Кроме того, + строки форматов и операции приведения типов должны применяться с + осторожностью.

+ +

Перечень задач ниже не является полным, но представляет собой набор + имеющих отношение к делу и/или важных компонентов общей работы. Поле + "Ответственный" определяет разработчика, который изъявил желание отвечать + за выполнение конкретной задачи; это не исключает участия других, но + предполагает координацию с ответственным для избежания ненужного + дублирования работы и максимально быстрого продвижения вперёд. Если + начата новая работа приличного объёма, или заявленная оказалась + невостребованной, то стоит оповестить по электронной почте &a.mux;, чтобы + выяснить, имелось ли движение вперёд.

+ +

Смысл поля даты меняется в зависимости от состояния работы. Для + выполненных работ она означает дату окончания или сообщения об окончании. + Для задач, находящихся в процессе выполнения, оно обозначает дату + последнего обновления информации по задаче. Для остановившихся задач она + означает дату, когда эта задача была объявлена заброшенной. Для новых + задач это поле означает дату добавления задачи к списку.

+ +

Задачи отсортированы по состоянию, а затем по дате.

+ + +

Состояние по поддержке платформ

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ЗадачаОтветственныйПоследнее обновлениеСостояниеПримечания
alpha&a.gallatin;10 декабря 2002&status.done;В системах с большим объёмом оперативной памяти могут быть + проблемы.
amd64&a.peter;1 июля 2003&status.done;Поддерживается полностью.
ia64&a.marcel;10 декабря 2002&status.done;В системах с большим объёмом оперативной памяти могут быть + проблемы.
i386&a.sam;9 декабря 2002&status.done;Поддерживается полностью.
powerpc&a.hmp;15 января 2003&status.done;Поддерживается полностью.
sparc64&a.tmm;6 января 2003&status.done;Поддерживается полностью.
+ + +

Состояние по драйверам сетевых интерфейсов

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ДрайверОтветственныйПоследнее обновлениеbusdmaINTR_MPSAFEОтделение SMPnga!=pСостояние 4.xЗамечания
if_ar  &status.new;&status.new;&status.new;&status.new;&status.new;kvtop()
if_bge&a.wpaul;26 июля 2003&status.untested;&status.new;&status.new;&status.done;&status.new; 
if_cs  &status.new;&status.new;&status.new;&status.new;&status.new; 
if_dc&a.mux;17 апреля 2003&status.done;&status.new;&status.new;&status.untested;&status.new; 
if_de&a.mux; &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
if_ed  &status.new;&status.new;&status.new;&status.new;&status.new;kvtop()
if_em&a.pdeuskar;19 декабря 2002&status.done;&status.done;&status.new;&status.done;&status.new; 
if_en&a.harti;4 марта 2003&status.done;&status.new;&status.new;&status.untested;&status.new; 
if_ep&a.imp;4 ноября 2003&status.na;&status.done;&status.new;&status.done;&status.na; 
if_fxp&a.mux;9 декабря 2002&status.done;&status.done;&status.new;&status.done;&status.new; 
if_fwe  &status.new;&status.new;&status.new;&status.new;&status.new; 
if_gem&a.tmm;6 января 2003&status.done;&status.new;&status.new;&status.new;Нет данных 
if_gx  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
if_hme&a.tmm;6 января 2003&status.done;&status.new;&status.new;&status.new;Нет данных 
if_idt  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
if_lge  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
if_lmc  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
if_lnc&a.obrien; &status.new;&status.new;&status.new;&status.new;&status.new;vtophys(). Пожалуйста, для получения информации/оборудования + обратитесь к &a.phk;.
if_mn  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys(). Пожалуйста, для получения информации/оборудования + обратитесь к &a.phk;.
if_my  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
if_nge  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
if_pcn&a.obrien; &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
if_pdq  &status.new;&status.new;&status.new;&status.new;&status.new;по большей части поддерживает busdma, кроме vtophys()
if_rl&a.wpaul;9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
if_sf  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
if_sis&a.wpaul;9 декабря 2002&status.done;&status.done;&status.new;&status.new;&status.new; 
if_sk  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
if_sr  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
if_ste  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
if_ti  &status.new;&status.new;&status.new;&status.new;&status.new; 
if_tl  &status.new;&status.new;&status.new;&status.new;&status.new; 
if_tx&a.mux;19 апреля 2003&status.done;&status.new;&status.new;&status.untested;&status.new;vtophys()
if_txp&a.will;18 июля 2003&status.wip;&status.new;&status.new;&status.new;&status.new; 
if_vrChristian S.J. Peron <maneo@bsdpro.com>20 января 2003&status.wip;&status.new;&status.new;&status.new;&status.new; 
if_wb  &status.new;&status.new;&status.new;&status.new;&status.new; 
if_wi&a.sam;, &a.imp;4 ноября 2003&status.unknown;&status.done;&status.unknown;&status.unknown;&status.unknown; 
if_xl&a.mux;17 декабря 2002&status.done;&status.new;&status.new;&status.done;&status.new; 
+ + +

Состояние по драйверам устройств хранения

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ДрайверОтветственныйПоследнее обновлениеbusdmaINTR_MPSAFEОтделение SMPnga!=pСостояние 4.xПримечания
aac&a.scottl;8 февраля 2003&status.done;&status.done;&status.done;&status.done;&status.new;Возможности PCI-64, но не полностью поддерживает порядок следования + байтов endian
adv 9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
aha 9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
ahb 9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
aic7xxx 9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
amd 14 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
amr 9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
asr&a.obrien;4 января 2003&status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
ata&a.sos;9 декабря 2002&status.done;&status.done;&status.done;&status.done;&status.new; 
buslogic  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
ciss 9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
ct  &status.new;&status.new;&status.new;&status.new;&status.new; 
dpt  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
ida 9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
iir  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
isp 8 февраля 2003&status.done;&status.done;&status.new;&status.new;&status.new; 
mlx&a.scottl;8 февраля 2003&status.done;&status.wip;&status.wip;&status.new;&status.new; 
mly&a.scottl;8 февраля 2003&status.done;&status.wip;&status.wip;&status.new;&status.new; 
mpt 9 декабря 2002&status.done;&status.done;&status.new;&status.new;&status.new; 
ncr  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys(). Пожалуйста, обратитесь к &a.phk; для выяснения + возможности получить оборудование.
pst  &status.new;&status.done;&status.new;&status.new;&status.new;vtophys()
stg 9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new;По крайней мере выглядит как хорошо работающий.
sym 19 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
trm&a.cognet;9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
twe 9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
+ + +

Состояние по драйверам разных устройств

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ДрайверОтветственныйПоследнее обновлениеbusdmaINTR_MPSAFEотделение SMPnga!=pсостояние 4.xПримечания
agp&a.cognet;23 января 2003&status.wip;&status.new;&status.new;&status.new;&status.new;vtophys()
bktr&a.cognet;15 января 2003&status.wip;&status.new;&status.new;&status.new;&status.new;vtophys()
cs  &status.new;&status.new;&status.new;&status.new;&status.new; 
digi  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
drm&a.anholt;27 октября 2003&status.wip;&status.done;&status.done;&status.wip;&status.wip;vtophys(). Блокировку нужно немного пересмотреть.
exca&a.imp;9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
fb  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
firewire&a.simokawa;17 апреля 2003&status.done;&status.new;&status.new;&status.done;&status.new;vtophys()
hea  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
hfa  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
hifn&a.sam;9 декабря 2002&status.done;&status.done;&status.new;&status.new;&status.new; 
meteor  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys()
musycc  &status.new;&status.new;&status.new;&status.new;&status.new;vtophys(). Пожалуйста, за информацией/оборудованием обратитесь + к &a.phk;.
pcm&a.cognet;20 февраля 2003&status.done;&status.done;&status.new;&status.new;&status.new; 
ubsec&a.sam;9 декабря 2002&status.done;&status.done;&status.new;&status.new;&status.new;vtophys() использует для отладки printf
usb&a.jmg;24 июля 2003&status.done;&status.new;&status.new;&status.new;&status.new;a!=p должно работать, однако требуется дополнительное + тестирование
wds 9 декабря 2002&status.done;&status.new;&status.new;&status.new;&status.new; 
+ + +

Состояние по документированию

+ + + + + + + + + + + + + + + + + +
ЗадачаОтветственныйПоследнее обновлениеСостояниеПримечания
справочные страницы по busdma API&a.hmp;15 января 2003&status.done; 
+ + &footer; + + + \ No newline at end of file