LINUX.ORG.RU

Размещение устройств на шинах

 , ,


0

2

Добрый день,

пытаюсь разобраться с тем, как организованы шины в линуксе. Для этого я на qemu установил линукс и подключаю устройства через разные интерфейсы.

Если я создаю устройство на шине ide, и в ядре есть драйвер ide_gd, то в директории /sys/bus появляется шина ide, где я вижу подключенные устройства. Если драйвер ide_gd не установлен (конкретно это я тестирую на дефолтном дебиановском ядре версии 2.6.32), устройства появляются на шине scsi. Как я понимаю, в первом ядре этого не происходит из-за отсутствия драйвера.

Теперь если я при старте qemu указываю шины scsi, то вне зависимости от наличия драйвера ide_gd, устройства появляются на шине pci. Но при этом в дебиановском ядре еще и на шине scsi.

Если я правильно понял то, что написано на OSDev wiki, то ide устройства должны также появляться на pci шине. Но этого не происходит.

Вопрос: почему если я при старте qemu указываю шину ide, то устройства не появляются на pci шине, а если указываю scsi, то появляются?

Виртуалку я стартовал следующим образом:

kvm -hda debian.img -cdrom debian-6.0.6-amd64-DVD-1.iso -m 512 -net nic,model=rtl8139 -net user,hostfwd=tcp::5555-:22 \
-drive file=mini.iso,if=scsi,bus=1,media=disk,format=raw -drive file=mini.iso,if=scsi,bus=0,media=disk,format=raw &

Оказывается, что все-таки появляются ide-устройства на pci шине, только не в том виде, как я ожидал.

Вот что выводит lspci для ide устройств:

00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 20)

Вот что выводит lspci для scsi:

00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 20)
00:04.0 SCSI storage controller: LSI Logic / Symbios Logic 53c895a
00:05.0 SCSI storage controller: LSI Logic / Symbios Logic 53c895a

Я как раз и не понимал почему для ide выводило устройств меньше.

Но как оказалось, устройства на шине ide — это всего лишь символические ссылки на устройства на шине pci:

ls -la /sys/bus/ide/devices/
total 0
drwxr-xr-x 2 root root 0 Jan 16 09:39 .
drwxr-xr-x 4 root root 0 Jan 16 09:39 ..
lrwxrwxrwx 1 root root 0 Jan 16 09:39 0.0 -> ../../../devices/pci0000:00/0000:00:01.1/ide0/0.0
lrwxrwxrwx 1 root root 0 Jan 16 09:39 0.1 -> ../../../devices/pci0000:00/0000:00:01.1/ide0/0.1
lrwxrwxrwx 1 root root 0 Jan 16 09:39 1.0 -> ../../../devices/pci0000:00/0000:00:01.1/ide1/1.0
lrwxrwxrwx 1 root root 0 Jan 16 09:39 1.1 -> ../../../devices/pci0000:00/0000:00:01.1/ide1/1.1

DesertFox
() автор топика
Ответ на: комментарий от DesertFox

Хотя я все равно пока не понимаю как на одной шине, на одном слоте, на одной функции может находиться несколько устройств.

DesertFox
() автор топика
Ответ на: комментарий от x-signal

Так в том-то и дело, что на OSDev wiki написано:

Each IDE drive appears as a device on the PCI bus.

DesertFox
() автор топика

Вопрос: почему если я при старте qemu указываю шину ide, то устройства не появляются на pci шине, а если указываю scsi, то появляются?

на pci шине появляется ide controller он виден как устройство на функции 1. к нему подключаются два канала, на канале может висеть два диска master и slave итого 4 диска

для скази, появляется скажи контроллер, тоже как pci устройство.

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