background image

36-42 Vol. 3C

INTEL® PROCESSOR TRACE

36.4.2.5   Packet Generation Disable (TIP.PGD)

Table 36-21. TIP.PGD Packet Definition

Name

Target IP - Packet Generation Disable (TIP.PGD)

Packet Format

Dependencies

PacketEn transitions to 

0

Generation 

Scenario

Any branch instruction, control flow transfer, or MOV CR3 that clears 

PacketEn, a WRMSR that disables packet generation and clears PacketEn

Description

Indicates that PacketEn has transitioned to 0. It will include the IP at which the tracing ends, unless ContextEn= 0 or 

TraceEn=0 at the conclusion of the instruction or event that cleared PacketEn.

PacketEn can be cleared due to any of the enables that comprise PacketEn transitioning from 1 to 0. Examples:

• TriggerEn: This is cleared on software write to clear IA32_RTIT_CTL.TraceEn, or when 

IA32_RTIT_STATUS.Stopped is set, or on operational error. The IP payload will be suppressed in this case, and the 

“IPBytes” field will have the value 0.

• FilterEn: This is set when software jumps out of the tracing region. This region is defined by enabling IP filtering 

in IA32_RTIT_CTL.ADDRn_CFG, and defining the range in IA32_RTIT_ADDRn_[AB], see. Section 36.2.4.3

The IP payload will depend on the type of the branch. For conditional branches, 

the payload is 

suppressed (IPBytes = 0), and in this case the destination can be inferred from the disassembly. For any other 

type of branch, the IP payload will be the target of the branch.

• ContextEn: This can happen on a CPL change, a CR3 write or any other means of changing ContextEn. See 

Section 36.2.4.3

 for details. In this case, when ContextEn is cleared, there will be no IP payload. The “IPBytes” 

field will have value 0.

Note that, in cases where a branch that would normally produce a TIP packet (i.e., far transfer, indirect branch, inter-

rupt, etc) or TNT update (conditional branch or compressed RT) causes PacketEn to transition from 1 to 0, the TIP or 

TNI bit will be replaced with TIP.PGD. The payload of the TIP.PGD will be the target of the branch, unless the result 

of the instruction causes TraceEn or ContextEn to be cleared (ie, SYSCALL when IA32_RTIT_CTL.OS=0, In the case 

where a conditional branch clears FilterEn and hence PacketEn, there will be no TNT bit for this branch, replaced 

instead by the TIP.PGD.

Application

TIP.PGD can be produced by any branch instructions, as well as some non-branch instructions, that clear PacketEn. 

When produced by a branch, it replaces any TIP or TNT update that the branch would normally produce. 

In cases where there is an unbound FUP preceding the TIP.PGD, then the TIP.PGD is part of compound operation (i.e., 

asynchronous event or TSX abort) which cleared PacketEn. For most such cases, the TIP.PGD is simply replacing a 

TIP, and should be treated the same way. The TIP.PGD may or may not have an IP payload, depending on whether 

the operation cleared ContextEn.

If there is not an associated FUP, the binding will depend on whether there is an IP payload. If there is an IP payload, 

then the TIP.PGD should be applied to either the next direct branch whose target matches the TIP.PGD payload, or 

the next branch that would normally generate a TIP or TNT packet. If there is no IP payload, then the TIP.PGD should 

apply to the next branch or MOV CR3 instruction.

7

6

5

4

3

2

1

0

0

IPBytes

0

0

0

0

1

1

TargetIP[7:0]

2

TargetIP[15:8]

3

TargetIP[23:16]

4

TargetIP[31:24]

5

TargetIP[39:32]

6

TargetIP[47:40]

7

TargetIP[55:48]

8

TargetIP[63:56]