LINUX.ORG.RU

Делаю одноплатный компьютер из WIFI-Роутера.. Нужна помощь с Драйвером «atyfb»

 , , ,


3

6

Так... Для начала немного предыстории...

Думаю здесь уже многие наверно 'слышали' про такую штуку как «raspberry pi 4 compute module + io board» который вышел пару месяцев назад. (Если нет вкратце объясню... это одноплатный компьютер на ARM процессоре в последнюю модификацию которого была добавлена поддержка PCIe x1).

Так-вот сейчас youtube переполнен роликам в которых народ тычет е PCIe x1 слот на этом компьютере всякую хрень. По типу: Звуковые карты, карты видео захвата, raid -контроллеры, nvme ссд-шки, видеокарты... короче все что можно засунуть, уже туда суют! И как вы думайте что из того списка мозолит больше всего глаза ютуберов? Если кто-то подумал о видеокартах...То поздравляю.. вы угадали! честно говоря я сам не совсем понимаю зачем пихать в одноплатный компьютер GTX1650... но сам факт того что  целая куча народа пытается заставить грёбаною видеокарту работать на ARM процессоре заставил меня задуматься... Неужели это так сложно? немного подумав.. мне захотелось тоже попробовать... И я решил купить этот «raspberry pi 4 compute module + io board» но как оказалось его в наличии нигде нет... Становись в очередь и жди 3 месяца или покупай у перекупщиков на ebay в 2 раза дороже... Мдя... Не мой вариант!...

И тут моему взору пал старенький роутер Asus WL-500g... и сразу-же вспомнилось, что там стоит WIFI в MiniPCI слоте... Ну тут вы уже наверное поняли к чему я клоню... Моя больная фантазия увидела в этом, и так уже измученном жизнью роутере видеокарту =) Я уже ранее ему сделал 2 модификации...1я - увеличил объем оперативной памяти с 32Мб до 128Мб (перепаял 2 чипа), 2я - Установил туда debian 7 на ядре от openwrt. Ну думаю настало время 3-тий завершающий модификации по добавлению видеокарты, звуковой карты, клавы и мыши... И воля вот вам одноплатный компьютер на MIPS процессоре =) Думаю ресурсов должно хватить для запуска рабочего стола, doom и эмулятора денди =)

В общем задачу я себе поставил подключить к роутеру видеокарту! ПРИСТУПАЮ!... 1-вым делом начал искать видеокарту для слота miniPCI... нашел одну... MS-9513 ATI Rage XL 8Mb... даже не знал что такое существует... Но к сожалению в продаже я её, нигде не нашел... но зато нашел информацию о том что этот чип должен работать на mips процессорах а это важно в моём случае! Раз уж я не могу приобрести эту карточку то в голову приходит вариант номер 2 переходник miniPCI to PCI и их тоже как назло в продаже нет! (Китайцы где же вы, когда вы так нужны?...) В общем так как я с электроникой на ты! Я решил сделать переходник самостоятельно... всего то нужно было прочитать страниц 40 pci документации и нарисовать в CAD программе переходник... За 2 дня не сильного напряга нарисовал переходник и заказал его на производстве печатных плат у китайцев.... Жду 2 недели... Но не расслабляюсь так как мне еще нужно найти видеокарту ATI Rage XL 8Mb для обыкновенного PCI слота но с ключом на 3.3в что скажу вам не так-то уж и просто так-как практически все карточки 5 вольтовые... Хоть это не составило большого труда.. нашёл её на ближайшей компьютерной барахолке.. за 7$.. Спустя неделю ко мне таки пришли платы «Фотка-1» от китайцев... Спаял одну засунул в роутер «Фотка-2» и воткнул в неё для начала сетевую плату, её не жалко спалить если я где то накосячил с разводкой платы.... Заработало с первого раза! даже модуль ядра подхватило что меня довольно сильно удивило...

