Intel 64 and IA-32 Architectures Software Developers Manual Volume 3B, System Programming Guide Part 2

Table Of Contents
18-16 Vol. 3
DEBUGGING AND PERFORMANCE MONITORING
BTS_OFF_OS (branch trace off in privileged code) flag (bit 9) When set,
BTS or BTM is skipped if CPL is 0. See Section 18.7.1.
BTS_OFF_USR (branch trace off in user code) flag (bit 10) — When set,
BTS or BTM is skipped if CPL is greater than 0. See Section 18.7.1.
FREEZE_LBRS_ON_PMI flag (bit 11) — When set, the LBR stack is frozen on a
hardware PMI request (e.g. when a counter overflows and is configured to trigger
PMI).
FREEZE_PERFMON_ON_PMI flag (bit 12) — When set, a PMI request clears
each of the “ENABLE” field of MSR_PERF_GLOBAL_CTRL MSR (see Figure 18-22) to
disable all the counters.
FREEZE_WHILE_SMM_EN (bit 14) — If this bit is set, upon the delivery of an
SMI, the processor will clear all the enable bits of IA32_PERF_GLOBAL_CTRL,
save a copy of the content of IA32_DEBUGCTL and disable LBR, BTF, TR, and BTS
fields of IA32_DEBUGCTL before transferring control to the SMI handler. Subse-
quently, the enable bits of IA32_PERF_GLOBAL_CTRL will be set to 1, the saved
copy of IA32_DEBUGCTL prior to SMI delivery will be restored, after the SMI
handler issues RSM to complete its service. Note that system software must
check IA32_DEBUGCTL. to determine if the processor supports the
FREEZE_WHILE_SMM_EN control bit. FREEZE_WHILE_SMM_EN is supported if
IA32_PERF_CAPABILITIES.FREEZE_WHILE_SMM[Bit 12] is reporting 1. See
Section 18.21 for details of detecting the presence of IA32_PERF_CAPABILITIES
MSR.
Figure 18-3. IA32_DEBUGCTL MSR for Processors based
on Intel Core
microarchitecture
31
TR — Trace messages enable
BTINT — Branch trace interrupt
BTF — Single-step on branches
LBR — Last branch/interrupt/exception
Reserved
87654321 0
BTS — Branch trace store
Reserved
9
10
BTS_OFF_OS — BTS off in OS
BTS_OFF_USR — BTS off in user code
FREEZE_LBRS_ON_PMI
FREEZE_PERFMON_ON_PMI
11
12
14
FREEZE_WHILE_SMM_EN