[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] target-i386: GPF on invalid MSRs
From: |
Alexander Graf |
Subject: |
Re: [Qemu-devel] [PATCH] target-i386: GPF on invalid MSRs |
Date: |
Fri, 27 May 2011 17:16:56 +0200 |
On 27.05.2011, at 17:13, Josh Triplett wrote:
> On Thu, May 26, 2011 at 11:12:12AM +0200, Alexander Graf wrote:
>> On 26.05.2011, at 11:08, Josh Triplett wrote:
>>> qemu currently returns 0 for rdmsr on invalid MSRs, and ignores wrmsr on
>>> invalid MSRs. Real x86 processors GPF on invalid MSRs, which allows
>>> software to detect unavailable MSRs. Emulate this behavior correctly in
>>> qemu.
>>>
>>> Bug discovered via the BIOS Implementation Test Suite
>>> <http://biosbits.org/>; fix tested the same way, for both 32-bit and
>>> 64-bit x86.
>>
>> This would break a _lot_ of guests that work just fine today, as qemu
>> doesn't handle all the necessary MSRs.
>
> It also fixes guests that rely on the GPF to indicate the absence of an
> MSR, and assume that the lack of GPF means the availability of that MSR.
> Silently returning 0 for unknown MSRs means silent breakage.
It's not about guests triggereing MSRs that they shouldn't. It's that qemu
doesn't implement all MSRs that all the respective CPUs implement.
>
> What (buggy) guests expect to use random model-specific registers
> without either handling GPFs or checking the CPU model first?
Mac OS X for example :). It even breaks on KVM today due to MSR checks.
>
> What MSRs do those guests expect that qemu doesn't currently implement?
>
> If this represents a workaround for buggy guests, then may I add an
> option to control this behavior?
I'm not against this change per-se, but it should definitely have an option to
disable/enable it and you need to do very extensive testing to make sure that
all MSRs for most OSs are actually handled.
Alex