|
Эксперт Hardware
|
|
| 09.11.2023, 17:25 | |
|
2
|
|
| 09.11.2023, 17:25 | |
|
Ответы с готовыми решениями:
209
Джаббер сервер для Win x64 Сервер Domino 8.5.3 X64 И Файл Подкачки (pagefile) Как перенести веб-сервер со всеми конфигами с Windows 10 x64 на Debian (ARM)? |
|
Эксперт Hardware
|
||||||||||||
| 09.11.2023, 19:01 | ||||||||||||
|
Вот несколько заметок по этому дампу:
Когда считав регистр BAR мы захотим обратиться к его памяти, можно нарваться на шипы и получить нули. Поскольку системы ещё нет, то и ошибку чтения возвращать некому, т.е. здесь нет механизмов оповещений. Поэтому перед там-как приступать к операциям RW, нужно обязательно проверить биты[1:0] в командном регистре(4), которые разрешают доступ к физ.портам и памяти MMIO. Вот как описывает эти биты софт "PCIScope":
Если-же говорить о конкретно этом дампе, то здесь регистр Command=0103h, т.е. хост уже разрешил доступ, и остаётся только читать блоки памяти из списка ниже. Все они размером по 4КБ, хотя реально использовано в них может быть и меньше, например всего-лишь пару байт. Просто каждый блок выравнивается в памяти ОЗУ на 4К границу, как требует спека PCI. Поскольку все блоки расположились в чердаке 4ГБ линейного пространства, нужно переходить в нереальный режим, и подбираться к конфигам из него:
2
|
||||||||||||
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||||||||||||
| 09.11.2023, 20:47 [ТС] | ||||||||||||
|
На нетбуке qemu, для ОС я выделил 11 МБ ОЗУ Для ОС я сделал
Если я правильно понимаю, когда указывается virtio, то должны быть характеристики NIC нетбука. У меня даже Ethernet-разъема на нём нет, а в сеть он выходит по вифи Хост - это то, что эмулирует qemu или это мой нетбук (мне стыдно за этот вопрос) ? У меня вообще есть сомнения насчет правильности проброса
Если я перейду в нереальный режим, ничего в памяти не затрётся ?
0
|
||||||||||||
|
Эксперт Hardware
|
||||
| 09.11.2023, 21:07 | ||||
|
транслятор адреса в cpu сам скорректирует его на нужный. и даже на реальном железе.. читал регистры APIC процессора, таймера HPET и прочих.
2
|
||||
|
Эксперт Hardware
|
|||||||
| 10.11.2023, 10:03 | |||||||
|
1. Если вирт.машина qemu установлена где-то на облачном сервере, то он хост, а ты для него гость. 2. Если qemu установлена на твоём/локальном узле (планшете, буке, стационаре), то уже ты выступаешь в роли хоста, и создаёшь гостей. 3. Если-же qemu установлена и на сервере и на твоём узле, то права одинаковы, и вы сами должны решить, кто из вас кто. Существуют две основные технологии виртуализации ввода-вывода: VIRTIO и SR-IOV. • VIRTIO - это виртуализация программного обеспечения хоста (паравиртуализация). В этой схеме, физ.девайс находится на хосте, на него как обычно устанавливаются драйвера, однако qemu дополняет эти драйвера своими, которые логически делятся на гостевую и хостовую часть - это два самостоятельных программных модуля одного драйвера VirtIO. Когда qemu создаёт гостей, она держит у себя хостовую часть драйвера, а гости должны обращаться к ней через свои/гостевые части. Два этих модуля одного драйвера не могут функционировать друг без друга. Чтобы "пробудить" хостовую часть, модуль гостя должен прерыванием MSI-X послать ей сообщение DRIVER_OK=4. Если верить группе разработчиков VirtIO RedHat, программный код гостевого модуля занимает ~20% от общего кода драйвера, что говорит о простом его интерфейсе.• SR-IOV (Single Root IO Virt, единый корень) - это виртуализация уже непосредственно аппаратных устройств, требующая поддержки как со стороны хоста, так и со стороны самих физ.устройств ввода-вывода (т.е. аппаратная технология). С помощью интерфейса SR-IOV, ресурс одного адаптера PCIe можно разделить на 2048 полностью изолированных вирт.функции VF, что позволит совместно использовать эти ресурсы в вирт.среде. Хотя производительность SR-IOV на порядок превосходит VIRTIO, среди поставщиков сетевых и прочих адаптеров напрочь отсутствует стандартизация управления ими. Схема её выглядит так: Вчера на досуге поставил себе QEMU на лок.машину, и получил точно такой-же дамп PciCfg, после чего чз pmemsave 0xFE000000 0x40 dump.bin (и адресов с остальных BAR) получил логи ниже. Дампы "ISR_CFG" (Offs=1000h) + NOTIFY_CFG (Offs=3000h) оказались девственны и забиты нулями, т.к. ожидают заполнения своих полей драйвером. Если теперь наложить на них структуры из спеки VirtIO, можно получить текущую картину, и сделать соответствующие выводы:
3
|
|||||||
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
|
| 10.11.2023, 20:22 [ТС] | |
|
R71MT, ну вы даёте
!иногда кажется, что не я, а вы разрабатываете, а я - догоняющий ![]() Одинаковый дамп на разных машинах - фантастика Только у вас в третьем столбце 11840200, а у меня 11840300
1
|
|
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||||||
| 10.11.2023, 20:44 [ТС] | ||||||
|
А я могу перейти в нереальный режим из кода второго сектора?
В прошлый раз я вывел дамп и затем сразу будет код перехода в PM или переходить надо обязательно до строк ? :
0
|
||||||
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||||||||||||||||
| 10.11.2023, 21:55 [ТС] | ||||||||||||||||
|
R71MT, смотрю в osdev и вот эта штука мне не нравится:
lgdt [gdtinfo] <- это как-то можно превратить во что-то вроде lgdt 0, прописать нужное непосредственно? и всё ![]() И вот
Добавлено через 49 минут
0
|
||||||||||||||||
|
Эксперт Hardware
|
||||||||||||||||||||||
| 11.11.2023, 07:52 | ||||||||||||||||||||||
|
Teamur, вы видимо плохо понимаете, что такое GDT и зачем она нужна.
GDT - это "Global Descriptor Table", или глобальная таблица дескрипторов памяти. Размер одного дескриптора 8-байт, и в нём указывается база, лимит и атрибуты сегмента памяти. Именно прописанный в дескрипторе лимит ограничивает доступ к 4GB памяти - в реальном режиме его значение 0xFFFF, и мы не сможем преодолеть этот 64КБ барьер, пока не изменим в дескрипторе лимит на 32-битный максимум 0xFFFFFFFF. Вот как они представлены в библии интела том(3):Сегментные регистры CS,DS,ES,SS,FS,GS имеют скрытую 8-байтную часть, куда копируется определённый дескриптор из таблицы GDT (дескриптор-кода в CS, а дескриптор-данных во-все остальные). Это т.н. "кэш дескрипторов", чтобы при каждом чихе CPU не обращался к памяти GDT. Дескрипторы в таблице выстроены последовательно, и соответственно каждый из них имеет свой порядковый номер, который называют "селектор". Эти селекторы хранятся уже в видимой программисту 2-байтной части сегментных регистров типа CS,DS. Процессор не знает, какой из дескрипторов нужно скопировать из GDT в кэш сегм.регистра, поэтому мы должны указать ему это явно, отправив селектор дескриптора в CS,DS. Именно этим и занимается данный участок кода:
В манах Intel'a чёрным по-белому сказано, что дескриптор с селектором(0) в GDT (т.е. самый первый) должен быть пустым, а в режиме х64 и следующий тоже пустрой. Походу это просто для выравнивания на 16-байтный параграф. Вот как это выглядит в реале:
Здесь команде отладчика dg (от dump gdt) передаём параметры в виде диапазона селекторов.Как видим, дескрипторы с селекторами(0,8) лежат в резерве, а в столбце "Long" зарыт флаг сегмента х64. Если он взведён, транслятор адреса в MMU игнорирует базу + лимит в дескрипторах, и никому не демонстрируя, в своих штанах выставляет их значения в нуль и 0xFFFFFFFF`FFFFFFFF соответственно (на рис.выше бит(L) это 21):
процессор ищет их в своём регистре GDTR. в режиме х32 это 6-байтный регистр в формате: 4-байтный адрес + 2-байтный размер. в режиме х64 это уже 10-байтный регистр, т.к. для адреса выделяется 8-байт. Запись в этот регистр инструкцией lgdt (load), а чтение sgdt (store).Пример ниже для режима х32. Кстати для URM достаточно лишь одного дескриптора-данных:
2
|
||||||||||||||||||||||
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||
| 11.11.2023, 08:48 [ТС] | ||
|
Только вот проблема, в NASM, на котором я пишу нет 6 байтного ключевого слова, подобного fword
0
|
||
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||
| 11.11.2023, 17:33 [ТС] | ||
|
R71MT,
Получается невозможно создать ОС с виртио NIC чисто в реальном режиме?
0
|
||
|
Эксперт Hardware
|
|||
| 11.11.2023, 17:51 | |||
lgdt [newGdt]только для доступа к 4Gb будешь использовать пропатченный регистр fs.т.е. заходишь из RM и РМ, меняешь дескриптор, и возвращаешься опять в RM.
2
|
|||
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||||||
| 12.11.2023, 18:07 [ТС] | ||||||
|
R71MT, у меня есть сомнения в правильности сделанного :
0
|
||||||
|
Эксперт Hardware
|
||||||
| 12.11.2023, 21:17 | ||||||
push/pop ds не нужен.теперь пробуй считать с 4Gb (как в примере выше), и вывести на консоль в hex если получится, значит всё ок.
2
|
||||||
|
29 / 29 / 5
Регистрация: 06.01.2015
Сообщений: 336
|
||||||
| 12.11.2023, 22:39 [ТС] | ||||||
|
R71MT, постоянно мерцает экран, как будто что-то в цикле, вечно перезагружается, непонятно
Может надо на какой-то адрес перейти, хмм
0
|
||||||
| 12.11.2023, 22:39 | |
|
Сервер 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного.
1. Почему показания термометра заряжены целью?
Цель заложена в самом. . .
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
По ссылке 403. Не очень информативно такую ссылку постить.
Запись от Usaga размещена Сегодня в 06:46 . . .
|
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|