LINUX.ORG.RU

PCI VGA без видебиоса будет доступно?

 , , , , видеобиос


0

1

Занимаюсь видеобиосом для PowerPC, захотел проверить код на обычном писюке.

План такой: вытащить ПЗУ, загрузить свой биос (он на Форте, поэтому платформо-независим) и увидеть, что видюха проинициализирована.

При наличии ПЗУ мой биос всё инитит, устанавливает правильный режим. При отсутствии - пищит, но загружает мой биос. Экран остаётся чёрным. Отсутсвует hsync.

До того как начну копаться в своём биосе - хочу уточнить, что это в принцпипе работает. Там же какие-то заморочки с legacy портами isa. Может, если основной биос не находит видеобиоса, то видюха вообще потом не видна? Как в случае нескольких видюх - когда биос отключает все кроме одной (речь про старые биосы и карты до SLI и Crossfire).

Кто-нибудь пробовал, например, Xы загрузить без видеобиоса? Ну, или оффтопик какой?

Неохота с нуль-модемным кабелем возиться, чтобы отлаживать.

★★★★★

биос ничего не отключает. pci устройство присутствует всегда.

воткните еще одну видяху, и отлаживайте себе сколько угодно...

NiTr0 ★★★★★
()
Ответ на: комментарий от NiTr0

Воткнул. Но когда лезу в исашные порты отлаживаемой видюхи, явно попадаю в порты той видюхи, через которую смотрю и на этом просмотр заканчивается.

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

хм, может порты по-разному маппятся, либо вообще i/o port mapping инициализируется видеобиосом...

wiki.osdev.org/PCI - попробуйте почитать конфиг pci девайсов. или запустите icdiag http://icbook.com.ua/software/icdiag.html для начала чтобы не заморачиваться, посмотрите в нем диапазоны i/o и памяти...

NiTr0 ★★★★★
()
Ответ на: комментарий от NiTr0

За icdiag - спасибо! А wiki.osdev.org/PCI читаю регулярно - в прошивкостроении без osdev никак. :-)

Тут у меня появилась зацепка. Люди, которые программировали этот драйвер для S3, говорят что было дофига модификаций и PLL/hsync на всех включался по-разному. Так что видимо, чтобы моя конкретная видюха заработала, надо всунуть обратно её биос, считать его и реверснуть первую сотню-другую команд, чтобы посмотреть где именно они её включают.

Кстати, не знаете, такую прогу, которая бы из option rom сделала бы .com файл? Смутно помню, что 25 лет назад пользовался чем-то подобным, но это были практически доинтернетные времена, так что никак не могу нагуглить.

P.S. Мне привычнее, если меня на «ты» называют.

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

исашные ресурсы включая биос мапятся в «главную» видяху, которая, собственно тебе и показывает картинку. чтоб достать ресурсы выдяхи без биоса тебе надо ручищами переназначить ей адреса i/o.

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

Спасибо! По-факту, мне не нужно две видюхи. Я вчера посмотрел - видюха без биоса на шине pci видна. Значит, я её не так программирую, а поскольку это - довольно ранняя инициализация - вторая видюха не сильно помогает. Разве что интерактивно регистры потыкать.

Но, ради саморазвития, чтобы поменять ей адреса портов, достаточно поменять I/O Space BAR, я правильно понимаю?

alt-x ★★★★★
() автор топика

Я вот одного не понимаю - нахрена тебе ISA-шные порты? Чем тебе PCI config space не мил?

slapin ★★★★★
()
Ответ на: комментарий от slapin

Ты имеешь ввиду, примапить их в другое место, посредством записи в PCI config space? Т.е. то же что и i36_zubov?

Вполне мил. Но если оно так просто ремаппится, почему ОС во времена PCI не поддерживали несколько адаптеров? Ведь ни NT, ни Linux не используют vga-bios (кроме спец случая с vesa, но он был позднее реализован).

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

беспонятие, option rom-ы не копал. но думаю навряд получится. com файл - жесткое смещение 100h, optrom - вроде с нуля же сегмент начинается, а вот куда указатель стартовый указывает - с ходу не скажу, вроде где-то там конф.структура есть.

NiTr0 ★★★★★
()
Ответ на: комментарий от alt-x

Ну не знаю, у меня работало аж 3 видеокарты в одном компе во времена PCI. Использовалось для организации 3 рабочих мест на 1 компе.

slapin ★★★★★
()
Ответ на: комментарий от alt-x

Linux, Какой-то SiS (не помню какой точно), Matrox g200, и какой-то S3, кажется True64+

Также столо 2 Matrox g200 + Matrox g450.

Так же тестовые конфигурации были на NetBSD 1.5. Всё железо ещё живо, но лежит в ящике, искать и копаться лень, тратить часы чтобы посмотреть не хочется.

slapin ★★★★★
()
Ответ на: комментарий от slapin

Да, и для нормальной работы нужна материна с 4 прерываниями на PCI, по крайней мере в те годы шаринг PCI IRQ на видео работал как-то не очень...

slapin ★★★★★
()

Начни с простого, сделай pci passthrough через kvm.

потом можешь попробовать passthrough в другую архитектуру, например в powerpc.

https://github.com/qemu/qemu/blob/master/hw/vfio/pci-quirks.c

вот например, весьма интересный файл.

может тебе сразу на EFI настроиться, там GOP драйвер сделать и забить на все эти VESA BIOS и прочую хреноту?

вот ещё интересный файл

https://github.com/qemu/qemu/blob/master/hw/display/cirrus_vga.c

dimon555 ★★★★★
()
Последнее исправление: dimon555 (всего исправлений: 1)
Ответ на: комментарий от dimon555

За файлы - спасибо, но в qemu я - один из майтейнеров. :-) Cirrus там хороший, но 40p в него не умеет, так что сношаемся с s3.

alt-x ★★★★★
() автор топика
Ответ на: комментарий от slapin

Попробовал грузануть Xы. Если s3 стоит одна и с биосом - всё грузится. Если не одна и не основная - всё зависает намертво при запуске Хов. Если одна, и без биоса, похоже, намертво зависает grub. Может она у меня из тех ревизий, что не совместимы со спецификациями. Такие были.

alt-x ★★★★★
() автор топика
Ответ на: комментарий от dimon555

А вот, кстати интересно, чтобы сделать pass through в другую архитектуру - нужна на хосте поддержка iommu, или можно без извратиться? Тот комп, в который я эту s3 втыкаю - реально древний.

А новых, чтоб и iommu и слот pci - ещё поискать.

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

нужна на хосте поддержка iommu, или можно без извратиться?

сам iommu нужен, чтобы dma от видео карты читали нужную память. Если подхачить драйвер и выделить какой-то кусок физической памяти в ядре и отдать его под эти самые dma, а потом ещё дать qemu как кусок памяти виртуальной машины, то наверное можно.

а вообще VGA режим использует память хоста?

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

вообще VGA режим использует память хоста?

Не использует. Там же видеопамять. И dma у старых видюх просто нет.

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

Не использует. Там же видеопамять. И dma у старых видюх просто нет.

тогда нужно взять модель vga видюхи из qemu и сделать перенаправление при чтении и записи из её регистров в регистры реального девайса, плюс надо ещё позаботить о ресете и о инжекте прерываний в qemu(если конечно прерывания используются). Я думаю vfio_pci драйвер можно как-то подхачить, чтобы без iommu_group оно работало, но тут надо смотреть. Можно попробовать через libpci как-то.

anonymous
()

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

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