Ладно приступаю ко второму этапу сую туда видеокарту «Фотка-3» и запускаю... Плату на шине pci видит! Ура! но картинки нет =( собственно ожыдаеммо модуля ядра веть тоже нет... пересобрал ядро добавил поддержку графики и драйвера atyfb и mach64... Залил в роутер и что вы думайте? Кирпич! Все-таки это не так то и просто заставить из коробки работать видюху на другой архитектуре процессора как минимум из за отсутствия bios который читает rom видюхи и инициализирует регистры в самой видеокарте для работы в так называемом режиме video_bios....

Собственно на этом этапе я и застрял и уже сижу две недели  Кое как настроил earlyprintk и и наконец то получил Kernel Panic который openwrt от меня дня 4 прятал...

CFE version 1.0.37 for BCM947XX (32bit,SP,LE)
Build Date: ▒| 10▒▒ 12 22:21:19 CST 2006 (root@localhost.localdomain)
Copyright (C) 2000,2001,2002,2003 Broadcom Corporation.

Initializing Arena
Initializing Devices.
et0: Broadcom BCM47xx 10/100 Mbps Ethernet Controller 3.90.7.0
rndis0: Broadcom USB RNDIS Network Adapter (P-t-P)
CPU type 0x29006: 264MHz
Total memory: 134217728 KBytes

Total memory used by CFE:  0x80800000 - 0x8089AF40 (634688)
Initialized Data:          0x808313D0 - 0x80833790 (9152)
BSS Area:                  0x80833790 - 0x80834F40 (6064)
Local Heap:                0x80834F40 - 0x80898F40 (409600)
Stack Area:                0x80898F40 - 0x8089AF40 (8192)
Text (code) segment:       0x80800000 - 0x808313D0 (201680)
Boot area (physical):      0x0089B000 - 0x008DB000
Relocation Factor:         I:00000000 - D:00000000

Device eth0:  hwaddr 00-1B-FC-E2-9F-10, ipaddr 192.168.1.200, mask 255.255.255.0
        gateway not set, nameserver not set
Null Rescue Flag.
Reading :: TFTP Server.
Failed.: Timeout occured
Loader:raw Filesys:raw Dev:flash0.os File: Options:(null)
Loading: .. 3712 bytes read
Entry at 0x80001000
Closing network.
Starting program at 0x80001000
[    0.000000] Linux version 3.18.109 (openwrt@debian) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r49632) ) #5 Fri Dec 18 20:38:41 EET 2020
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 00029006 (Broadcom BMIPS3300)
[    0.000000] bcm47xx: Using ssb bus
[    0.000000] ssb: Found chip with id 0x4704, rev 0x09 and package 0x00
[    0.000000] Unsupported SPROM revision 0 detected. Will extract v1
[    0.000000] ssb: Sonics Silicon Backplane found at address 0x18000000
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 08000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x00000000-0x07ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00000000-0x07ffffff]
[    0.000000] Initmem setup node 0 [mem 0x00000000-0x07ffffff]
[    0.000000] Primary instruction cache 16kB, VIPT, 2-way, linesize 16 bytes.
[    0.000000] Primary data cache 16kB, 2-way, VIPT, cache aliases, linesize 16 bytes
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
[    0.000000] Kernel command line:  earlyprintk noinitrd console=ttyS0,115200
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 125892K/131072K available (2829K kernel code, 126K rwdata, 560K rodata, 184K init, 282K bss, 5180K reserved, 0K cma-reserved)
[    0.000000] NR_IRQS:128
[    0.000000] MIPS: machine is Asus WL500GP V1
[    0.000000] Console: colour dummy device 80x25
[    0.000000] Calibrating delay loop... 262.96 BogoMIPS (lpj=1314816)
[    0.070000] pid_max: default: 32768 minimum: 301
[    0.070000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.080000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.090000] NET: Registered protocol family 16
[    0.300000] DMA-API: preallocated 65536 debug entries
[    0.300000] DMA-API: debugging enabled by kernel config
[    0.310000] Switched to clocksource MIPS
[    0.640000] PCI host bridge to bus 0000:00
[    0.650000] pci_bus 0000:00: root bus resource [mem 0x40000000-0x7fffffff]
[    0.650000] pci_bus 0000:00: root bus resource [io  0x0100-0x07ff]
[    0.660000] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
[    0.670000] ssb: PCI: Fixing up bridge 0000:00:00.0
[    0.670000] ssb: PCI: Fixing up device 0000:00:00.0
[    0.680000] ssb: PCI: Fixing latency timer of device 0000:00:00.0 to 168
[    0.690000] pci 0000:00:02.0: BAR 0: assigned [mem 0x40000000-0x40ffffff]
[    0.700000] pci 0000:00:02.0: BAR 6: assigned [mem 0x41000000-0x4101ffff pref]
[    0.710000] pci 0000:00:02.0: BAR 2: assigned [mem 0x41020000-0x41020fff]
[    0.710000] pci 0000:00:02.0: BAR 1: assigned [io  0x0400-0x04ff]
[    0.720000] pci 0000:00:03.2: BAR 0: assigned [mem 0x41021000-0x410210ff]
[    0.720000] pci 0000:00:03.0: BAR 4: no space for [io  size 0x0020]
[    0.730000] pci 0000:00:03.0: BAR 4: failed to assign [io  size 0x0020]
[    0.740000] pci 0000:00:03.1: BAR 4: no space for [io  size 0x0020]
[    0.740000] pci 0000:00:03.1: BAR 4: failed to assign [io  size 0x0020]
[    0.760000] NET: Registered protocol family 2
[    0.760000] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.770000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.780000] TCP: Hash tables configured (established 1024 bind 1024)
[    0.780000] TCP: reno registered
[    0.790000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.790000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.800000] NET: Registered protocol family 1
[    0.870000] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.880000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.890000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.900000] msgmni has been set to 245
[    0.900000] io scheduler noop registered
[    0.910000] io scheduler deadline registered (default)
[    0.910000] PCI: Enabling device 0000:00:02.0 (0080 -> 0083)
[    0.920000] ssb: PCI: Fixing up device 0000:00:02.0
[    0.920000] atyfb: using auxiliary register aperture
[    0.930000] atyfb: 3D RAGE XL (Mach64 GR, PCI-33) [0x4752 rev 0x27]
[    0.940000] atyfb: 512K SGRAM (1:1), 14.31818 MHz XTAL, 230 MHz PLL, 83 Mhz MCLK, 63 MHz XCLK
[    0.940000] atyfb: Unsupported xclk source:  5.
[    0.950000] Data bus error, epc == 80193240, ra == 801931fc
[    0.950000] Oops[#1]:
[    0.950000] CPU: 0 PID: 1 Comm: swapper Not tainted 3.18.109 #5
[    0.950000] task: 8781c9b8 ti: 8781e000 task.ti: 8781e000
[    0.950000] $ 0   : 00000000 10008800 c004a400 00800000
[    0.950000] $ 4   : 00000064 00000000 86d522e8 0000096d
[    0.950000] $ 8   : 0000002e 73206b6c 6372756f 20203a65
[    0.950000] $12   : 64657472 0000000e 00000000 6c637820
[    0.950000] $16   : 86d522e8 86d52000 80364290 8031d358
[    0.950000] $20   : 86d52778 40000000 80360000 41020000
[    0.950000] $24   : 00000002 00000000
[    0.950000] $28   : 8781e000 8781fbf0 80320000 801931fc
[    0.950000] Hi    : 00000000
[    0.950000] Lo    : 0009fe98
[    0.950000] epc   : 80193240 aty_init+0x630/0x9b0
[    0.950000]     Not tainted
[    0.950000] ra    : 801931fc aty_init+0x5ec/0x9b0
[    0.950000] Status: 10008803 KERNEL EXL IE
[    0.950000] Cause : 0080001c
[    0.950000] PrId  : 00029006 (Broadcom BMIPS3300)
[    0.950000] Modules linked in:
[    0.950000] Process swapper (pid: 1, threadinfo=8781e000, task=8781c9b8, tls=00000000)
[    0.950000] Stack : 0000005a 00000200 0000004b 80364290 8031d358 000000e6 00000053 0000003f
          00000400 800484d0 00000006 00000001 00000000 00000000 00000093 00000000
          00000037 00000006 803b68b2 00000006 10008801 00000037 00000000 00000000
          00000000 800491b4 00000000 00000006 00000006 003fffff 00000000 00000000
          00000000 00000000 803b68b2 00000037 00000000 8008b77c 00000001 000000d0
          ...
[    0.950000] Call Trace:
[    0.950000] [<80193240>] aty_init+0x630/0x9b0
[    0.950000] [<80193854>] atyfb_pci_probe+0x294/0x5b0
[    0.950000] [<8016edb8>] pci_device_probe+0x68/0xd0
[    0.950000] [<801c1958>] driver_probe_device+0xcc/0x218
[    0.950000] [<801c1b84>] __driver_attach+0x7c/0xb4
[    0.950000] [<801bfea0>] bus_for_each_dev+0x98/0xa8
[    0.950000] [<801c108c>] bus_add_driver+0x104/0x1ec
[    0.950000] [<801c2050>] driver_register+0xac/0x100
[    0.950000] [<80382748>] atyfb_init+0x60/0x314
[    0.950000] [<8000a4f8>] do_one_initcall+0x148/0x204
[    0.950000] [<80372cd4>] kernel_init_freeable+0x150/0x208
[    0.950000] [<80005f0c>] kernel_init+0x10/0x114
[    0.950000] [<800014a8>] ret_from_kernel_thread+0x14/0x1c
[    0.950000]
[    0.950000]
Code: 10400006  3c028036  8e020348 <8c4300a0> 34630010  ac4300a0  3c028036  244242c8  ae2202b0
[    1.160000] ---[ end trace 012648158a1832d7 ]---
[    1.170000] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    1.170000]
[    1.170000] Rebooting in 100 seconds..
Как оказалось проблема с отсутствием информация о режимах работы видеокарты... И тут я торчу уже неделю,... пытаясь подобрать режим... пробовал разные методы: Добавлял в boot params video=atyfb:pll:235,mclk:80,xclk:63 частоты которые я взял с простого компьютера установив туда эту карточку. А так же пробовал писать непосредственно в регистры видеокарты... безрезультатно.. Но где-то в один прекрасный момент после 300тый перезагрузки устройства я наконец то получил ошибку на мониторе «Фотка-4»!!! Уря!!! Но счастье продлилось не долго после того как я передернул питание картинка больше не появлялась...

