On (Mon) Mar 30 2009 [18:02:16], Avi Kivity wrote:
> Amit Shah wrote:
>>>
>>>>         /*
>>>>          * Check whether the Architectural PerfMon supports
>>>>          * Unhalted Core Cycles Event or not.
>>>>          * NOTE: Corresponding bit = 0 in ebx indicates event present.
>>>>          */
>>>>         cpuid(10, &(eax.full), &ebx, &unused, &unused);
>>>>         if ((eax.split.mask_length <   
>>>> (ARCH_PERFMON_UNHALTED_CORE_CYCLES_INDEX+1)) ||
>>>>             (ebx & ARCH_PERFMON_UNHALTED_CORE_CYCLES_PRESENT))
>>>>                 return 0;
>>>>
>>>>       
>>> So I think it can be done.
>>>     
>>
>> Only if the guest kernel (or module accessing those registers) look at
>> the cpuid output, right? I checked this for the Kaspersky AV on Windows,
>> the crash bug I was solving and that program doesn't seem to check
>> cpuid.
>>   
>
> The only way to solve all possible cases is to implement the performance  
> counters MSRs.  That's not going to happen in a hurry, we're looking at  
> making the known cases work.

Looks like it does get solved...

>> RHEL 5.3 is based on 2.6.18 and this patch appears to have entered in
>> 2.6.21. I saw this on 5.3 as well.
>>   
>
> The snippet I quoted came from RHEL 5.3.  It checks cpuid so we should  
> be able to make it fail gracefully.

Our default CPU is qemu64, which has cpuid till level 2. Trying with
-cpu core2duo, this doesn't happen (even without setting EBX to the 0x3f
value) on both, RHEL 5.3 and Win+Kaspersky guests.

qemu64 loosely models some AMD CPU type. I guess we can update it to
expose cpuid levels upto 10 (and leave xlevel to the current value).
That should take care of this.

Amit
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to