Size: a a a

pro.osdev — ясельная группа

2021 February 04

BD

Berkus Decker in pro.osdev — ясельная группа
Dollar Føølish
Ept
Или точнее ЁPT
источник

C

ChoiPinMing in pro.osdev — ясельная группа
Наконец то наличие данного чатика в моей телеге помогло мне в жизни)
источник

TS

Timur Safin in pro.osdev — ясельная группа
Dollar Føølish
Можешь Борю или Беркуса тегнуть как там нестед таблицы называются в интеле , я запамятовал
Ept
источник

TS

Timur Safin in pro.osdev — ясельная группа
А ну ок, ответили уже
источник

TS

Timur Safin in pro.osdev — ясельная группа
ChoiPinMing
то есть это типа как раньше было - то если гест пытается почитать CR3, происходил VMEXIT и ядро должно было откуда то из сундука доставать адрес специально для данной виртуальной машины
Просто на vmexit ты шёл в содержимое таблиц в госте, и если фолт наведенный (из-за недостроенных страниц на хосте), достраивал страницу и рестартил исполнение инструкции
Ept избавляет от такого
источник

C

ChoiPinMing in pro.osdev — ясельная группа
Timur Safin
Просто на vmexit ты шёл в содержимое таблиц в госте, и если фолт наведенный (из-за недостроенных страниц на хосте), достраивал страницу и рестартил исполнение инструкции
Ept избавляет от такого
Спасибо
источник

C

ChoiPinMing in pro.osdev — ясельная группа
А еще вопрос, правильно ли я понимаю что VMLAUNCH/VMRESUME могут достаточно долго исполняться и собственно каждый раз когда RIP переходит на следующую после этой инструкцию - это и был VMEXIT?
источник

C

ChoiPinMing in pro.osdev — ясельная группа
то есть на VMRESUME реально происходит некий "нырок" в неизвестное и там в принципе cpu может надолго пропасть если внешне его никто не дергает интераптами?
источник

LW

Loren White in pro.osdev — ясельная группа
всмсл ? там просто подгружается состояние процессора, которое ты указал в VMCS и все, какой "нырок" ?
источник

TS

Timur Safin in pro.osdev — ясельная группа
Да, у себя в гипервизоре, мы pmc программировании, чтобы он по квоте выходил (что конфликтовало с vtune но это уже другая история). Это было до того как в vmx таймеры для этого приехали
источник

TS

Timur Safin in pro.osdev — ясельная группа
(у себя, это в dex режиме симулятора softsdv. Давно закрытого)
источник

C

ChoiPinMing in pro.osdev — ясельная группа
Loren White
всмсл ? там просто подгружается состояние процессора, которое ты указал в VMCS и все, какой "нырок" ?
Я не знаю как по другому задать этот вопрос, PC(instruction pointer) перейдет на следующую инструкцию после того как VCPU отработает по всем инструкциям внутри  виртуального контекста? То есть он довольно долго может висеть на данной инструкции?
источник

C

ChoiPinMing in pro.osdev — ясельная группа
Грубо говоря если в этот момент дебажить ядро на-живую - на step мы же не увидим как vcpu исполняет мы сразу увидим как он от vmresume перешел к следующей инструкции? А если мы заменим инструкцию по которой будет бежать VCPU на дебажный брейкпоинт -  то мы все равно получим след после VMRESUME инструкцию но только в VMCS будет EXIT REASON  как раз та самая дебажная инструкция
источник

C

ChoiPinMing in pro.osdev — ясельная группа
А если на VMRESUME vcpu сможет без выхода исполнить скажем 10 000 инструкций - то он сделает их в рамках исполнения одной хостовой инструкции VMRESUME
источник

LW

Loren White in pro.osdev — ясельная группа
после vmresume\vmlaunch загрузится IP, который был указан. Если в non-root операции встретится брейкпоинт, то произойдет vmexit и загрузка ip, который был указан в vmcs как хостовой
источник

C

ChoiPinMing in pro.osdev — ясельная группа
это понятно откуда возьмется ip для исполнения вопрос был в блокирующем характере VMRESUME. Я уж не знаю как четче уже выразиться)
источник

LW

Loren White in pro.osdev — ясельная группа
ChoiPinMing
А если на VMRESUME vcpu сможет без выхода исполнить скажем 10 000 инструкций - то он сделает их в рамках исполнения одной хостовой инструкции VMRESUME
ну типа да, если нет vmexit'ов, то ты не дропнешься в root операцию
источник

TS

Timur Safin in pro.osdev — ясельная группа
ChoiPinMing
Грубо говоря если в этот момент дебажить ядро на-живую - на step мы же не увидим как vcpu исполняет мы сразу увидим как он от vmresume перешел к следующей инструкции? А если мы заменим инструкцию по которой будет бежать VCPU на дебажный брейкпоинт -  то мы все равно получим след после VMRESUME инструкцию но только в VMCS будет EXIT REASON  как раз та самая дебажная инструкция
да, отладить гостя без приседаний не удастся. Для отладчика в рутовом режиме, инструкции гостя останутся незаметными. (на разве что если в симуляторе каком, умеющем представляться gdb-server, можно предоставить такую возможность отладки и гипервизора и гостя. В теории)
источник

d

disba1ancer in pro.osdev — ясельная группа
Dollar Føølish
В минус третьем кольце)
Понасуют своих колец...
источник

BD

Berkus Decker in pro.osdev — ясельная группа
источник