Сейчас на форуме: zds (+5 невидимых)

 eXeL@B —› Программирование —› Запись в MSR регистр на многоядерных процах
Посл.ответ Сообщение

Ранг: 5.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 19 февраля 2014 10:58
· Личное сообщение · #1

Доброго времени суток.

Столкнулся с проблемой коррекции MSR регистров на проце AMD Phenom II X6 1090T
Делаю так
WrMSRpx($C0010062, 2, 0, 4) <---- пытаюсь переключить PState у 3 ядра.
PState переключается только у 5 (последнего) ядра в независимости от параметров что я передаю.

Причём, что самое непонятное, эта технология ОТЛИЧНО работает на AMD FX-8350
Возможно, есть какая-то военная хитрость которой я не знаю.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 19 февраля 2014 11:00 · Поправил: reversecode
· Личное сообщение · #2

это привелегированый регистр
--> Link <--
rdmsr and wrmsr are privileged instructions. However, there are a few MSRs that can be accessed from non-privileged code using special instructions. For example, the rdtsc instruction is a non-privileged instruction that reads the timestamp counter, which is actually situated in an MSR (index 10h).



Ранг: 5.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 19 февраля 2014 11:15
· Личное сообщение · #3

Выполняется только в реальном режиме или с CPL=0
Что и делает функция WrMSRpx библиотеки WinRing0.dll

Невнимательно читаете.
У меня происходит запись в MSR




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 19 февраля 2014 11:52
· Личное сообщение · #4

внимательно читаю, с чего вдруг я должен знать что это за такая волшебная функция WrMSRpx ?
может она от балды взятая

я бы вам порекомендовал для начала
--> Link <--
что бы получить всю информацию о проце и его состояниях итд
но увы у вас не юникс

проверили какими то другими утилитами под виндовс у которых получается то что вы хотите?
нет? тогда это просто игра в угадайку - что то записать, что бы что то изменилось, без учета что спецификация может уже другая на проц по pstate



Ранг: 5.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 19 февраля 2014 12:16
· Личное сообщение · #5

Инфа о проце у меня есть из BIOS and Kernel Developer’s Guide (BKDG) For AMD Family 10h Processors (311162).pdf

Конечно проверял, перед тем как паниковать.

Есть замечательная прога k10stat.exe которая это делает (динамическое, ручное изменение PState)
Есть прога AMD PSCheck - показывает состояние ядер проца (PState можно менять руками)
Запускаю RWEverything и смотрю состояние MSR по всем 6 ядрам. При изменении PState на каком-то ядре -изменяется MSR именно этого ядра.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 19 февраля 2014 12:21
· Личное сообщение · #6

значит все хорошо, выцепите как оно меняет и всего то
ida или olly в руки



Ранг: 5.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 19 февраля 2014 12:26
· Личное сообщение · #7

Ух... Давно я этим не занимался, многое подзабыл.
Думаю, вдруг, кто-то уже сталкивался с такой засадой.



Ранг: 5.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 19 февраля 2014 12:35
· Личное сообщение · #8

Мне не понятен момент - как выглядит запись/чтение MSR из определённого ядра.




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 19 февраля 2014 13:25
· Личное сообщение · #9

У каждого проца свои регистры, следовательно нужно выполнить код, использующий мср на всех процах. Что есть WinRing0.dll" неизвестно. Выкинуть и использовать смену аффинитета в цикле, думаю вам широкополосные прерывания и прочие синхронизации не нужны.


 eXeL@B —› Программирование —› Запись в MSR регистр на многоядерных процах
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати