LINUX.ORG.RU

Сообщения str8fast

 

Uvesafb фликует экран на Radeon RX 400 series

после загрузки модуля modprobe uvesafb, экран консоли начинает мелькать (быстро пропадает изображение и появляется). в dmesg вывод такой:

uvesafb: (C) 1988-2010, Advanced Micro Devices, Inc., BAFFIN, 01.00, OEM: AMD ATOMBIOS, VBE v3.0
uvesafb: VBIOS/hardware supports DDC2 transfers
uvesafb: monitor limits: vf = 75 Hz, hf = 90 kHz, clk = 250 MHz
uvesafb: scrolling: redraw
uvesafb: mode switch failed (eax=0x34f, err=0) - trying again with default timings
uvesafb: mode switch failed (eax=0x34f, err=0) - trying again with default timings
Console: switching to colour frame buffer device 80x30
uvesafb: mode switch failed (eax=0x34f, err=0) - trying again with default timings
uvesafb: framebuffer at 0xe0000000, mapped to 0x00000000ab3caff7, using 28800k, total 49152k
uvesafb: fb0: VESA VGA frame buffer device

если вместо uvesafb использую драйвер vesafb (с vga mode = 323), то изображение ровное, не мелькает.

монитор LCD, 60Hz-75Hz.

как мне заставить uvesafb работать нормально? пробовал опции nocrtc, nomttr, режим 1024x768-32 - не помогает.

P/S amdgpu драйвер не могу использовать, во первых он не влезет в целевую систему, во вторых мне требуется обеспечить работу всех современных видеокарт, не тока intel и amd.

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

и ещё проблема с vesa драйвером, что non-root Xorg на vesa не запустился, ругался что прерывание int10 не имеет прав вызвать ((II) VESA(0): initializing int10; (EE) VESA(0): Cannot read int vect). может elogind как то это умеет фиксить? elogind с /dev/fb0 умеет отлично назначать права пользователя. если в иксах существует способ как без рута стартануть на vesa то этот вариант в принципе тоже мне подойдёт.

 

str8fast
()

hrtimer_nanosleep latency можно ли снизить без SCHED_FIFO/SCHED_RR?

к примеру запускаю бенчмарк latency с приоритетом SCHED_OTHER вижу что средняя задержка 51us:

$ cyclictest -N -n -t 4 --policy=other -l 10000
# /dev/cpu_dma_latency set to 0us
policy: other/other: loadavg: 0.26 0.24 0.58 1/403 9917           

T: 0 ( 9884) P: 0 I:1000 C:  10000 Min:   9346 Act:   50931 Avg:   51096 Max:  295918
T: 1 ( 9885) P: 0 I:1500 C:   6669 Min:   3103 Act:   51031 Avg:   51264 Max:  273922
T: 2 ( 9886) P: 0 I:2000 C:   5002 Min:   5635 Act:   51020 Avg:   51055 Max:  157874
T: 3 ( 9887) P: 0 I:2500 C:   4001 Min:   2565 Act:   51159 Avg:   47168 Max:  367442
Проверял так же самописной простейшей прогой, в более чем 99% случаев значение задержки 51-52us. cpu cstates отключены, с ними на 10us больше.

если запускать с приоритетом SCHED_FIFO задержка 1us.

пробовал по разному собирать ядро меняя всячески конфиги PREEMT/HZ 100-1000/NOHZ, ситуация не меняется ни в какую сторону. сижу на gentoo, но пробовал archlinux, таже latency 51us. менял значения в файлах /proc/sys/kernel/sched_latency_ns sched_min_granularity_ns, тоже без изменений.

Откуда это значение в 51us? если у ядра есть какой то time slice задающий минимальное время работы процесса, то почему результат измерения latency не размазан равномерно по этому периоду?

 ,

str8fast
()

RSS подписка на новые темы