[devel] Новый qemu

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Вс Фев 18 00:29:05 MSK 2007


On Thu, Feb 15, 2007 at 01:16:35PM +0200, Michael Shigorin wrote:
> On Thu, Feb 15, 2007 at 12:38:09PM +0200, Eugene Ostapets wrote:
> > 15.02.07, Alexey Tourbin<at altlinux.ru> написал(а):
> > > > > 2at@ Могу подхватить, но меня сейчас интересует только qemu-arm. Отдашь?
> > > Ещё eostapets писал, что собирает qemu для себя и не прочь отправлять
> > > свои сборки в сизиф.  Не знаю, кто из вас больше заинтересован в этом
> > > пакете.  В любом случае, хочу его кому-нибудь отдать.
> > Я заинтересован в свежем, работающем qemu и не хочу чтобы мой труд
> > пропадал зря :) Если у кого-то бизнес-процессы завязаны на qemu -
> > значит он более заинтересован, чем я :) Ну и всегда можно дописать
> > второго в права на пакет, чтобы не было задержек:)
> 
> Лёш, добавь их обоих -- там уже между собой разберутся :-)
> 
> Поскольку Жене надо x86/x86_64, а Кирюше -- ARM.
> Бишь интересы пересекаются только в том, что пакет один.
> 
> PS: если кому не влом отпроксить в kernel cvs -- welcome:
> http://paq.osdn.org.ua/~mike/qemu/SRPMS/ kernel*

В ходе разборок с kqemu на x86_64 выяснилось следующее:

1) При использовании qemu-system-x86_64 с kqemu в гостевой ОС
   (пробовались Compact-3.0.4, installer-20070202 i586 и x86_64)
   наблюдаются segmentation faults в громадном количестве.  Эта
   проблема исчезает после пересборки qemu с использованием gcc-3.4.
   Без kqemu вроде бы такого не наблюдается.

   Может быть, не стоит пытаться собирать qemu с использованием
   официально неподдерживаемой автором версии компилятора?

2) Установить installer-20070202 x86_64 с использованием kqemu не
   удаётся даже после пересборки и qemu, и кусков kqemu gcc-3.4
   (впрочем, последнее, похоже, на результат не влияет).  При
   использовании опции -kernel-kqemu падение происходит ещё в первой
   стадии инсталятора; без -kernel-kqemu падает, как правило, после
   создания разделов.  В этом случае аварийно завершается именно
   kqemu; в dmesg наблюдаются сообщения вида:

	kqemu: aborting: Unexpected exception 0x0d in monitor space
	err=0000 CS:EIP=f180:00000000f0001f77 SS:SP=0000:00000000f00c6e50

   Удалось выяснить, что ошибка происходит в common/monitor.c в
   функции mon_alloc_page():

    vaddr = get_vaddr(s);
    /* XXX: check error */
    set_vaddr_page_index(s, vaddr, page_index, host_page, 0);

   Комментарий с XXX тут стоит не зря - ошибка происходит, когда
   get_vaddr() не может найти свободную страницу виртуальной памяти в
   области, отведённой для монитора kqemu.  Проблема, похоже, в том,
   что kqemu выполняет эмуляцию таблицы страниц, при этом страницы
   только выделяются, но никогда не освобождаются; но если в
   32-разрядном режиме для таблицы страниц максимально возможного
   размера требовалось около 8 МБ (на самом деле таких таблиц 2,
   область монитора сейчас имеет размер 32 МБ, так что в этом режиме
   переполнение происходить не должно), то в 64-разрядном режиме
   теоретический максимум - 513 ГБ.  Таким образом, на x86_64 такая
   схема управления памятью неработоспособна (впрочем, 32-разрядные
   системы, запущенные в qemu-system-x86_64 на хосте x86_64, всё-таки
   будут работать).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20070218/772e47e1/attachment-0001.bin>


Подробная информация о списке рассылки Devel