Так а теперь к делу... Умный человек! который прочел моё повествование подскажи мне пожалуйста что я делаю не так? =) как исправить эту гребаною ошибку?

[    0.940000] atyfb: Unsupported xclk source:  5.
[    0.950000] Data bus error, epc == 80193240, ra == 801931fc
Я не программист и не не могу понять исходники драйвера для того чтобы определить то чего ему не хватает... судя по тому что я получил изображения сам того не понимая... методом тыка.. тут скорее всего нужно указать каких-то 2 параметра до которых сам я допереть не могу ...

Только добавлять больше отладочной печати в модуль ядра для этой карты, собрать его из одних исходников под x86 и MIPS, запускать ядро одной и той же версии, сравнивать логи от модуля на тему «первого различия». Или если поведение на MIPS нестабильно - смотреть момент нестабильности.

Какой endian у вашей системы на MIPS? Если он отличается от x86, то вполне вероятны какие-то проблемы. Например в драйере AMD стоят ifdefы и битовые поля прописаны в структурах в разном порядке. Другой частый корень проблем подобных переносов - разность требоавний по выраваниванию памяти.

Наиболее странно здесь то, что «один раз всё же запустилось». Может быть там какая-то хардварная проблема? Например угасание clock-сигнала на переходнике или просадка питающего напряжения и т.п. Или карта сохранила какие-то регистры в инициализированном состоянии после её мучений в x86.

Ведь сообщение об ошибке, видимое на экране на фото4 - туда успешно вывелось, значит выводимая ошибка - НЕ является первопричиной проблемы.

Короче, если очень коротко, всё что я написал выше - по сути «отладка printf + здравый смысл для анализа причинно следстаенных связей» (что за чем следует, чтоб не искать проблему там куда цепочка инициализации ещё не доходит). При проблемах подобной сложности категорически не катит вариант «а вдруг проблема тут, надо проверить». Придумаете 1000 вариантов пока угадаете.

Варианты придумывать надо, но не для исправления проблемы, а для её анализа. И тогда уже после 10-20 ти придуманных способов сравнения поведения на x86 и MIPS скорее всего найдёте корень проблемы.

Можно к printf добавить осциллограф или логический анализатор.

Ещё как вариант - рассмотреть отложенную загрузку драйвера. То есть, что научиться на x86 добиваться картаинки при его отложенном modprobe, и потом то же самое сделать на MIPS. Тогда по крайней мере не придётся мучаться с earlyprintk и можно будет подёргать регситры карты из userspace ещё до загрузки драйвера

GPFault ★★ ()

Я не программист и не не могу понять исходники драйвера для того чтобы определить то чего ему не хватает...

Хорошо, что ты при этом баловался с железом и софтом в тёплом доме. А то один выживальщик, который не настоящий выживальщик, был потом найден весной. Впрочем, шансов на успех у тебя примерно столько же, разве что последствия будут не такими печальными.

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

собрать его из одних исходников под x86 и MIPS, запускать ядро одной и той же версии, сравнивать логи от модуля на тему «первого различия»

ну это первое что пришло мне в голову.. Это кусок из загрузки того же ядра только собранного под x86.   

