графическая консоль

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-14 23:46:34

Код: Выделить всё

+#ifdef	__BIG_ENDIAN__
+#define B_O16(x)	((((x) & 0xff) << 8) | (((x) & 0xff) >> 8))
+#define B_O32(x)	((((x) & 0xff) << 24) | (((x) & 0xff00) << 8) \
+			| (((x) & 0xff0000) >> 8) | (((x) & 0xff000000) >> 24))
+#else
+#define B_O16(x)	(x)
+#define B_O32(x)	(x)
+#endif
+
+#define L_ADD(x)	(B_O32(x) & 0xffff) + ((B_O32(x) >> 12) & 0xffff00)
+#define FARP(p)	(((unsigned)(p & 0xffff0000) >> 12) | (p & 0xffff))
даже еще лучше
убираем B_O16 B_O32
L_ADD убираем тоже
а там где использовался L_ADD
вставляем FARP

FARP же заменяем тем что было в L_ADD и вместо B_O16 B_O32 вставим htonl16 htonl32

вот там будет гут

кстати можно в весу или отдельно доделать DDI
вопрос оно нужно или нет?
и что с ним делать

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-14 23:49:11

Код: Выделить всё

+//#define REALOFF(x)	(x*4096)
можно удалить
больше не нужна

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-15 1:40:12

добавь еще это
и путь остаеться в комментариях

Код: Выделить всё

#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/module.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>


#include <vm/vm.h>

Код: Выделить всё

static struct x86emu xbios86emu;
+
+static struct mtx x86bios_lock;
+
static uint8_t

Код: Выделить всё

void
x86biosCall(struct x86regs *regs, int intno)
{
+
+                if (intno < 0 || intno > 255)
+                           return;

-                 /* locksection */
+                /* 
+                    mtx_lock(&x86bios_lock);
+                    critical_enter();
+                  */

	xbios86emu.x86.R_EAX = regs->R_EAX;
	xbios86emu.x86.R_EBX = regs->R_EBX;

Код: Выделить всё

-                  /* unlocksection */
+                 /*
+                      critical_exit();
+                      mtx_unlock(&x86bios_lock);
+                  */

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-15 1:52:48

кстати все что в
i386/bios/ можно поидеи подстроить
и под ноуты на amd64 будут работать apm

и насчет того где работает еще x86emu
судя по apm.c
в PC98 архитектуре

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-15 6:31:22

paradox писал(а):убираем B_O16 B_O32
L_ADD убираем тоже
а там где использовался L_ADD
вставляем FARP

FARP же заменяем тем что было в L_ADD и вместо B_O16 B_O32 вставим htonl16 htonl32
так что ль?

Код: Выделить всё

--- sys/contrib/x86emu/x86bios.h~
+++ sys/contrib/x86emu/x86bios.h
@@ -123,18 +123,7 @@ typedef struct x86regs	x86regs_t;
 
 #define SEG_ADDR(x)	(((x) >> 4) & 0x00F000)
 #define SEG_OFF(x)	((x) & 0x0FFFF)
-
-#ifdef	__BIG_ENDIAN__
-#define B_O16(x)	((((x) & 0xff) << 8) | (((x) & 0xff) >> 8))
-#define B_O32(x)	((((x) & 0xff) << 24) | (((x) & 0xff00) << 8) \
-			| (((x) & 0xff0000) >> 8) | (((x) & 0xff000000) >> 24))
-#else
-#define B_O16(x)	(x)
-#define B_O32(x)	(x)
-#endif
-
-#define L_ADD(x)	(B_O32(x) & 0xffff) + ((B_O32(x) >> 12) & 0xffff00)
-#define FARP(p)	(((unsigned)(p & 0xffff0000) >> 12) | (p & 0xffff))
+#define FARP(p)		((htonl(x) & 0xffff) + ((htonl(x) >> 12) & 0xffff00))
 
 #define MAPPED_MEMORY_SIZE	0xc00000
 #define PAGE_RESERV		(4096*5)
--- sys/dev/fb/vesa.c~
+++ sys/dev/fb/vesa.c
@@ -688,17 +688,17 @@ vesa_bios_init(void)
 		return 1;
 	}
 
