|
Эксперт Hardware
|
|
| 03.11.2023, 08:15 | |
|
И ещё замечание..
Не нужно злоупотреблять вызовом прерывания int-10h.Досовский отладчик "AVPUtil" от лаборатории Касперского может дизасмить все известные прерывания DOS/BIOS. Так вот если посмотреть в нём на код int-10h, он реализуется в (!)450-строк. И это не считая 20-ти внутренних обращений к другим участкам кода посредством вызовов call. В общем случае получается более 1000-строк кода, и если использовать их для вывода одного символа, то получаем явный оверхед.
2
|
|
| 03.11.2023, 08:15 | |
|
Ответы с готовыми решениями:
209
Джаббер сервер для Win x64 Сервер Domino 8.5.3 X64 И Файл Подкачки (pagefile) Как перенести веб-сервер со всеми конфигами с Windows 10 x64 на Debian (ARM)? |
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||||||||||||||||
| 03.11.2023, 11:26 [ТС] | ||||||||||||||||
|
"Подготовил" проект к работе с virtioNIC
ЗАГРУЗЧИК
Теперь что нужно делать?
1
|
||||||||||||||||
|
Эксперт Hardware
|
||
| 03.11.2023, 11:49 | ||
jmp не 07E0:0000h, а 0000:7E00h,1. Перейти в нереальный режим, 2. Составить алгоритм работы ОС, 3. Скачать спеку на VIRTIO и перечитать её 210-раз, 4. next..
3
|
||
|
Эксперт Hardware
|
||||||
| 04.11.2023, 08:01 | ||||||
|
Teamur, что там прописано в конфиг.пространстве PCI девайса?
выложи сюда дамп - посмотрим.. Базовый блок имеет размер 256-байт, а прочитать его можно так:
VID/DID=1AF4_1003h (см.первые два WORD).
2
|
||||||
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||||||
| 04.11.2023, 10:27 [ТС] | ||||||
|
R71MT, здравствуйте, смогу выложить только завтра, после обеда, тк буду в отъезде!
Добавлено через 1 минуту R71MT, Сейчас у меня написан такой код в MAIN
0
|
||||||
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||||||
| 05.11.2023, 15:18 [ТС] | ||||||
|
R71MT, сделал так
0
|
||||||
|
Эксперт Hardware
|
||
| 05.11.2023, 15:34 | ||
|
теперь нужно считать всё PciCfg или как я привёл пример чз int-1Ah --> AX=B10Ah,или через порты с прибавлением номера регистра в PCI_CONF_ADDR.
1
|
||
|
Модератор
|
|||||||||||||||||
| 06.11.2023, 07:49 | |||||||||||||||||
|
QEMU вообще умеет напрямую запускать linux или multiboot kernel без всяких биосов. U-Boot умеет bootить с virtio-blk https://u-boot.readthedocs.io/... irtio.html В современных qemu есть -machine microvm, в которой нет ни PCI, ни ISA, а только явно добавленные при запуске устройства virtio. Как раз для таких приложений, которым не нужны никакие монструозные ОС.Добавлено через 1 час 22 минуты qemu-system-x86_64 -machine microvm -device virtio-net-device -device virtio-serial-device -S info mtree
x /64xx 0xfeb02c00
x /64xx 0xfeb02e00
1
|
|||||||||||||||||
|
Модератор
|
|||||||||||
| 06.11.2023, 19:37 | |||||||||||
(qemu)info virtio
(qemu)info virtio-status /machine/peripheral-anon/device[1]
1
|
|||||||||||
|
Эксперт Hardware
|
|||||||||||||||||||||||||||||||
| 07.11.2023, 00:53 | |||||||||||||||||||||||||||||||
|
politoto, всё правильно.. это настройки устройства на хосте.
started: false, и драйвер (здесь код ос) должен сначала сообщить хосту, какие именно из перечисленных свойств он планирует использовать в своём функционале, после чего выставить флаг готовности хосту "DRIVER_OK". Только после этого хост изменит статус на started: true и можно будет приступать к общению с девайсом.Чтобы проделать эти операции, драйвер должен получить адреса соответствующих структур в памяти, доступ к которым открывают регистры BAR в PciCfg. Поиск начинается с того, что читается байт по смещению(34h) в PciCfg под названием "Capability Pointer". В нём лежит смещение первой структуры "VIRTIO_PCI_CAP", а поле cap_next в этой структуре, хранит смещение следующей (последняя имеет маркер нуль).
Тип текущей структуры указывается в её поле cfg_type, константы которых перечислены ниже:
bar структуры лежит номер одного из шести регистров базовых адресов BAR[0:5] в PciCfg, где можно будет найти уже сами структуры. Поля offset+length хранит смещение структуры от базы + её размер. Драйвер конфигурирует устройство через структуру "VIRTIO_PCI_CAP_COMMON_CFG", а информирует хост структурой "NOTIFY". Для этого могут использоваться как прерывания int, так и сообщения MSI (определяет хост). Чтобы ситуация прояснилась, можно взять дамп PciCfg функции VirtIO, и разобрать его вручную. Поскольку ТС так и не предоставил свой, я приведу пример на каком-то левом, выловленном из сети:
2. Видим там: cap_vndr=11 (MSI-X), cap_next=84, cap_len=2, cfg_type=80, bar=1, offset=0801, length=0.3. 32-битные регистры BAR[0:5] начинаются со-смещения(10h) и заканчиваются(24h). Здесь указан BAR1, а в дампе видим адрес 0xFEBD2000. Именно там можно будет найти всю подноготную сообщений MSI-X (Message Signaled Interrupt). Это отдельная тема, и нужно парсить PciCfg за пределами первых 256-байт (см.спеку на PCI). 4. Поле cap_next=84 говорит нам, что сл.структура "VIRTIO_PCI_CAP" лежит по смещению(84h) - здесь всё аналогично: cap_vndr=09 (Vendor Specific), cap_next=70, cap_len=14, cfg_type=05, bar=0, offset=0, length=0.По типу структуры(5) можно сделать вывод, что это "VIRTIO_PCI_CAP_PCI_CFG". В BAR0 лежит зеро, значит все конфиги задаются локально. 5. Сл.структура расположена по смещению(70h) и имеет тип(2) "VIRTIO_PCI_CAP_NOTIFY_CFG" - здесь уже интересней: cap_vndr=09, cap_next=60, cap_len=14, cfg_type=02, bar=4, offset=3000h, length=400000h (4МБ).В дампе BAR4=0хFE000000 и если прибавить к нему оффсет, получим адрес структуры сообщений 0хFE003000. 6. Таким-же макаром парсим и остальные структуры, пока не нарвёмся на структуру с полем "cap_next=00". В данном случае она лежит по смещению(40h): cfg_type=01, bar=4, offset=0, length=1000hOffset=0 означает, что начало данной структуры совпадает со значением в BAR4, и размером она 4КБ. Структура типа(1) - это основная структура конфигурации "VIRTIO_PCI_COMMON_CFG", при помощи которой драйвер причёсывает девайс под себя. Адрес её в памяти будет равен значению в BAR4, т.е. 0хFE000000. Большинство полей - это битовая маска. После всех настроек и манипуляций с битами, нужно будет передать хосту статус через одноимённое поле device_status. По названию поле можно легко догадаться о характере, например все "Queue" описывают очередь в буфере, "Feature" это свойства, "Notify" оповещения, и т.д.
Вот как выглядит лог уже настроенного, и готового к употреблению устройства. Здесь видно, что статус сменился на started: true, а так-же используемые драйвером фишки, из списка предложенных хостом.В блоке "Status" перечислены нотификации в том порядке, в котором посылает их хосту драйвер:
3
|
|||||||||||||||||||||||||||||||
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||||||
| 07.11.2023, 12:43 [ТС] | ||||||
|
R71MT, здравствуйте
А если всё правильно я увижу дамп в консоли табличкой или его надо перебрать и превратить в hex?
0
|
||||||
|
Эксперт Hardware
|
||||||
| 07.11.2023, 15:14 | ||||||
|
Teamur, вот тебе готовый загрузчик, который сдампит на консоль конфиг.пространство VirtioNet. Печать осуществляется прямым выводом в видеобуфер, а не через
int-10h.
VID/DID = 8086:1237hУ тебя должен показать правильные идентификаторы 1AF4:1000h.
1
|
||||||
|
Модератор
|
||
| 07.11.2023, 15:42 | ||
pmemsave или memsave, напр.:pmemsave 03777765 8 biosdate.txtа потом просматривать где угодно в нужном виде, превращать или анализировать своими вспомогательными программками. По своей сути монитор и есть пульт управления виртуальной машиной.
2
|
||
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||||||
| 09.11.2023, 11:17 [ТС] | ||||||
|
R71MT, politoto, этим кодом:
0
|
||||||
|
Модератор
|
|
| 09.11.2023, 13:30 | |
|
Teamur, а вставить этот текст в текст сообщения не картинкой, а текстом Вы не могли бы?
Или сохранить дамп в файл без преобразования в шестнадцатеричные цифры, а потом этот файл опубликовать?
1
|
|
|
Эксперт Hardware
|
|
| 09.11.2023, 15:02 | |
|
Teamur, ну оранжевые твои штаны..
В дампе "PCI Config Space" каждый байт имеет свою позицию, а весь дамп описывает строго определённая компанией PCI-SIGN структура. Ты-же выложил его как кучу навоза. Теперь нужно или звонить в их офис, чтобы переделали спецификацию под твой дамп, или-же тебе выстроить его в человеческом виде. Для кого я привёл образец выше? Даже готовый бинарь загрузчика прицепил в скрепку. Пипец.. Ладно ты пишешь код по своему, ну хотя-бы прислушивайся, что тебе говорят, а тем более наглядно показывают скрином. Во-первых, после того-как считал дворд, нужно инструкцией bswap поменять позицию байт в дворде местами, т.е. ты читаешь 0х11223344, и теперь нужно отразить их зеркально в 0х44332211. Только тогда их порядок будет соответствовать спеке PCI. Первые 4-байта Vid/Did в дампе должны иметь вид: F41A0010. Во-вторых, в одной строке должно быть 16-байт (один параграф памяти), а не 32 как у тебя.
2
|
|
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||||||||
| 09.11.2023, 17:02 [ТС] | ||||||||
|
politoto, я не смог даже выделить текст, начинаю выделять в шапке qemu окна пишется
'Press Ctrl+Alt+G to release grab' - нажимаю, ничего не происходит, я без понятия как копировать то, что показывает qemu. Пришлось сделать скрин. Надо было мне вручную напечатать Добавлено через 4 минуты Добавлено через 26 минут собираюсь прописать pmemsave 0x??? 256 dump.txt только вот какое смещение взять? Добавлено через 34 минуты В общем так вроде нормально
01C00000 0010BDFE 00000000 00000000 0C0000FE 00000000 00000000 F41A0100 0000B8FE 98000000 00000000 0B010000 09001001 04000000 00000000 00100000 09401003 04000000 00100000 00100000 09501004 04000000 00200000 00100000 09601402 04000000 00300000 00100000 04000000 09701405 00000000 00000000 00000000 00000000 11840300 01000000 01080000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
1
|
||||||||
| 09.11.2023, 17:02 | |
|
Сервер HP Primergy Econel 200 S2, Win2008R2 x64, RAID10 4x2000Gb падает скорость чтения/записи по сети
HP Pavilion g7 - 2160er переустановил Windows HP x64 на Ultimate x64 - проблема с подсветкой монитора Нестандартная ситуация, установка еще одной w7 x64 на уже установленный комп с w7 x64 Ищу обновления KB938397-x64 и KB968730-x64 для Windows Server 2003x64 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|