Новые драйвера для ATI Radeon.

Drivers for various video cards
  • Ещё один фикс - исправлена ошибка в разборе EDID.

    Не забываем про ключи командной строки -l и -n
  • лог с новой версией:
    Spoiler:Radeon RC11 cmdline (null)
    device 1002:6739
    enter drm_get_dev
    enter radeon_driver_load_kms
    DRM: initializing kernel modesetting (BARTS 0x1002:0x6739).
    DRM: register mmio base: 0xFEAE0000
    DRM: register mmio size: 131072
    Getting BIOS copy from legacy VBIOS location
    [drm:radeon_get_bios] ATOMBIOS detected
    <3>[drm:radeon_atombios_init] *ERROR* Unable to find PCI I/O BAR; using MMIO for ATOM IIO
    <6>ATOM BIOS: BARTS
    [drm:atom_allocate_fb_scratch] atom firmware requested 000fffec 20kb
    Info radeon_vram_location VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024M used)
    Info radeon_gtt_location GTT: 512M 0x0000000040000000 - 0x000000005FFFFFFF
    DRM: Detected VRAM RAM=1024M, BAR=256M
    DRM: RAM width 256bits DDR
    DRM: GART: num cpu pages 131072, num gpu pages 131072
    [drm:ni_init_microcode]
    DRM: Loading BARTS Microcode
    firmware: using built-in firmware radeon/BARTS_pfp.bin
    firmware size 4480
    firmware: using built-in firmware radeon/BARTS_me.bin
    firmware size 5504
    firmware: using built-in firmware radeon/BTC_rlc.bin
    firmware size 3072
    firmware: using built-in firmware radeon/BARTS_mc.bin
    firmware size 24096
    kernel alloc 81119000
    pagelist fde04464
    enter radeon_gart_bind
    offset 0 pages 100 list fde04464
    DRM: ring test succeeded in 1 usecs
    enter radeon_modeset_init
    [drm:radeon_process_aux_ch] dp_aux_ch flags not zero
    [drm:radeon_dp_i2c_aux_ch] aux_ch failed -16
    [drm:radeon_process_aux_ch] dp_aux_ch flags not zero
    [drm:radeon_dp_i2c_aux_ch] aux_ch failed -16
    DRM: Radeon Display Connectors
    DRM: Connector 0:
    DRM: DisplayPort
    DRM: HPD4
    DRM: DDC: 0x6430 0x6430 0x6434 0x6434 0x6438 0x6438 0x643c 0x643c
    DRM: Encoders:
    DRM: DFP1: INTERNAL_UNIPHY2
    DRM: Connector 1:
    DRM: HDMI-A
    DRM: HPD3
    DRM: DDC: 0x6460 0x6460 0x6464 0x6464 0x6468 0x6468 0x646c 0x646c
    DRM: Encoders:
    DRM: DFP2: INTERNAL_UNIPHY2
    DRM: Connector 2:
    DRM: DVI-I
    DRM: HPD6
    DRM: DDC: 0x6470 0x6470 0x6474 0x6474 0x6478 0x6478 0x647c 0x647c
    DRM: Encoders:
    DRM: DFP3: INTERNAL_UNIPHY
    DRM: CRT1: INTERNAL_KLDSCP_DAC1
    DRM: Connector 3:
    DRM: DVI-D
    DRM: HPD1
    DRM: DDC: 0x6480 0x6480 0x6484 0x6484 0x6488 0x6488 0x648c 0x648c
    DRM: Encoders:
    DRM: DFP4: INTERNAL_UNIPHY1
    Видеорежимы не определяются, но все-таки выход из драйвера теперь происходит штатно, без PF

    нужен ли вчерашний дамп регистров (для старого патча)?
    если что - вот он:
    Attachments

    [The extension bmp has been deactivated and can no longer be displayed.]

  • art_zh
    Это полный лог ? Он немного странный. Или драйвер всё же вылетает.
  • Да, лог полный,
    да, драйвер вылетает.
    Только теперь - штатно, без PageFault
    Железо вернул, следующий тест - только завтра с утра.
  • art_zh

    General protection fault это теперь штатный вылет ? Или я что-то неправильно понимаю ?
  • Serge,
    А когда будет слив на SVN ?
    Бог с ними, с Островами, мне бы с эвергрином поковыряться.
  • art_zh

    У меня сейчас нет компилирующейся версии. Делаю обработку прерываний. Если залить на svn будет ругаться автосборщик.

    Update.

    Залил промежуточную версию. Автосборщик всё равно ругается. Disk Full :(
  • Сделал обработчик прерываний и прикрутил тесты блиттера. Пока работает только на R600-R700. Получились интересные результаты
    Spoiler:copy dma
    <6>radeon: dma 2 bo moves of 32768kb from 2 to 4 in 610ms (107kb/ms 107000kb/s 104M/s)
    <6>radeon: blit 2 bo moves of 32768kb from 2 to 4 in 610ms (107kb/ms 107000kb/s 104M/s)
    <6>radeon: dma 2 bo moves of 32768kb from 4 to 2 in 420ms (156kb/ms 156000kb/s 152M/s)
    <6>radeon: blit 2 bo moves of 32768kb from 4 to 2 in 420ms (156kb/ms 156000kb/s 152M/s)
    <6>radeon: dma 2 bo moves of 32768kb from 4 to 4 in 20ms (3276kb/ms 3276000kb/s 3199M/s)
    <6>radeon: blit 2 bo moves of 32768kb from 4 to 4 in 20ms (3276kb/ms 3276000kb/s 3199M/s)
    Копирование из системной в видеопамять в среднем 104Мб/с
    Копирование из видеопамяти в системную в среднем 152Мб/с
    Копирование в видеопамяти от 3.2 - 6.3 Гб/с - вероятно больше, зависит от настроек теста.
    http://kolibri-pe.googlecode.com/files/atikms_rc11_1.7z

    Не понятно, почему дма чтение из системной памяти медленнее чем запись.
  • Serge - троекратное Ура!
    Не понятно, почему дма чтение из системной памяти медленне чем запись.
    Так и должно быть:
    с аппаратной точки зрения, задатчиком DMA на PCIe-шине является графическая карта. Пересылка данных идет блоками по 128-512 байт,
    причем если GPU пишет в RAM - требуется передать всего один TLP-пакет, а если читает оттуда - как минимум два:

    1) TLP-пакет запроса (8 байт) из GPU на PCIe-хост. В этом пакете нет данных, но есть адрес DMA (откуда конкретно читать), размер и bdf-адрес GPU (чтобы хост знал, на какое устройство передавать данные)

    1+) чтение и подготовка блока данных к пересылке (исполнители - MC, NB и PCIe-хост, между которыми данные также передаются p2p-пакетами)

    2) собственно пересылка данных в GPU (иногда дробится на ряд более мелких пакетов по 64-128 байт).

    В APU-сборках GPU должен иметь равные права с CPU в части доступа к памяти, так что с большим интересом попробую прогнать твой тест на Fusion...
  • art_zh

    Спасибо за разъяснение.

    Update.

    Удалил ошибочную ссылку.
    Last edited by Serge on Sat Jul 16, 2011 7:30 pm, edited 1 time in total.
  • Serge
    Сейчас прикинул: скорость DMA-передач у тебя на порядок ниже ожидаемой.

    Мой примитивный DMA-контроллер (могу скинуть .v-код, если интересен протокол) сливает картинку в RAM блоками по 60 байтов, 32наносекунды на блок, что соответствует пакетной скорости 1.9 Гбайт/с (средняя скорость шинных передач в 3 раза ниже, но это специфика моего железа).
    И это на шине x8 PCIe 1.0 (на шине x16 PCIe 2.0 дожно быть в 4 раза быстрей)

    150 Мбайт/с возможны только при попиксельной закачке данных из GPU в буфер. Но и тогда на одно двойное слово нужно максимум 10 нс (400Мб/с), так что явно что-то тормозит шинные операции - или микрокод, или драйвер.
  • art_zh
    Это HD4670 на AGP. Думаю дело в этом, нужен драйвер для чипсета. Интересуют тесты на PCIe.

    В любом случае чтение из видеопамяти раз в 30 быстрее прямого через цпу. И при записи дма разгрузит процессор. Плеер будет рад.

    Теперь есть практически всё необходимое для создания 2D/3D драйверов.
  • Сделал новую сборку для всех чипов. Если есть проблема с перечислением видеорежимов поможет ключ -n в командной строке.
    http://kolibri-pe.googlecode.com/files/atikms_rc11_2.7z
  • Serge
    Свежая версия RC11_2 на RS780 грузится очень долго (около минуты), но в конце концов включается
    Spoiler:Radeon RC11 cmdline (null)
    device 1002:9616
    enter drm_get_dev
    enter radeon_driver_load_kms
    DRM: initializing kernel modesetting (RS780 0x1002:0x9616).
    DRM: register mmio base: 0xFEAF0000
    DRM: register mmio size: 65536
    Getting BIOS copy from legacy VBIOS location
    [drm:radeon_get_bios] ATOMBIOS detected
    <3>[drm:radeon_atombios_init] *ERROR* Unable to find PCI I/O BAR; using MMIO for ATOM IIO
    <6>ATOM BIOS: B27722_RS780C
    [drm:atom_allocate_fb_scratch] atom firmware requested 0fffc000 16kb
    Info radeon_vram_location VRAM: 256M 0x00000000C0000000 - 0x00000000CFFFFFFF (256M used)
    Info radeon_gtt_location GTT: 512M 0x00000000A0000000 - 0x00000000BFFFFFFF
    DRM: Detected VRAM RAM=256M, BAR=256M
    DRM: RAM width 32bits DDR
    enter radeon_irq_kms_init
    radeon_irq_kms_init install irq 10
    DRM: radeon: irq initialized.
    DRM: GART: num cpu pages 131072, num gpu pages 131072
    [drm:r600_init_microcode]
    DRM: Loading RS780 Microcode
    firmware: using built-in firmware radeon/RS780_pfp.bin
    firmware size 2304
    firmware: using built-in firmware radeon/RS780_me.bin
    firmware size 21504
    firmware: using built-in firmware radeon/R600_rlc.bin
    firmware size 3072
    enter r600_blit_init
    [drm:r600_blit_init] r6xx blit allocated bo 00000700 vs 00000500 ps 00000600
    leave r600_blit_init
    kernel alloc 80e5e000
    pagelist fde03978
    Info radeon_wb_init WB enabled
    kernel alloc 80e5f000
    pagelist fde0397c
    [drm:r600_irq_set] r600_irq_set: sw int
    kernel alloc 8119b000
    pagelist fde0466c
    DRM: ring test succeeded in 1 usecs
    kernel alloc 8129b000
    pagelist fde04a6c
    DRM: radeon: ib pool ready.
    DRM: ib test succeeded in 0 usecs
    enter radeon_benchmark_move
    source domain 2
    kernel alloc 8139b000
    pagelist fde04e6c
    destination domain 4
    done
    copy dma
    [drm:r600_kms_blit_copy] emitting copy a0211000 c0d01000 33554432 0
    [drm:r600_kms_blit_copy] emitting copy a0211000 c0d01000 33554432 0
    <6>radeon: dma 2 bo moves of 32768kb from 2 to 4 in 30ms (2184kb/ms 2184000kb/s 2132M/s)
    [drm:r600_kms_blit_copy] emitting copy a0211000 c0d01000 33554432 0
    [drm:r600_kms_blit_copy] emitting copy a0211000 c0d01000 33554432 0
    <6>radeon: blit 2 bo moves of 32768kb from 2 to 4 in 30ms (2184kb/ms 2184000kb/s 2132M/s)
    cleanup
    leave radeon_benchmark_move
    enter radeon_benchmark_move
    source domain 4
    destination domain 2
    kernel alloc 8339b000
    pagelist fde0ce6c
    done
    copy dma
    [drm:r600_kms_blit_copy] emitting copy c0d01000 a0211000 33554432 0
    [drm:r600_kms_blit_copy] emitting copy c0d01000 a0211000 33554432 0
    <6>radeon: dma 2 bo moves of 32768kb from 4 to 2 in 30ms (2184kb/ms 2184000kb/s 2132M/s)
    [drm:r600_kms_blit_copy] emitting copy c0d01000 a0211000 33554432 0
    [drm:r600_kms_blit_copy] emitting copy c0d01000 a0211000 33554432 0
    <6>radeon: blit 2 bo moves of 32768kb from 4 to 2 in 20ms (3276kb/ms 3276000kb/s 3199M/s)
    cleanup
    leave radeon_benchmark_move
    enter radeon_benchmark_move
    source domain 4
    destination domain 4
    done
    copy dma
    [drm:r600_kms_blit_copy] emitting copy c0d01000 c2d01000 33554432 0
    [drm:r600_kms_blit_copy] emitting copy c0d01000 c2d01000 33554432 0
    <6>radeon: dma 2 bo moves of 32768kb from 4 to 4 in 30ms (2184kb/ms 2184000kb/s 2132M/s)
    [drm:r600_kms_blit_copy] emitting copy c0d01000 c2d01000 33554432 0
    [drm:r600_kms_blit_copy] emitting copy c0d01000 c2d01000 33554432 0
    <6>radeon: blit 2 bo moves of 32768kb from 4 to 4 in 20ms (3276kb/ms 3276000kb/s 3199M/s)
    cleanup
    leave radeon_benchmark_move
    enter radeon_modeset_init
    [drm:radeon_atombios_get_tv_info] Unknown TV standard; defaulting to NTSC
    DRM: Radeon Display Connectors
    DRM: Connector 0:
    DRM: VGA
    DRM: DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c
    DRM: Encoders:
    DRM: CRT1: INTERNAL_KLDSCP_DAC1
    DRM: Connector 1:
    DRM: DVI-D
    DRM: HPD1
    DRM: DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c
    DRM: Encoders:
    DRM: DFP3: INTERNAL_KLDSCP_LVTMA
    enter radeon_fbdev_init
    [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:13:VGA-1]
    [drm:radeon_atom_dac_detect] Bios 0 scratch 200000 00000001
    [drm:radeon_atombios_connected_scratch_regs] CRT1 disconnected
    [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:13:VGA-1] disconnected
    [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:15:DVI-D-1]
    [drm:radeon_atombios_connected_scratch_regs] DFP3 connected
    [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:15:DVI-D-1] probed modes :
    [drm:drm_mode_debug_printmodeline] Modeline 17:"1680x1050" 60 119000 1680 1728 1760 1840 1050 1053 1059 1080 0x48 0x9
    [drm:drm_mode_debug_printmodeline] Modeline 24:"1280x1024" 75 135000 1280 1296 1440 1688 1024 1025 1028 1066 0x40 0x5
    [drm:drm_mode_debug_printmodeline] Modeline 19:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x40 0x5
    [drm:drm_mode_debug_printmodeline] Modeline 18:"1152x864" 75 108000 1152 1216 1344 1600 864 865 868 900 0x40 0x5
    [drm:drm_mode_debug_printmodeline] Modeline 25:"1024x768" 75 78800 1024 1040 1136 1312 768 769 772 800 0x40 0x5
    [drm:drm_mode_debug_printmodeline] Modeline 26:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa
    [drm:drm_mode_debug_printmodeline] Modeline 27:"800x600" 75 49500 800 816 896 1056 600 601 604 625 0x40 0x5
    [drm:drm_mode_debug_printmodeline] Modeline 20:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5
    [drm:drm_mode_debug_printmodeline] Modeline 21:"640x480" 75 31500 640 656 720 840 480 481 484 500 0x40 0xa
    [drm:drm_mode_debug_printmodeline] Modeline 22:"640x480" 60 25200 640 656 752 800 480 490 492 525 0x40 0xa
    [drm:drm_mode_debug_printmodeline] Modeline 23:"720x400" 70 28320 720 738 846 900 400 412 414 449 0x40 0x6
    [drm:drm_setup_crtcs]
    [drm:drm_enable_connectors] connector 13 enabled? no
    [drm:drm_enable_connectors] connector 15 enabled? yes
    [drm:drm_target_preferred] looking for cmdline mode on connector 15
    [drm:drm_target_preferred] looking for preferred mode on connector 15
    [drm:drm_target_preferred] found mode 1680x1050
    [drm:drm_setup_crtcs] picking CRTCs for 8192x8192 config
    [drm:drm_setup_crtcs] desired mode 1680x1050 set on crtc 10
    DRM: enter fb probe
    enter radeonfb_create
    DRM: fb mappable at 0xD0000000
    DRM: vram apper at 0xD0000000
    DRM: size 0
    DRM: fb depth is 24
    DRM: pitch is 6912
    leave radeonfb_create
    <6>fb0: radeondrmfb frame buffer device
    leave drm_fb_helper_single_fb_probe
    leave radeon_fbdev_init
    leave radeon_modeset_init
    enter init_display_kms
    crtc 10 width 1680 height 1050 vrefresh 60
    CONNECTOR 80da22c8 ID: 15 status 1 encoder 80da2098
    crtc 0current mode 1024 x 768 x 60
    user mode mode 1680 x 1050 x 60
    enter set_mode
    width 1680 height 1050 vrefresh 60
    set mode 1680 1050 connector DVI-D-1 encoder TMDS-14
    [drm:radeon_encoder_set_active_device] setting active device to 00000200 from 00000200 00000200 for encoder 2
    [drm:drm_crtc_helper_set_mode] [CRTC:10]
    [drm:radeon_atom_encoder_dpms] encoder dpms 31 to mode 3, devices 00000200, active_devices 00000200
    [drm:radeon_atom_encoder_dpms] encoder dpms 21 to mode 3, devices 00000001, active_devices 00000000
    [drm:radeon_compute_pll_avivo] 11903, pll dividers - fb: 133.0 ref: 2, post 8
    [drm:drm_crtc_helper_set_mode] [ENCODER:14:TMDS-14] set [MODE:17:1680x1050]
    [drm:avivo_crtc_load_lut] 0
    [drm:radeon_atom_encoder_dpms] encoder dpms 31 to mode 0, devices 00000200, active_devices 00000200
    [drm:drm_calc_timestamping_constants] crtc 10: hwmode: htotal 1840, vtotal 1080, vdisplay 1050
    [drm:drm_calc_timestamping_constants] crtc 10: clock 119000 kHz framedur 16698960 linedur 15462, pixeldur 8
    new mode 1680 x 1050 pitch 6912
    leave set_mode
    leave init_display_kms
    leave drm_get_dev
    Set DISPLAY handler
    Насчет AGP я не подумал, конечно она гораздо медленнее. 2.1-3.2 Гб/с - это то что доктор прописал :D
    PCI-express карты у меня под рукой сейчас нет, только встроенный GPU на RS780.
    Вечером попробую прогнать тест на Fusion.
  • Who is online

    Users browsing this forum: No registered users and 3 guests