-	vesa_oemstr = (char *)x86biosOffs(L_ADD(vesa_adp_info->v_oemstr));
+	vesa_oemstr = (char *)x86biosOffs(FARP(vesa_adp_info->v_oemstr));
 
 	is_via_cle266 = strcmp(vesa_oemstr, VESA_VIA_CLE266) == 0;
 
 	if (vesa_adp_info->v_version >= 0x0200) {
-		vesa_venderstr = (char *)x86biosOffs(L_ADD(vesa_adp_info->v_venderstr));
-		vesa_prodstr = (char *)x86biosOffs(L_ADD(vesa_adp_info->v_prodstr));
-		vesa_revstr = (char *)x86biosOffs(L_ADD(vesa_adp_info->v_revstr));
+		vesa_venderstr = (char *)x86biosOffs(FARP(vesa_adp_info->v_venderstr));
+		vesa_prodstr = (char *)x86biosOffs(FARP(vesa_adp_info->v_prodstr));
+		vesa_revstr = (char *)x86biosOffs(FARP(vesa_adp_info->v_revstr));
 	}
 
-	vesa_vmodetab = (u_int16_t *)x86biosOffs(L_ADD(vesa_adp_info->v_modetable));
+	vesa_vmodetab = (u_int16_t *)x86biosOffs(FARP(vesa_adp_info->v_modetable));
 
 	if (vesa_vmodetab == NULL)
 		return 1;

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-15 6:47:30

Oops, забыл поменять (x) -> (p)

и может не htonl, а le32toh?

Аватара пользователя
Hrafn
сержант
Сообщения: 239
Зарегистрирован: 2007-08-18 15:25:57
Откуда: Питер
Контактная информация:

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Hrafn » 2009-09-15 9:22:41

paradox писал(а):
Hrafn писал(а):мне... жаль, не программист я :pardon:
гм)
так ты ж линукс любишь
нафиг тебе это в бсд?)
я предпочитаю то, что помогает выполнить поставленную задачу.
Если потребуется линукс, то будет линукс. Если потребуется *bsd, будет bsd.
Меня устраивает SUSE от Novell, потому что стабильней, чем openSUSE. Меня устраивают сервисы от Novell, потому что позволяют выполнять очень широкий круг задач по управлению машинами в организациях и делают это хорошо.

Но одно дело работа, другое дело - что мне нравится.

Если я ничего не пишу о FreeBSD, это не значит, что я не люблю FreeBSD. Это значит, что пока мне написать нечего. ;-)

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-15 10:44:19

Гость писал(а):Oops, забыл поменять (x) -> (p)

и может не htonl, а le32toh?
точно

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-15 14:52:57

и про мютексы добавь
пока Ли спит
кстати если в течении недели не проснеться
можешь кидать PR
пусть кто то другой возьметься
а то мне стыдно смотреть на тот код что щас в курренте)))

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-15 14:53:52

Если я ничего не пишу о FreeBSD, это не значит, что я не люблю FreeBSD. Это значит, что пока мне написать нечего
так может стоит уже что то написать?)

Аватара пользователя
Hrafn
сержант
Сообщения: 239
Зарегистрирован: 2007-08-18 15:25:57
Откуда: Питер
Контактная информация:

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Hrafn » 2009-09-15 14:54:47

paradox писал(а):
Если я ничего не пишу о FreeBSD, это не значит, что я не люблю FreeBSD. Это значит, что пока мне написать нечего
так может стоит уже что то написать?)
Я думаю на эту тему :smile:
Но пока обещать не могу ничего

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 2:10:39

таксь
а у кого валяються любые видео карты S3
нужны кое какие тесты

вполне вероятно что драйвер s3_pci.c
можно будет выбросить если мои идеи подтвердяться

дело в том что
видео карты S3 имею свою спецификацию по VESA
и немного не корректно с VESA работают
поэтому нужны некоторые багфиксы(квирки) для VESA
что и делает драйвер s3_pci.c поверх vesa.c (без них vesa не будет работать)
так вот этот драйвер можно выбросить нафиг
потому что кроме как по pciid видео карты S3 можно проверять по том что возращает драйвер vesa в своих струкутурах по данным OEM производителя
там должна быть строка S3
если есть значит это видуха S3 и нужно делать баг фикс ( вот это и нужно проверить - во всех ли картах S3 возращаеться такая строка)

тем самым мы избавимся полностью от драйвера s3_pci.c
добавим баг фикс по s3 в драйвер vesa.c
и сам драйвер vesa можно будет смеcтить в VIDEO_DRIVER на начальную стадию загрузки

