OSDev
http://osdev.su/

PCI
http://osdev.su/viewtopic.php?f=7&t=473
Страница 3 из 3

Автор:  SII [ 24 дек 2011, 00:21 ]
Заголовок сообщения:  Re: PCI

Bargest писал(а):
Про вырубание компа ничего...


Так у Вас же вроде не реальный компутер вырубается, а QEMU? Вполне может быть, что он просто глючит, да и всё...

Автор:  Bargest [ 24 дек 2011, 00:26 ]
Заголовок сообщения:  Re: PCI

Возможно... Правда почему тогда с одним диском (на первом канале Master) просто ошибка чтения, с другим (на втором Master) - вырубание? Если глюк в QEMU - там же должны быть одинаковые алгоритмы работы с дисками 1 и 2 каналов.
Ну ладно, буду считать, что это глюк.
Так можно ли считать наличие/отсутствие бита Bus Mastering в регистре Command достаточной проверкой поддержки PCI DMA? Или нужны другие проверки?

Автор:  Bargest [ 24 дек 2011, 20:11 ]
Заголовок сообщения:  Re: PCI

Все еще интересует последний вопрос.

Автор:  Bargest [ 01 янв 2012, 06:31 ]
Заголовок сообщения:  Re: PCI

Мдя... Значит буду считать достаточной проверкой, пока опытным путем не выяснится ее недостаточность.:)

Автор:  SII [ 01 янв 2012, 14:58 ]
Заголовок сообщения:  Re: PCI

Судя по названию бита, именно он и определяет, может ли устройство выступать в роли "мастера" (задатчика) шины, т.е. выполнять прямой доступ к памяти без участия процессора.

Автор:  Bargest [ 01 янв 2012, 17:51 ]
Заголовок сообщения:  Re: PCI

В третий раз перечитал абзац из спецификации:
Цитата:
The Command register provides coarse control over a device's ability to generate and
respond to PCI cycles. When a 0 is written to this register, the device is logically
disconnected from the PCI bus for all accesses except configuration accesses. All devices
are required to support this base level of functionality. Individual bits in the Command
register may or may not be implemented depending on a device’s functionality. For
instance, devices that do not implement an I/O Space will not implement a writable element
at bit location 0 of the Command register. Devices typically power up with all 0's in this
register, but Section 6.6 explains some exceptions. Figure 6-2 shows the layout of the
register and Table 6-1 explains the meanings of the different bits in the Command register.

Выходит, что для устройства, которое не поддерживает какую-то функцию, соответствующий бит будет Read-Only и равен нулю. Только вот в QEMU бит Bus Master является Writable, однако PCI DMA не работает. А в VMWare тоже Writable, и PCI DMA работает. Вот сижу гадаю: толи глюк QEMU, толи проверка недостаточная...

Автор:  grindars [ 02 янв 2012, 18:57 ]
Заголовок сообщения:  Re: PCI

Поддержка PCI DMA в IDE-контроллерах QEMU есть, так что, вероятно, вы их неверно используете (или QEMU их неверно реализует). См. pci.c и другие файлы в этом каталоге.

Автор:  Bargest [ 07 янв 2012, 18:23 ]
Заголовок сообщения:  Re: PCI

В VMWare работает, при том что никаких аппаратно-зависимых вещей в коде нет. Возможно в QEMU неверная реализация для дисков.
Тогда выходит, что снятый бит Bus Master не является гарантией отсутствия этой функции у контроллера.

Страница 3 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/