The Intel PT packets which contain IP payloads will have LIP values, and it will include the CS base component if the CPUID.(EAX=14H,ECX=0H).ECX.[bit31] is set. But it will disabled the Intel PT in kvm guest because of the need of live migration safe(c078ca9 i386: Disable Intel PT if packets IP payloads have LIP values).
This patch will revert the previous limitation because the Intel new hardware will set this bit and LIP == RIP for most/all real code. Signed-off-by: Luwei Kang <luwei.k...@intel.com> --- target/i386/cpu.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 69f518a..8c0d1e4 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -688,8 +688,6 @@ static CPUCacheInfo legacy_l3_cache = { * bit[02]: Support Single-Range Output scheme; */ #define INTEL_PT_MINIMAL_ECX 0x7 -/* generated packets which contain IP payloads have LIP values */ -#define INTEL_PT_IP_LIP (1 << 31) #define INTEL_PT_ADDR_RANGES_NUM 0x2 /* Number of configurable address ranges */ #define INTEL_PT_ADDR_RANGES_NUM_MASK 0x3 #define INTEL_PT_MTC_BITMAP (0x0249 << 16) /* Support ART(0,3,6,9) */ @@ -6281,8 +6279,7 @@ static void x86_cpu_filter_features(X86CPU *cpu, bool verbose) ((eax_1 & INTEL_PT_ADDR_RANGES_NUM_MASK) < INTEL_PT_ADDR_RANGES_NUM) || ((ebx_1 & (INTEL_PT_PSB_BITMAP | INTEL_PT_CYCLE_BITMAP)) != - (INTEL_PT_PSB_BITMAP | INTEL_PT_CYCLE_BITMAP)) || - (ecx_0 & INTEL_PT_IP_LIP)) { + (INTEL_PT_PSB_BITMAP | INTEL_PT_CYCLE_BITMAP))) { /* * Processor Trace capabilities aren't configurable, so if the * host can't emulate the capabilities we report on -- 1.8.3.1