Size: a a a

2020 December 23

TS

Timur Safin in pro.osdev
начиная кажется с нехалема можно не выходить, и в vmcs появляется поле rdtc offset. Потому можно просто выключить выход по этим инструкциям (выиграв сильно в скорости симуляции Windows)
источник

TS

Timur Safin in pro.osdev
быстрый гуглинг принес вот такой патч например (где они выключают этот выход) https://github.com/cnuke/genode/commit/85175fec4bbfc69fd0a5b91e7e840bb4f9ae0a2a
источник

TS

Timur Safin in pro.osdev
ну то есть отвечая на изначальный вопрос - каждый vmm может сделать чтобы не выходило по этим инструкциям, как и сделать чтобы выходило.
источник

C

ChoiPinMing in pro.osdev
А ну да
Bit 12
RDTSC exiting

This control determines whether executions of RDTSC and RDTSCP cause VM exits.
источник

LW

Loren White in pro.osdev
ну я до этого работал с vmware, там даже если в конфиге прописываешь отключение обработки rdtsc, оно все равно никак не реагирует и попытка vmlaunch с настроенной VMCS на выход rdtsc вызывает зависание
источник

TS

Timur Safin in pro.osdev
Loren White
ну я до этого работал с vmware, там даже если в конфиге прописываешь отключение обработки rdtsc, оно все равно никак не реагирует и попытка vmlaunch с настроенной VMCS на выход rdtsc вызывает зависание
а железка какая была внизу?
источник

LW

Loren White in pro.osdev
всмсл ?
источник

TS

Timur Safin in pro.osdev
rdtsc offset появился в vmx vmcs не сразу
источник

LW

Loren White in pro.osdev
i5 9400
источник

TS

Timur Safin in pro.osdev
то есть Coffee Lake. Уже умел - все вопросы к vmware
источник

C

ChoiPinMing in pro.osdev
ChoiPinMing
Может тебе подойдет если ты возьмешь qemu на любом линуксовом ядре с закомменченым
grep -R EXIT_REASON arch/x86/kvm/ | grep RD
arch/x86/kvm/vmx/nested.c:      case EXIT_REASON_RDTSC: case EXIT_REASON_RDTSCP:
arch/x86/kvm/vmx/vmx.c: [EXIT_REASON_RDPMC]                   = handle_rdpmc,
Тут я прогнал . Не сразу догнал что тебе надо именно не выходить на rdtsc, так что если что это надо чуть выше правильно сетить бит 12 в в соответсвующей части VMCS
источник

LW

Loren White in pro.osdev
надо, чтобы сама VMM, на которой запускается гипервизор, этого не делала, а то все будет виснуть
источник

LW

Loren White in pro.osdev
ну qemu погуглю, может с ней получится
источник

C

ChoiPinMing in pro.osdev
qemu это просто куда ты бинарь гостевого ядра положишь
источник

C

ChoiPinMing in pro.osdev
а флажок отдебажить на линуксе будет конечно проще
источник

C

ChoiPinMing in pro.osdev
посетишь флаг чтоб на rdtsc не выходило . а в handle_rdtsc добавишь printk чтоб увидеть что это возымело эффект
источник

LW

Loren White in pro.osdev
мало знаком с линупсом, только пару раз в него заходил собрать пару приложух на qt )0, но если ничего не найду, то воспользуюсь советом или попрошу у кого нибудь физическую машину для тестов и удаленно ядро дебажить буду
источник

TS

Timur Safin in pro.osdev
ChoiPinMing
посетишь флаг чтоб на rdtsc не выходило . а в handle_rdtsc добавишь printk чтоб увидеть что это возымело эффект
как же это он увидит, если вызывать handle_rtdsc перестанут? :)
источник

C

ChoiPinMing in pro.osdev
Timur Safin
как же это он увидит, если вызывать handle_rtdsc перестанут? :)
Вот загадка!)
источник

@

@skynet in pro.osdev
Loren White
ну qemu погуглю, может с ней получится
Всем прив. Чтоб понять qemu, лучше скачать "ReactOS in Qemu" и там уже подсунуть нужную ось
источник