что бы можно было переключать в графический екран уже на первой строке бутлога
ps
у меня есть одна видуха S3 Virge
нужно бы еше каких то
для тестов

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Alex Keda » 2009-09-16 8:16:33

у меня пачка есть. virge/trio/trio3d/.... практически полный набор их видях ...
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-16 12:19:26

paradox писал(а):и про мютексы добавь
пока Ли спит
а что делать с паникой на mtx_lock() ?

Код: Выделить всё

panic: mtx_lock() of spin mutex (null) @ /usr/src/sys/modules/x86bios/../../contrib/x86emu/x86bios.c:100
cpuid = 0
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
panic() at panic+0x182
_mtx_lock_flags() at _mtx_lock_flags+0xf8
x86biosCall() at x86biosCall+0x3a
vesa_configure() at vesa_configure+0x1bb
vesa_mod_event() at vesa_mod_event+0xec
module_register_init() at module_register_init+0x7d
mi_startup() at mi_startup+0x59
btext() at btext+0x2c
KDB: enter: panic
[thread pid 0 tid 100000 ]
Stopped at      kdb_enter+0x3d: movq    $0,0x4b4aa0(%rip)
db>

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-16 12:20:19

или так и оставлять внутри
#if 0
...
#endif
?

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 12:23:57

мютексы пока оставь в комментария
так же как и критикал сектион

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

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 12:25:02

lissyara писал(а):у меня пачка есть. virge/trio/trio3d/.... практически полный набор их видях ...
:shock: :cz2:
а что ты с ними делаешь

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 12:29:07

Код: Выделить всё

LOAD
mtx_init(&x86bios_lock, "x86bios lock", NULL, MTX_DEF);

UNLOAD
mtx_destroy(&x86bios_lock);

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-16 12:58:36

paradox писал(а):mtx_init(&x86bios_lock, "x86bios lock", NULL, MTX_DEF);
да это я догадался сразу после того как глянул на man страницу. Жаль, но с моей проблемой о переключении на графический режим с 0x80 на этапе инициализации syscons мне твой locking не помог. ;( Видимо проблема где-то в другом.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 13:01:32

странно
но у меня все работает с 0x80
это что то у тебя там не так
попробуй на реальной машине а не на виртуалке

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 13:12:44

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

кстати
предлагаю
x86bios
сместить в
SYSINIT(.....)
тоесть убрать из kldload
и x86emu добавить в зависимости по компиляции

а x86emu
в контрибах и вообще убрать из kldload


потому что мне x86biosCall нужен в fb/vga.c
а пока он модуль я его заюзать на тех етапах немогу

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-16 13:30:07

paradox писал(а):странно
но у меня все работает с 0x80
это что то у тебя там не так
попробуй на реальной машине а не на виртуалке
дык у мя как раз не работает на реальной машине. В qemu-то работает.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 13:41:18

только когда 0x80 ?
а если когда уже загрузилась
то тогда выставляються граф режимы?
0x80 и все?
тоесть должен быть MODE_277 по умолчанию

Гость
проходил мимо

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение Гость » 2009-09-16 13:43:34

paradox писал(а):то тогда выставляються граф режимы?
да, после загрузки граф режимы выставлятся успешно. Однако при частом переключении между режимами экран все равно может погаснуть.
paradox писал(а):кстати
предлагаю
x86bios
сместить в
SYSINIT(.....)
тоесть убрать из kldload
я правильно понимаю, что ты хочешь избавиться от обоих модулей (x86bios, x86emu) и оставить только одну опцию ядра (x86bios)?

Код: Выделить всё

contrib/x86emu/x86bios.c	optional x86bios | atkbd | dpms | vesa | vga
contrib/x86emu/x86bios_alloc.c	optional x86bios | atkbd | dpms | vesa | vga
contrib/x86emu/x86emu.c		optional x86bios | atkbd | dpms | vesa | vga
contrib/x86emu/x86emu_util.c	optional x86bios | atkbd | dpms | vesa | vga

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: paradox эксперементирует с графической консолью

Непрочитанное сообщение paradox » 2009-09-16 13:46:32

а есть под рукой другая видуха?
не 8серия если я правильно помню

какая нибудь AGP чтоль
я правильно понимаю, что ты хочешь избавиться от обоих модулей (x86bios, x86emu) и оставить только одну опцию ядра (x86bios)?
убать их как модули
и сделать как системные
угу