OSDev

для всех
Текущее время: 28 апр 2024, 01:21

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Баги
СообщениеДобавлено: 10 май 2012, 11:39 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
Еще один баг в QEMU 1.0.1. Другие эмуляторы (в т.ч. VirtualBox) не подвержены.

Ошибка в инструкции sysret. Псевдокод для возврата в 64-битный режим:
Код:
EFLAGS ← R11;
CPL ← 0x3;
CS(SEL) ← IA32_STAR[63:48] + 16;
CS(PL) ← 0x3;
SS(SEL) ← IA32_STAR[63:48] + 8;
SS(PL) ← 0x3;
RIP ← RCX;


Здесь видно, что после загрузки селектора проц принудительно устанавливает PL в 3. QEMU же этого не делает. В результате, если в IA32_STAR перед возвратом было 0x10, то в SS вместо 0x1B окажется 0x18, и задача упадет с #GP.

Обойти ошибку можно, прибавив к значению в IA32_STAR 3. На реальных процах и других эмуляторах это никак не влияет на результат работы инструкции, а в QEMU - прогружает верный PL.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Баги
СообщениеДобавлено: 11 май 2012, 10:21 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
А чего вы в багтрэк QEMU не постите?
Я сообщал об ошибках авторам NASM, DMDE, Bochs, - все оперативно исправляли баги.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Баги
СообщениеДобавлено: 11 май 2012, 10:56 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
Yoda писал(а):
А чего вы в багтрэк QEMU не постите?


Даже если я запостю и они исправят, то мне-то легче не станет: останутся старые версии (вроде сборок под винду), которые все равно придется поддерживать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Баги
СообщениеДобавлено: 11 май 2012, 12:57 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Аааа, всё-таки официально винда не поддерживается...
жаль.

PS.
Ну хотя бы чтобы осчастливить пользователей Linux.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Баги
СообщениеДобавлено: 11 май 2012, 13:05 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
QEMU официально поддерживает винду (компилируется и всё такое), но не предоставляет официальных сборок. Чтобы пользоваться им под виндой, его надо или скомпилировать самому (чего большинство пользователей винды делать не будет), или найти готовую сборку сомнительной свежести.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Баги
СообщениеДобавлено: 14 май 2012, 00:17 
Аватара пользователя

Зарегистрирован: 06 мар 2012, 20:05
Сообщения: 130
Откуда: Санкт-Петербург
Таки я на них сорвался. Люблю материть техподдержку, особенно иностранную, особенно когда они отмазываются...

_________________
We are back with a hard even better than before [D-Block & S-Te-Fan – Evolutionz {Ran-D remix}]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Баги
СообщениеДобавлено: 14 май 2012, 10:09 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Ну это ты зря. До грубостей скатываться не стоит, обычно грубость субъективно настраивает против персоны и мешает достижению поставленной цели.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Баги
СообщениеДобавлено: 21 май 2012, 23:01 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Прокачал ось, тестируя на компе с множеством залоченных ядер. Теперь запускается в куеме на 167 ядрах.
При выставлении 168 куема говорит так:
Вложение:
121.jpg
121.jpg [ 55.68 КБ | Просмотров: 7936 ]

Собственно, на этом загрузка заканчивается. Даже до моей MBRки не доходит видимо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Баги
СообщениеДобавлено: 22 май 2012, 05:32 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
Ошибка в инструкции sysret. Псевдокод для возврата в 64-битный режим:

У Intel и AMD эти инструкции видут себя по разному. Перепроверь вдруг не ошибка а просто проц AMD эмулируется?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Баги
СообщениеДобавлено: 22 май 2012, 09:12 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
pavia писал(а):
Цитата:
Ошибка в инструкции sysret. Псевдокод для возврата в 64-битный режим:

У Intel и AMD эти инструкции видут себя по разному. Перепроверь вдруг не ошибка а просто проц AMD эмулируется?


Еще веселее. Интелу что, больше делать было нечего? У них и так своя пара sysenter/sysexit есть, так они еще и криво AMD-овскую скопировали.

Чуть позже приложу образ, у кого есть реальный амд - проверьте, пожалуйста. На интелах пашет.

UPD: не, не в этом дело.

AMD SYSCALL and SYSRET Instruction Specification писал(а):
New selectors are loaded without any checking performed as follows:
n Bits [63–48] of the STAR register specify the selector that is copied into the CS
register.
n Bits [63–48]+1000b of the STAR register specify the selector that is copied into
the SS register.
Note: This effectively increments the index field of the CS selector such that the
resultant SS selector points to the next descriptor in a descriptor table, after the
CS descriptor.
n Bits [1–0] of the SS register are set to 11b (RPL of 3) regardless of the value of bits
[49–48] of the STAR register.
The CS and SS registers must not be modified by the operating system between the
execution of the SYSCALL instruction and its corresponding SYSRET instruction.
The CPL is set to 3 regardless of the value of bits [49–48] of the STAR register. If the
CPL is not equal to 0 when the SYSRET instruction is executed, a general protection
fault exception is generated with an error code of 0.


Тут, так же как и у интела, PL CS и SS должны загружаться в 3 на выходе.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB