Массив MSR оффшорных PM хранится здесь для SnB, другие архитектуры близки.
Макрос INTEL_UEVENT_EXTRA_REG
здесь здесь , и он просто устанавливает msr
для второго параметра, config_mask
- 0x000000FFULL
и valid_mask
- для третьего параметра (первый - событие для запрограммируйте связанный обычный PMR с).
Значения snb_hw_cache_extra_regs
- это то, что будет записано в выбранном PM MSR 1 .
Этот массив ищется здесь и используется
здесь для выбора первого совпадения MSR PM, где аргумент config
берется из массива hw_cache_event_ids
.
Таким образом, это в основном цикл тестирования нескольких битовых масок, пока не будет найдена совместимая PM MSR, я думаю, вы можете просто пропустить это и посмотреть значения, хранящиеся в массиве snb_hw_cache_extra_regs
.
1
Так как макрос, определенный для создания значений в snb_hw_cache_extra_regs
, никогда не используется повторно в источнике, и значения отображаются непосредственно на схему MSR, задокументированную в руководствах Intel, я не стал проверять это утверждение.