[    5.119577] atyfb: using auxiliary register aperture
[    5.134516] atyfb: 3D RAGE XL (Mach64 GR, PCI-33) [0x4752 rev 0x27]
[    5.153343] resource sanity check: requesting [mem 0x000c0000-0x000cffff], which spans more than pnp 00:09 [mem 0x000cd800-0x000cffff]
[    5.189613] caller atyfb_pci_probe+0x394/0x4a5 mapping multiple BARs
[    5.208690] atyfb: Mach64 BIOS is located at c0000, mapped at f7e20000.
[    5.228528] atyfb: BIOS frequency table:
[    5.240302] atyfb: PCLK_min_freq 984, PCLK_max_freq 23500, ref_freq 1432, ref_divider 31
[    5.264580] atyfb: MCLK_pwd 4200, MCLK_max_freq 8000, XCLK_max_freq 6300, SCLK_freq 0
[    5.288082] atyfb: BIOS contains driver information table.
[    5.305621] atyfb: 8M SDRAM (2:1) (32-bit), 14.31818 MHz XTAL, 235 MHz PLL, 80 Mhz MCLK, 63 MHz XCLK
[    5.338114] fbcon: ATY Mach64 (fb0) is primary device
[    5.388077] Console: switching to colour frame buffer device 80x30
[    5.427316] atyfb: fb0: ATY Mach64 frame buffer device on PCI
И если сравнить его с тем что на mips железке первое что бросается в глаза:
=========X86=========
[    5.228528] atyfb: BIOS frequency table:
[    5.240302] atyfb: PCLK_min_freq 984, PCLK_max_freq 23500, ref_freq 1432, ref_divider 31
[    5.264580] atyfb: MCLK_pwd 4200, MCLK_max_freq 8000, XCLK_max_freq 6300, SCLK_freq 0
[    5.288082] atyfb: BIOS contains driver information table.
[    5.305621] atyfb: 8M SDRAM (2:1) (32-bit), 14.31818 MHz XTAL, 235 MHz PLL, 80 Mhz MCLK, 63 MHz XCLK
=========MIPS  =========
[    0.920000] atyfb: using auxiliary register aperture
[    0.930000] atyfb: 3D RAGE XL (Mach64 GR, PCI-33) [0x4752 rev 0x27]
[    0.940000] atyfb: 512K SGRAM (1:1), 14.31818 MHz XTAL, 230 MHz PLL, 83 Mhz MCLK, 63 MHz XCLK  
Отличия строки с частотами, типом и объемом памяти... драйвер банально не знает о них так как на mips машине нету bios-а который-бы передал ему информацию считанную из rom-a видеокарты. Как видно драйвер пишет в регистры какой то бред... пытаясь угадать параметры для этого видео чипа.. от чего он и крашится..  

Наиболее странно здесь то, что «один раз всё же запустилось»

Тут скорее всего дело в том что я пихал дампы регистров,и частоты взятые с x86 машины. Из за отсутствия bios-а который контролировал-бы сброс памяти в видеоконтроллере при перезапуске память остаётся невредимой при перезапуске железки. Единственное что изменяются так это регистры которые драйвер пытается проинициализировать при запуске...

Может быть там какая-то хардварная проблема? Например угасание clock-сигнала на переходнике или просадка питающего напряжения и т.п.

Это уже исключено...  Я проверял линии данных осциллографом... Фронты всех сигналов в порядке... питание тоже...

Ведь сообщение об ошибке, видимое на экране на фото4 - туда успешно вывелось, значит выводимая ошибка - НЕ является первопричиной проблемы.

Если-бы это было так то почему это произошло именно тогда когда я возился с регистрами в видеоконтроллере?

Можно к printf добавить осциллограф или логический анализатор.

Как уже писал выше осциллографом я уже проверял линии данных... с ними все ок... а логического анализатора который мог бы работать с такой же частотой как шина pci у меня нет...

Ещё как вариант - рассмотреть отложенную загрузку драйвера. То есть, что научиться на x86 добиваться картаинки при его отложенном modprobe, и потом то же самое сделать на MIPS. Тогда по крайней мере не придётся мучаться с earlyprintk и можно будет подёргать регситры карты из userspace ещё до загрузки драйвера

Ну.. собственно это я и делал... только на самой mips машине... только так и не смог понять что именно и в какой момент привело к выводу изображения...

Какой endian у вашей системы на MIPS

big-endian - в данный момент... хотя в бутлоадере есть возможность выбора... но менять я его не буду так-как хрен его знает что произойдёт после смены + придется весь openwrt перелопатить чтобы найти где это там поменять..

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

Хорошо, что ты при этом баловался с железом и софтом в тёплом доме. А то один выживальщик, который не настоящий выживальщик, был потом найден весной. Впрочем, шансов на успех у тебя примерно столько же, разве что последствия будут не такими печальными.

еее???… вы это сейчас о чем?

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

еее???… вы это сейчас о чем?

Очевидный намёк на историю Игоря Грудцинова и шалаш из полиэтиленовой плёнки. Не обращай внимания, это глупый троллинг.

За проект — респект, успехов тебе.

anonymous ()

Тебе как-то надо реверснуть х86 биос и таки разобраться какие и как он регистры инициализирует. Иначе будешь угадывать бнсконечно

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

как вариант - пробовать более другие видеокарты. те, которые на х86 запустятся в качестве второй карты (видеобиос насколько я помню инициализируется только для primary карты). это чтобы не разбираться долго, что же не работает как надо…

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

к слову на всех современных роутерах с отдельным вайфай чипом (чипами) он подключен через pci-e. т.е. можно чип выпаять и подпаять туда pci-e райзер.

Идея неплохая… но тогда уже проще взять роутер со слотом mini pci-e и через китайский рейзер для майнинга конвертнуть его в pci-e x16…

Допустим я бы так и сделал… и не парил себе мозг с самодельным переходником… это все равно бы не заработало!… Так как любая карточка бутто pci или pci-e занимает некое адресное пространство на шине pci(-e). Лимит которого жестко задан контроллером pci(-e) внутри самого процессора.. и понятное дело его превышать нельзя… Так вот, если графический адаптер имеет 1gb оперативной памяти то соответственно столько же пространства необходимо адресовать на шине pci(-e). Как правило большинство RISC процессоров в роутерах имеют лимит этого адресного пространства от 16mb до 1gb.. что как несложно догадаться накладывает ограничения на то что к нему можно подключить… Да и плюс к тому сомневаюсь что какой-нибудь NVIDIA или AMD опен-соурсный драйвер соберется под MIPS-архитектуру…

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

как вариант - пробовать более другие видеокарты. те, которые на х86 запустятся в качестве второй карты (видеобиос насколько я помню инициализируется только для primary карты)

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

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

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

ну грузит, и что? это ж не зависит от архитектуры проца, в отличие от исполнения кода биоса…

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

но тогда уже проще взять роутер со слотом mini pci-e и через китайский рейзер для майнинга конвертнуть его в pci-e x16…

проще, да, но роутер - вот он, на помойке валяется с горелым от грозы ван портом, и покупать ничего не надо…

Так как любая карточка бутто pci или pci-e занимает некое адресное пространство на шине pci(-e). Лимит которого жестко задан контроллером pci(-e) внутри самого процессора.. и понятное дело его превышать нельзя…

дык посмотрите спеки чипов. я что-то сомневаюсь что там все так сильно зарезали. ну и да, 4-8ГБ карты вполне себе работают на лга775 платах с 32бит осью - которые выпускались в те времена, когда 8гб видеопамяти было фантастикой.

и + всегда можно найти какой-нить радеон x300 со 128-256мб видеопамяти (а то и c 64мб) - самое то для такой печатной машинки, экономичная холодная карточка.

Да и плюс к тому сомневаюсь что какой-нибудь NVIDIA или AMD опен-соурсный драйвер соберется под MIPS-архитектуру…

у амд с этим вполне неплохо. как минимум - на не к ночи помянутых эльбрусах они работают. да и на армах запускают https://www.youtube.com/watch?v=i7WJsZYWtPw

нвидиа - nouveau вроде тоже работает, но nouveau таки грусть-печаль.

NiTr0 ★★★★★ ()
Последнее исправление: NiTr0 (всего исправлений: 1)

тут скорее всего нужно указать каких-то 2 параметра до которых сам я допереть не могу

Очень сомневаюсь насчёт двух параметров. Судя под даташиту на чип, его нужно конфигурить, в числе прочего указывая тайминги видеопамяти http://old.vgamuseum.info/images/stories/doc/ati/rrg-c04300oem_rage_xl_regist...

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

ИМХО, учить программирование и, либо дизассемблировать BIOS, либо прикручивать эмулятор x86 и выполнять видео BIOS на mips.

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

Так вот, если графический адаптер имеет 1gb оперативной памяти то соответственно столько же пространства необходимо адресовать на шине pci(-e).

Нет. Там используется 1-2 служебных PCIe Bar по 16-32 МБ и один большой по 256МБ. Как раз чтоб всё жто помещалось в 32битное адресное пространство. И только на некоторых новых материнках при сообо правильных их настройках - действительно получается прямое отображение всех гигабайтов видеопамяти в PCIe BAR.

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

один выживальщик, который не настоящий выживальщик, был потом найден весной.

Туда и дорога. Биомасса умеет только полуфабрикатами в гиперах затариваться. И больше ни-че-го.

А ТС нормальным делом занимается.

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

Вот тут ничего подобного нет.

https://wiki.gentoo.org/wiki/Project:MIPS

Может надо было отсюда брать все

https://www.mips.com/develop/linux/

https://www.mips.com/develop/tools/compilers/linux-toolchain/

И прикручивать драйверы, если есть исходники для роутера, подсунув новое ядро и драйверы если они есть. Роутеры есть и с 512 мегабайтами памяти и они могут сами собрать ядро если нужно.

Вот лонгсуны до 8 ядер. У них ведь должна быть графика совместимая хотя какая.

https://en.wikipedia.org/wiki/Loongson

Впрочем там же есть материнка с процессором и нормальным слотом PCIE

Lemote-A1310

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

Отличия строки с частотами, типом и объемом памяти... драйвер банально не знает о них так как на mips машине нету bios-а который-бы передал ему информацию считанную из rom-a видеокарты

coreboot как-то работает сам биосом. Покажи лучше лог на x86 где мапятся BAR-ы, на мипсовом RC с этим явно пролема

[    0.720000] pci 0000:00:03.0: BAR 4: no space for [io  size 0x0020]
[    0.730000] pci 0000:00:03.0: BAR 4: failed to assign [io  size 0x0020]
[    0.740000] pci 0000:00:03.1: BAR 4: no space for [io  size 0x0020]
[    0.740000] pci 0000:00:03.1: BAR 4: failed to assign [io  size 0x0020]
anonymous ()
Ответ на: комментарий от anonymous

на некоторых новых материнках при сообо правильных их настройках

Что конкретно настраивать? IOMMU включен, вижу в lspci 256мб кусок макс.

Материнка Asus Z270F. Монитор воткнут в интеграшку, но также воткнута Asus Radeon RX580.

Если в настройках BIOS в разделе «Boot» (логика) включить опцию «Above 4G decoding» и загрузить Archlinux в режиме UEFI с активным драйвером amdgpu (инит происходит даже если нет моника) - то в выводе lspci -v имеем:

02:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (rev e7) (prog-if 00 [VGA controller])
        Subsystem: ASUSTeK Computer Inc. Device 0519
        Flags: fast devsel, IRQ 17
        Memory at 2200000000 (64-bit, prefetchable) [size=8G]
        Memory at 2100000000 (64-bit, prefetchable) [size=2M]
        I/O ports at e000 [size=256]
        Memory at dfe00000 (32-bit, non-prefetchable) [size=256K]
        Expansion ROM at dfe40000 [disabled] [size=128K]
        Capabilities: [48] Vendor Specific Information: Len=08 <?>
        Capabilities: [50] Power Management version 3
        Capabilities: [58] Express Legacy Endpoint, MSI 00
        Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
        Capabilities: [150] Advanced Error Reporting
        Capabilities: [200] Physical Resizable BAR
        Capabilities: [270] Secondary PCI Express
        Capabilities: [2b0] Address Translation Service (ATS)
        Capabilities: [2c0] Page Request Interface (PRI)
        Capabilities: [2d0] Process Address Space ID (PASID)
        Capabilities: [320] Latency Tolerance Reporting
        Capabilities: [328] Alternative Routing-ID Interpretation (ARI)
        Capabilities: [370] L1 PM Substates
        Kernel modules: amdgpu

А если опция «Above 4G decoding» выключена - то

02:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (rev e7) (prog-if 00 [VGA controller])
        Subsystem: ASUSTeK Computer Inc. Device 0519
        Flags: fast devsel, IRQ 17
        Memory at c0000000 (64-bit, prefetchable) [size=256M]
        Memory at d0000000 (64-bit, prefetchable) [size=2M]
        I/O ports at e000 [size=256]
        Memory at df300000 (32-bit, non-prefetchable) [size=256K]
        Expansion ROM at df340000 [disabled] [size=128K]
        Capabilities: такие же

При nomodeset (т.е. отключаем драйвер) - тоже 8G не случается, то есть это повидимому результат совместных действи драйвера и BIOS материнки. IOMMU - думаю что непричём, хз.

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

Покажи лучше лог на x86 где мапятся BAR-ы, на мипсовом RC с этим явно пролема

Конкретно эти бары принадлежат usb контроллеру распаянного на нлате роутера... Причем судя по тому что usb продолжает работать это вторая половина хаба.. с которой не разведены порты... так что пох на них...

root@OpenWrt:/# dmesg | grep 0000:00:03
[    0.490000] pci 0000:00:03.0: [1106:3038] type 00 class 0x0c0300
[    0.490000] pci 0000:00:03.0: reg 0x20: [io  0xfce0-0xfcff]
[    0.490000] pci 0000:00:03.0: supports D1 D2
[    0.490000] pci 0000:00:03.0: PME# supported from D0 D1 D2 D3hot
[    0.490000] pci 0000:00:03.1: [1106:3038] type 00 class 0x0c0300
[    0.490000] pci 0000:00:03.1: reg 0x20: [io  0xfce0-0xfcff]
[    0.490000] pci 0000:00:03.1: supports D1 D2
[    0.490000] pci 0000:00:03.1: PME# supported from D0 D1 D2 D3hot
[    0.490000] pci 0000:00:03.2: [1106:3104] type 00 class 0x0c0320
[    0.490000] pci 0000:00:03.2: reg 0x10: [mem 0x00000000-0x000000ff]
[    0.490000] pci 0000:00:03.2: supports D1 D2
[    0.490000] pci 0000:00:03.2: PME# supported from D0 D1 D2 D3hot
[    0.520000] pci 0000:00:03.2: BAR 0: assigned [mem 0x41021000-0x410210ff]
[    0.530000] pci 0000:00:03.0: BAR 4: no space for [io  size 0x0020]
[    0.530000] pci 0000:00:03.0: BAR 4: failed to assign [io  size 0x0020]
[    0.540000] pci 0000:00:03.1: BAR 4: no space for [io  size 0x0020]
[    0.550000] pci 0000:00:03.1: BAR 4: failed to assign [io  size 0x0020]
[    7.430000] PCI: Enabling device 0000:00:03.2 (0000 -> 0002)
[    7.440000] ssb: PCI: Fixing up device 0000:00:03.2
[    7.440000] ehci-pci 0000:00:03.2: EHCI Host Controller
[    7.450000] ehci-pci 0000:00:03.2: new USB bus registered, assigned bus number 1
[    7.460000] ehci-pci 0000:00:03.2: irq 6, io mem 0x41021000
[    7.480000] ehci-pci 0000:00:03.2: USB 2.0 started, EHCI 1.00
[    7.620000] ssb: PCI: Fixing up device 0000:00:03.0
[    7.630000] uhci_hcd 0000:00:03.0: init 0000:00:03.0 fail, -16
[    7.640000] uhci_hcd: probe of 0000:00:03.0 failed with error -16
[    7.640000] ssb: PCI: Fixing up device 0000:00:03.1
[    7.650000] uhci_hcd 0000:00:03.1: init 0000:00:03.1 fail, -16
[    7.650000] uhci_hcd: probe of 0000:00:03.1 failed with error -16
root@OpenWrt:/# lspci
00:00.0 Host bridge: Broadcom Corporation BCM4704 PCI to SB Bridge (rev 09)
00:02.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Rage XL PCI (rev 27)
00:03.0 USB controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 62)
00:03.1 USB controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 62)
00:03.2 USB controller: VIA Technologies, Inc. USB 2.0 (rev 65)
Architector120 ()

В общем смог я обойти Kernel Panic... Нашел в файле ./linux-3.18.109/drivers/video/fbdev/aty/mach64_ct.c Функцию которая выводит текст:

atyfb: Unsupported xclk source:  5.

И после чего крашит ядро..

........
pll->ct.pll_ext_cntl = aty_ld_pll_ct(PLL_EXT_CNTL, par);
pll->ct.xclk_post_div = pll->ct.pll_ext_cntl & 0x07;
pll->ct.xclk_ref_div = 1;
switch (pll->ct.xclk_post_div) {
	case 0:  case 1:  case 2:  case 3:
		break;

	case 4:
		pll->ct.xclk_ref_div = 3;
		pll->ct.xclk_post_div = 0;
		break;

	default:
		printk(KERN_CRIT "atyfb: Unsupported xclk source:  %d.\n", pll->ct.xclk_post_div);
		return -EINVAL;
}
........
Ну взял и добавил туда свой глючный вариант...
case 5:
break;
Хоть это и не есть решениям проблемы но теперь хоть система дальше грузится...

Кстати по поводу параметров... в kernel boot params я указал параметры для atyfb взятые с x86 компа.

root@OpenWrt:/# cat /proc/cmdline
earlyprintk noinitrd console=ttyS0,115200 video=atyfb:vram:8192,pll:235,mclk:80,xclk:63
Вот результат:
[    0.920000] PCI: Enabling device 0000:00:02.0 (0080 -> 0083)
[    0.930000] ssb: PCI: Fixing up device 0000:00:02.0
[    0.930000] atyfb: using auxiliary register aperture
[    0.940000] atyfb: 3D RAGE XL (Mach64 GR, PCI-33) [0x4752 rev 0x27]
[    0.950000] atyfb: 8M SGRAM (1:1), 14.31818 MHz XTAL, 235 MHz PLL, 80 Mhz MCLK, 63 MHz XCLK
[    0.950000] debug atyfb: BUS_CNTL DAC_CNTL MEM_CNTL EXT_MEM_CNTL CRTC_GEN_CNTL DSP_CONFIG DSP_ON_OFF CLOCK_CNTL
debug atyfb: 80000001 06010000 0008583b 00000081     04000000      00000000   00000000   00041400
debug atyfb: PLL ac ac 24 df f6 04 00 fd 8e 9e 65 05 00 00 00 00 06 cf 40 00 10 f6 ac 53 40 80 24 fd 00 00 00 02 06 ac 06 ac 14 24 fd 00
[    0.980000] atyfb(aty_init_pll_ct): mclk_fb_mult=2, xclk_post_div=5
[    0.990000] atyfb(aty_init_pll_ct): pllmclk=125 MHz, xclk=62 MHz
[    1.000000] atyfb(aty_init_pll_ct): use sclk, pllsclk=159 MHz, sclk=mclk=79 MHz
[    1.010000] atyfb(aty_valid_pll_ct): pllvclk=201 MHz, vclk=25 MHz
[    1.020000] atyfb(aty_dsp_gt): dsp_config 0x000809fc, dsp_on_off 0x890009ab
[    1.020000] atyfb(aty_pll_to_var_ct): calculated 0x00009B2E(39726)
[    1.030000] atyfb(aty_valid_pll_ct): pllvclk=201 MHz, vclk=25 MHz
[    1.030000] atyfb(aty_dsp_gt): dsp_config 0x000809fc, dsp_on_off 0x890009ab
[    1.030000] atyfb(aty_set_pll_ct): about to program:
[    1.030000] pll_ext_cntl=0x01 pll_gen_cntl=0x64 pll_vclk_cntl=0x03
[    1.030000] atyfb(aty_set_pll_ct): setting clock 3 for FeedBackDivider 218, ReferenceDivider 31, PostDivider 3(8)
[    1.070000] atyfb(aty_pll_to_var_ct): calculated 0x00009B2E(39726)
[    1.080000] debug atyfb: Mach64 non-shadow register values:
[    1.080000] debug atyfb: 0x2000:  004F0063 002C0051 01DF020C 002201E9
[    1.080000] debug atyfb: 0x2010:  017E0000 14000000 00000000 0B002200
[    1.080000] debug atyfb: 0x2020:  000809FC 010001AB 00000000 00000000
[    1.080000] debug atyfb: 0x2030:  00000000 00220000 00000000 0000C001
[    1.080000] debug atyfb: 0x2040:  07201C64 00000000 00000000 00000000
[    1.080000] debug atyfb: 0x2050:  00000000 00000000 00000000 00000000
[    1.080000] debug atyfb: 0x2060:  00000000 000000FF 00000000 00000000
[    1.080000] debug atyfb: 0x2070:  00000000 00000000 00003700 00000000
[    1.080000] debug atyfb: 0x2080:  00000000 00000000 00000000 00000000
[    1.080000] debug atyfb: 0x2090:  00803003 10028008 02000100 00000000
[    1.080000] debug atyfb: 0x20A0:  7B23A050 00000000 0E000000 05000081
[    1.080000] debug atyfb: 0x20B0:  0018583B 00010000 00010000 00000000
[    1.080000] debug atyfb: 0x20C0:  00FFAA01 86010102 00000000 00000000
[    1.080000] debug atyfb: 0x20D0:  00000100 00000000 00000000 00001002
[    1.080000] debug atyfb: 0x20E0:  27004752 00400095 00000000 00000000
[    1.080000] debug atyfb: 0x20F0:  00000000 00000000 410204F8 00000000
[    1.080000]
[    1.080000] debug atyfb: Mach64 PLL register values:
[    1.080000] debug atyfb: 0x00:  ACAC1F64 8803C0FD 8E9EDA01 801B0000
[    1.080000] debug atyfb: 0x10:  06CF4000 10ADAC10 408024FD 00000002
[    1.080000] debug atyfb: 0x20:  06AC06AC 1424FD00 00055500 00000000
[    1.080000] debug atyfb: 0x30:  00000000 00000000 00000000 00000000
[    1.080000]
[    1.090000] Console: switching to colour frame buffer device 80x30
[    1.290000] atyfb: fb0: ATY Mach64 frame buffer device on PCI
[    1.300000] Serial: 8250/16550 driver, 2 ports, IRQ sharing enabled
[    1.300000] console [ttyS0] disabled
[    1.330000] serial8250.0: ttyS0 at MMIO 0xb8000300 (irq = 3, base_baud = 4125000) is a 16550A
[    1.340000] console [ttyS0] enabled
[    1.340000] console [ttyS0] enabled
[    1.340000] bootconsole [early0] disabled
[    1.340000] bootconsole [early0] disabled
[    1.370000] serial8250.0: ttyS1 at MMIO 0xb8000400 (irq = 3, base_baud = 4125000) is a 16550A
Что интересно, так это то, что появился framebuffer но изображения нет =(
root@OpenWrt:/# find / -name "*fb*"
/dev/fb0
/proc/fb
/sys/bus/pci/drivers/atyfb
/sys/devices/pci0000:00/0000:00:02.0/graphics/fb0
/sys/devices/virtual/graphics/fbcon
/sys/class/graphics/fb0
/sys/class/graphics/fbcon

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

Вот лонгсуны до 8 ядер. У них ведь должна быть графика совместимая хотя какая.

https://en.wikipedia.org/wiki/Loongson Впрочем там же есть материнка с процессором и нормальным слотом PCIE Lemote-A1310

Хмм... когда я выбирал карточку... я искал железки которые с ней могут работать... вот пример: Fujian START and PMC-Sierra reference design SBCs (single board computers) Обе материнки используют этот-же чип «ATI Rage XL 8Mb» а так-же он светится в списке поддерживаемых mips-йрхетектурой...

Architector120 ()

В Общем добился кое-какого результата...

Выяснил внезапную причину появления изображения на «Фото-4». Как оказалось если быстро (сек. за 10) переставить карточку с x86 компьютера в роутер и включить его, то с вероятностью 70% монитор оживает с черным экраном или надписью out of sync. И с вероятностью 30% видим ошибку на «Фото-4»... Как я понял заряда конденсаторов хватает на период перестановки с одной железки в другую чтобы удержать в памяти видеочипа часть регистров которые были выставлены BIOS-сом x86 компьютера... Чуть позже я в этом убедился... Сделав полный дамп всех регистров видеочипа на x86 железке и сравнив их с дампом на роутере я получил сходство данных в 60%...Но если оставить карточку полежать где то секунд 30 то все регистры обнуляются и я получаю ошибку:

atyfb: Unsupported xclk source:  5.

В общем как выяснилось драйвер atyfb не умеет проводить первоначальную инициализацию видео ядра как это делает BIOS... он банально ищет данные которые уже выставил биос и на их основании производит смену режимов... короче дельмо полное... Но его можно обойти!... Добавив в файл atyfb_base.c дамп всех регистров снятый с x86 компьютера и загрузив его обратно в видеоконтроллер перед стартом самого драйвера =) Что приводит к довольно интересному результату... Драйвер больше не выдает ошибку! И мало того он даже может установить правильно заданное в kernel boot params разрешение (atyfb:mode:1024x768-32@60) но при этом в момент когда на экране появляется изображение «Фотка-5» с пиксельной кашей... роутер зависает не выдавая ни единой ошибки. Вот лог:

[    0.930000] PCI: Enabling device 0000:00:02.0 (0080 -> 0083)
[    0.930000] ssb: PCI: Fixing up device 0000:00:02.0
[    0.940000] atyfb: using auxiliary register aperture
[    0.940000] atyfb: 3D RAGE XL (Mach64 GR, PCI-33) [0x4752 rev 0x27]
[    0.950000] atyfb: 8M SDRAM (2:1) (32-bit), 14.31818 MHz XTAL, 235 MHz PLL, 80 Mhz MCLK, 63 MHz XCLK
[    0.960000] debug atyfb: BUS_CNTL DAC_CNTL MEM_CNTL EXT_MEM_CNTL CRTC_GEN_CNTL DSP_CONFIG DSP_ON_OFF CLOCK_CNTL
debug atyfb: 7333a001 8601200a 00165a2b e0000cf1     024b0200      005a04fe   0056045c   00031403
debug atyfb: PLL ad d5 1f 44 88 03 ff da f5 00 00 ca 82 1b 00 00 00 cf 40 00 10 f6 ac 03 40 00 24 fd 00 00 00 02 06 ac 06 10 14 24 fd 00
[    0.990000] atyfb(aty_init_pll_ct): mclk_fb_mult=4, xclk_post_div=1
[    1.000000] atyfb(aty_init_pll_ct): pllmclk=251 MHz, xclk=62 MHz
[    1.000000] atyfb(aty_init_pll_ct): use sclk, pllsclk=159 MHz, sclk=mclk=79 MHz
[    1.020000] atyfb(aty_valid_pll_ct): pllvclk=201 MHz, vclk=25 MHz
[    1.020000] atyfb(aty_dsp_gt): dsp_config 0x005a04fe, dsp_on_off 0x006a04cd
[    1.030000] atyfb(aty_pll_to_var_ct): calculated 0x00009B2E(39726)
Дальше как я понял должен создаваться framebuffer, но по какой-то причине все зависает... Хто знает как можно включить какую-нибудь расширенную отладку в ядре? чтобы выводило лог всех исполняемых функцый в ядре на своём пути прям до момента этой ошибки... Ну или какойнибуть другой способ как ето можно отладить..

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

Можно же запускать с разными ключами и использовать разный драйвер для фреймбуфера соответственно. Изначально используется универсальный драйвер. Но сдается мне проще взять какой-нибудь HD6450/R5 230 с потреблением около 18 ватт и с хорошим блоком питания он заработает. Артефакты похожи на те, что после патча на 4К выскакивают временами. Как раз до перехода в нормальное состояние. Может в том же стиле можно пинками заставить работать и эту карту. Но придется ковырять драйвер.

https://www.elstel.org/software/hunt-for-4K-UHD-2160p.html.en

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

Можно же запускать с разными ключами

Ну в общем я так и делаю...

video=atyfb:pll:235,mclk:80,xclk:63,vmode:10,cmode:32,mode:1024x768-32@60
Пробовал разные параметры, не только ети.. результат тот-же...

и использовать разный драйвер для фреймбуфера соответственно.

Разный это какой? для ATI RAGE XL есть только драйвер atyfb(Mach64)

Изначально используется универсальный драйвер.

Он будет работать только если BIOS смог поднять VideoBIOS... но на mips железке такому не бывать... хотя бы по той причине что сам ROM видео карты содержит x86 код который точно не заработает на mips.

Но сдается мне проще взять какой-нибудь HD6450/R5 230

Не проще!

Артефакты похожи на те, что после патча на 4К выскакивают временами. Как раз до перехода в нормальное состояние.

Это не 'Артефакты' просто видеокарта отображает область памяти выделенной под framebuffer... а так как инициализация фреймбуфера еще не закончена видеокарта отображает рандомную информацию из памяти...

Может в том же стиле можно пинками заставить работать и эту карту. Но придется ковырять драйвер.

Я и так его уже порядком наковырял этот драйвер..

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

Тебе уже говорили: ковыряй биос видеокарты и разбирайся что и в какой последовательности он инициализирует. Найди IDA и дизассембируй - там не так много кода, причём не шибко сложного для старых карт, это в современных ничего не понять просто так.

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

Это про драйвер modesetting было и его вариации, а не про драйвер самой видеокарты. Он для консоли другой драйвер требует дополнительно. И да возможно BIOS проще будет расковырять на HD6450, потому что вроде бы на более чем 60% эту работу проделывали для выяснения наличия закладок, но ничего не нашли и бросили дизассемблировать до конца. А то, что появится одна переменная, которая выставит разрешение выше 1600х1200, пусть в 30 герц, но должны будут заработать и другие разрешения. У меня это повышает на HDMI и DVI выходах разрешение с 1920х1080 до 2560х1440 60 гц, 3840х2160 30гц. Можно же найти порядок выставления разрешения. Впрочем на VGA они могут быть зарыты или заданы принудительно из-за стандарта.

anonymous ()